MongoDB là một cơ sở dữ liệu NoSQL rất phổ biến vì tính đơn giản và dễ sử dụng của nó. Hiệu năng cũng tương đối ổn. Các khái niệm và thành phần trong MongoDBBSON Types Kiểu dữ liệu JSON nhưng không ở dạng text mà ở dạng binary nhằm tối ưu kích thước cho việc lưu trữ và tốc độ Documents Một bản ghi dữ liệu. Có thể coi một document tương đương một hàng bản ghi trong SQL Collections Một tập hợp các documents. Có thể coi một collection tương đương một bảng trong SQL Capped Collections Một loại collection với kích thước cố định. Khi kích thước đạt ngưỡng, dữ liệu cũ nhất sẽ được tự động xóa khi dữ liệu mới được insert vào Database Một tập hợp các collections. Tương đương với một database trong SQL CRUD Operations Các hành động tương tác với MongoDB bao gồm : Thêm mới, Đọc, Cập nhật, Xóa. Khi dùng nên chú ý tối ưu dùng các hàm kiểu bulk mà MongoDB hỗ trợ Storage Engines Cách MongoDB tổ chức lưu dữ liệu trên disk. Mặc định dùng WiredTiger Indexes Là một phần quan trọng trong MongoDB. Khi đánh index cho các collections, ta phải chú ý đến thứ tự các trường. Thứ tự này phụ thuộc vào câu truy vấn dữ liệu. Một số gợi ý cho việc đánh index
Trên đây chỉ là các gợi ý. Trên thực tế tùy thuộc vào loại dữ liệu lưu xuống, độ lớn , độ phân tán của dữ liệu, .... mà áp dụng các biện pháp khác nhau. Không có cách nào ngoài việc chỉnh sửa và kiểm tra Aggregation Thao tác tổng hợp dữ liệu bằng cách phối hợp các toán từ mà MongoDB cung cấp nhằm lấy ra được dữ liệu mong muốn Map Reduce Thao tác lấy dữ liệu ra theo một hoặc trường nào đó (Map) và xử lý dữ liệu trên các trường đó (Reduce). Views / Materialized Views Định nghĩa kiểu các bảng ảo thông qua việc định nghĩa các aggration pipeline. Khi nào cần thì client có thể truy vấn trực tiếp các views này Transactions Thực hiện việc reads và writes nhiều documents trong cùng một collection hoặc nhiều collections khác nhau Master Primary Replica Nhân bản dữ liệu của mình ở nhiều nơi trên các server khác nhau để đảm bảo an toàn. Replica sinh ra để giải quyết vấn đề read, độ ổn định sẵn sàng của hệ thống Một số lưu ý
Sharding Là việc chia nhỏ dữ liệu, ở đây cụ thể là các collections ra nhiều vùng khác nhau và được lưu trên các server khác nhau. Việc chia như thế nào dựa trên các shard keys mà người dùng cài đặt. Bản chất sharding sinh ra là để giải quyết vấn đề write hệ thống, đảm bảo tính sẵn sàng ổn định của hệ thống Một số kiểu sharding dữ liệu Hashed Sharding : Chia dữ liệu ngẫu nhiên theo giá trị hash của shard key Ranged Sharding : Chia dữ liệu theo khoảng của trường dữ liệu nào đó đã chọn làm shard key Một mô hình khi cài đặt shard cho Mongo sẽ gồm các thành phần chính sau Shard : Nơi lưu trữ các tập con dữ liệu Config Server : Nơi lưu trữ các thông tin cấu hình liên quan đến toàn mạng cluster Mongos : Nơi giao tiếp với client Shard kết hợp với Replica Việc quan trọng nhất khi shard dữ liệu trên Mongo là chọn ra shard key làm sao cho phù hợp và hiệu quả nhất. Việc này ảnh hưởng trực tiếp tới việc phân phối dữ liệu trên các shards. Một số lưu ý
Cài đặthttps://www.mongodb.com/download-center/community Các công cụ hỗ trợ MongoDB Shell Mongo GUI Tools Các công cụ kiểm tra mongotop mongostat Thư viện C#https://www.nuget.org/packages/MongoDB.Driver https://github.com/mongodb/mongo-csharp-driver Giao tiếp với dữ liệu dạng file https://www.nuget.org/packages/MongoDB.Driver.GridFS Tham khảo thêm https://medium.com/@arun2pratap/set-up-mongodb-sharded-cluster-for-windows-with-just-a-double-click-6eedbb7b79e https://medium.com/@luansantos_4481/how-to-return-birthdays-of-the-current-day-week-and-month-with-mongodb-aggregation-f4104fe82e3c |