O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

MongoDB.pptx

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
MongoDB Introduction
MongoDB Introduction
Carregando em…3
×

Confira estes a seguir

1 de 31 Anúncio

Mais Conteúdo rRelacionado

Semelhante a MongoDB.pptx (20)

Mais recentes (20)

Anúncio

MongoDB.pptx

  1. 1. MongoDB NoSQL – Non Relational – Not Only SQL
  2. 2. Phase 01 NoSQL là gì, tại sao lại sử dụng NoSQL Phase 02 MongoDB là gì? Tính chất của nó Phase 03 Cấu trúc lưu trữ dữ liệu của MongoDB Phase 04 Những thao tác cơ bản với MongoDB Những nội dung chính...
  3. 3. Khi làm việc với database, chúng ta đã quá quen với SQLServer, MySQL, PostgreSQL, Oracle ... Điểm chung của những database này là sử dụng ngôn ngữ SQL để truy vấn dữ liệu. Nhưng có 1 dạng database khác với những đặc tính khác biệt được gọi chung dưới cái tên là NoSQL 1. NoSQL là gì ? Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm tên gọi chung cho các lightweight open source relational database (cơ sở dữ liệu quan hệ nguồn mở nhỏ) nhưng không sử dụng cho truy vấn. Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL trong một hội thảo về cơ sở dữ liệu nguồn mở phân tán. Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ database mới: distributed (phân tán) + non-relational (không ràng buộc). Đây là 2 đặc tính quan trọng nhất của NoSQL I. Giới thiệu về NoSQL
  4. 4. 2. Tại sao cần có NoSQL ? • Sở dĩ người ta phát triển NoSQL xuất phát từ yêu cầu cần những database có khả năng lưu trữ dữ liệu với lượng cực lớn, truy vấn dữ liệu với tốc độ cao mà không đòi hỏi quá nhiều về năng lực phần cứng cũng như tài nguyên hệ thống và tăng khả năng chịu lỗi. • Đây là những vấn đề mà các relational database không thể giải quyết được. • Lượng dữ liệu mà các hệ thống cần phải xử lý giờ đây ngày 1 lớn. Ví dụ như Google, Facebook phải lưu trữ và xử lý một lượng dữ liệu cực lớn mỗi ngày .
  5. 5. Key - value MongoDB, CouchDB Document database Redis, Riak Column Family HBase, Cassandra Graph Database Neo4j 3. Một số loại NoSQL thông dụng Dữ liệu được thêm vào lưu trữ dưới dạng cấu trúc JSON, trong đó dữ liệu có thể là bất kỳ kiểu nào, từ số nguyên đến chuỗi hay đến các văn bản tự do Các giá trị dạng tự do, từ số nguyên hoặc chuỗi đơn giản đến các tài liệu JSON phức tạp, được truy cập trong cơ sở dữ liệu bằng các khóa. Dữ liệu được lưu trữ trong các cột thay vì các hàng như hệ thống SQL. Bất kỳ số lượng cột nào (nhiều loại dữ liệu khác nhau) có thể được nhóm hoặc tổng hợp khi cần cho truy vấn Dữ liệu được biểu diễn dưới dạng mạng hoặc đồ thị của các thực thể và các mối quan hệ của thực thể đó, với mỗi node trong biểu đồ là một khối dữ liệu ở dạng tự do
  6. 6. MongoDB là một database hướng tài liệu (document), một dạng NoSQL database. Vì thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON bằng một schema rất linh hoạt gọi là BSON (Binary JSON). Một document bao gồm các cặp field và value. MongoDB documents tương tự với JSON object. Các giá trị của các trường có thể bao gồm document khác, một mảng, hoặc mảng của các document. II. MongoDB là gì ? BSON là mã hóa nhị phân của các tài liệu giống như JSON mà MongoDB sử dụng khi lưu trữ tài liệu trong các bộ sưu tập. Nó bổ sung hỗ trợ cho các loại dữ liệu không được hỗ trợ trong JSON như BinData và Date.
  7. 7. JSON vs XML
  8. 8. 1. Không ràng buộc – Non relational: Đối với hệ cơ sở dữ liệu NoSQL, không sử dụng ràng buộc như SQL, dữ liệu sẽ ở dạng JSON, BSON. Khác với RDBMS, dữ liệu trong đây không có sự ràng buộc và không có yêu cầu tuân theo khuôn khổ nhất định, nên có thể chèn vào thoải mái bất cứ thông tin gì . Các tính chất của MongoDB (NoSQL)
  9. 9. 2. Khả năng mở rộng: Khả năng mở rộng – High Scalability: Đối với NoSQL sẽ không có giới hạn mở rộng, sử dụng hệ csdl phân tán, khi cần mở rộng chỉ cần thêm các node chia tải và chia dữ liệu • Khả năng mở rộng chiều dọc – Vertical scalable, SQL thường dùng, tăng bộ nhớ máy chủ,... giúp hoạt động tốt hơn (Scale Up) • Khả năng mở rộng chiều ngang – Honrizontal scalable: NoSQL thường dùng, không cần nâng cấp server, chỉ cần thêm server(node) vào, đối với csdl phân tán sẽ mở rộng theo chiều ngang không phải theo chiều dọc (Scale Out)
  10. 10. Scale-Up và Scale-Out Sharding, Clusters (phân mảnh dữ liệu)
  11. 11. 3. Distributed Data ( Phân tán dữ liệu ): Đối với các tập đoàn đa quốc gia, các data center nằm rải rác trên các nước trên thế giới, giúp truy cập nhanh nhất và lưu trữ tại 1 data center tổng nắm toàn bộ data, mỗi công ty có một thiết kế dữ liệu phân tán khác nhau tùy thuộc vào sự sắp đặt của người điều hành.
  12. 12. 4. Tính sẵn sàng cao - High Availability: Khi thêm 1 server(node) hay tắt 1 server đều không ảnh hưởng tới những server còn lại, , MongoDB sử dụng mô hình replica set nhằm đảm bảo việc sao lưu và khôi phục dữ liệu
  13. 13. Replica set Gồm 1 primary node và nhiều node phụ, chỉ có primary node mới được write, khi heartbeat quá thời gian cho phép (thường là 10s) thì một secondary sẽ được bầu làm primary node sau một khoảng thời gian ngắn
  14. 14. 5. Lưu trữ tốt – Durability: Đối với các hệ csdl SQL sẽ lưu ở ổ đĩa cứng, không nằm ở RAM, đối với NoSQL sẽ nằm ở bộ nhớ máy tính và ổ đĩa cứng, khi truy xuất sẽ lấy dữ liệu ở bộ nhớ giúp tăng tốc độ xử lí
  15. 15. Khi một server có vấn đề sẽ không gây ảnh hưởng gì tới các server còn lại, server ảo tính toán Load Balance chia tải các request của client tới server, áp dụng mô hình về cây và node để giải bài toán chia tải. Bằng cách sử dụng Sharding, MongoDB chia tỷ lệ theo chiều ngang để người dùng chọn một Shard key,... MongoDB Sharding 6. Cân bằng tải
  16. 16. Nhất quán cuối – Eventual consistency: Sự nhất quán hay sự đồng bộ giữa các server(node) sẽ chậm hơn vì khi đưa 1 dữ liệu mới vào, nó sẽ lưu tạm thời trên Ram và trên server vừa truy cập, sau đó nó sẽ đồng bộ tới các server khác. Vì vậy nên NoSQL không phù hợp với các yêu cầu đồng bộ cao như ngân hàng, chứng khoán,... 7. Nhất quán cuối – Eventual consistency:
  17. 17. III. Ưu điểm và nhược điểm
  18. 18. Sử dụng MongoDB mang lại rất nhiều lợi ích đến người dùng: • Đầu tiên có thể nhắc đến là tính linh hoạt lưu trữ dữ liệu theo các kích cỡ khác nhau, dữ liệu dưới dạng hướng tài liệu JSON nên có thể chèn vào thoải mái bất cứ thông tin gì bạn muốn. • Khác với RDBMS, dữ liệu trong đây không có sự ràng buộc và không có yêu cầu tuân theo khuôn khổ nhất định, điều này tiết kiệm thời gian cho việc kiểm tra sự thỏa mãn về cấu trúc nếu muốn chèn, xóa, cập nhật hay thay đổi các dữ liệu trong bảng. • MongoDB dễ dàng mở rộng hệ thống bằng cách thêm node vào cluster – cụm các node chứa dữ liệu giao tiếp với nhau. • Ưu điểm thứ tư là tốc độ truy vấn nhanh hơn nhiều so với hệ quản trị cơ sở dữ liệu quan hệ RDBMS do dữ liệu truy vấn được cached lên bộ nhớ RAM để lượt truy vấn sau diễn ra nhanh hơn mà không cần đọc từ ổ cứng. 1. Ưu điểm
  19. 19. Ngoài các ưu điểm vượt trội, vẫn còn một số hạn chế khi cài đặt và sử dụng cần chú ý như sau: • MongoDB không có các tính chất ràng buộc như trong RDBMS –> dễ bị làm sai, nhầm lẫn dữ liệu • Không hỗ trợ join giống như RDBMS nên khi viết function join trong code ta phải làm bằng tay khiến cho tốc độ truy vấn bị giảm. • Sử dụng nhiều bộ nhớ: do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value do đó key sẽ bị lặp lại. Không hỗ trợ join nên sẽ bị dữ thừa dữ liệu (trong RDBMS thì ta chỉ cần lưu 1 bản ghi rồi các bản ghi khác tham chiếu tới còn trong MongoDB thì không) • Bị giới hạn kích thước bản ghi: mỗi document không được có kích thước > 16Mb 2. Nhược điểm
  20. 20. Khi nào nên dùng MongoDB MongoDB dùng cho các hệ thống: ● Hệ thống realtime (thời gian thực) yêu cầu phản hồi nhanh ● Các hệ thống bigdata với yêu cầu truy vấn nhanh. ● Các hệ thống có tần suất write/insert lớn ● Sử dụng làm search engine
  21. 21. IV.Các thành phần chính của MongoDB Document Collection Database Gồm nhiều collection Gồm nhiều document Gồm nhiều field, document, ...
  22. 22. Database: là một container của các collection giống như là một cơ sở dữ liệu chứa các bảng trong RDBMS. Mỗi database có một bộ các file trên hệ thống file. Server của MongoDB có thể lưu trữ được nhiều database. Database
  23. 23. Collection Là một tập các Documents. Một collection tương đương với một bảng được tạo bởi một hệ quản trị cơ sở dữ liệu quan hệ SQL Document Là một bản ghi trong 1 collection của MongoDB tương ứng được gọi là 1 document. Document bao gồm các Field hoặc có thể chứa các document khác Field Là một cặp key- value. 1 Document có thể không có trường nào hoặc có thể có nhiều trường. Các trường này tương tự như các cột trong RDBMS Các thành phần chính của MongoDB
  24. 24. Cấu trúc lưu dữ liệu của MongoDB
  25. 25. V. Các thao tác cơ bản MongoDB CRUD Operations
  26. 26. • Create hay Insert thêm một document mới vào một collection. Nếu collection hiện không tồn tại, insert sẽ tạo collection. • db.collection.insertOne(): chèn một tài liệu mới vào một collection. Nếu document không có trường _id , MongoDB sẽ tự động thêm trường _id với value kiểu ObjectId.Ví dụ: db.inventory.insertOne( { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }) 1. Create Operations
  27. 27. db.collection.insertMany(): insert nhiều document vào một collection, truyền vào phương thức là mảng các document.Ví dụ: db.inventory.insertMany([ { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } }, { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } }, { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } } ]) Ví dụ trên chèn 3 document mới vào collection inventory. Nếu document không chỉ định trường _id, MongoDB thêm trường _id với một giá trị kiểu ObjectId vào mỗi document. 1. Create Operations
  28. 28. 2. Read Operations Read operation truy xuất documents từ một collection. Để lấy ra tất cả các document trong collection, truyền vào một document trống vào phương thức find. Ví dụ: db.inventory.find( {} ) Query and Projection Operators — MongoDB Manual Câu lệnh dưới đây lấy ra các document có status bằng "D" từ collection inventory db.inventory.find({ status: "D"}) Truy vấn AND, OR: Một truy vấn kết hợp có thể chỉ định các điều kiện thỏa mãn cho nhiều trường của document. Ví dụ dưới đây lấy ra tất cả các documents trong collection inventory với trường status bằng "a" và trường qty ít hơn 30 ($lt) db.inventory.find( { status: "A", qty: { $lt: 30 } } ) $lt: bé hơn , $lte: bé hơn hoặc bằng $ge: lớn hơn, $gte: lớn hơn hoặc bằng $gte $gte
  29. 29. Update một document với db.collection.updateOne() Ví dụ sau sẽ update document đầu tiên mà có trường item bằng "paper": db.inventory.updateOne( { item: "paper" }, {$set: { "size.uom": "cm", status: "P" }, $currentDate: { lastModified: true }}) Update nhiều Document với db.collection.updateMany(), Để thay nội dung của một document (ngoại trừ trường _id), truyền vào toàn bộ document mới là một tham số thứ hai của hàm db.collection.replaceOne() Link: Update Operators 3. Update Operations
  30. 30. - Delete operation xóa bỏ document từ một collection. - Để xóa tất cả các tài liệu từ một collection, truyền một document filter {} tới phương thức db.collection.deleteMany() - Xóa tất cả các document thỏa mãn điều kiện. Ví dụ: db.inventory.deleteMany({ status : "A" }) - Xóa chỉ một document thỏa mãn điều kiện, sử dụng db.collection.deleteOne(). Ví dụ: db.inventory.deleteOne({ status: "D" }) - Có thể sử dụng query operators để chỉ định các điều kiện lọc 4. Delete Operation
  31. 31. CREDITS: This presentation template was created by Slidesgo, including icons by Flaticon, and infographics & images by Freepik Link tham khảo: Database Commands Thanks Anny question ?

×