Tôi rất tin tưởng rằng các hệ thống cơ sở dữ liệu chia sẻ các nguyên tắc cơ bản cốt lõi tương tự ở lớp lưu trữ của chúng và việc hiểu chúng cho phép một người so sánh các DBMS khác nhau một cách khách quan. Ví dụ: Cách lưu trữ tài liệu trong MongoDB không khác gì cách lưu trữ hàng của MySQL hoặc PostgreSQL
Mọi thứ đều được chuyển vào đĩa, mẹo là tìm nạp những gì bạn cần từ đĩa một cách hiệu quả với càng ít I/O càng tốt, phần còn lại là API
Một bản ghi trong MongoDB là một tài liệu, là một cấu trúc dữ liệu bao gồm các cặp trường và giá trị. Các tài liệu MongoDB tương tự như các đối tượng JSON. Giá trị của các trường có thể bao gồm các tài liệu, mảng và mảng tài liệu khác
Ưu điểm của việc sử dụng tài liệu là
Tài liệu tương ứng với các kiểu dữ liệu gốc trong nhiều ngôn ngữ lập trình
Các tài liệu và mảng được nhúng giúp giảm nhu cầu kết nối đắt tiền
Lược đồ động hỗ trợ tính đa hình trôi chảy
Bộ sưu tập/Lượt xem/Lượt xem cụ thể hóa theo yêu cầu
MongoDB lưu trữ tài liệu trong. Bộ sưu tập tương tự như bảng trong cơ sở dữ liệu quan hệ
Ngoài các bộ sưu tập, MongoDB hỗ trợ
Chế độ xem chỉ đọc [Bắt đầu từ MongoDB 3. 4]
Chế độ xem cụ thể hóa theo yêu cầu [Bắt đầu từ MongoDB 4. 2]
Các tính năng chính
Hiệu suất cao
MongoDB cung cấp tính bền vững dữ liệu hiệu suất cao. Đặc biệt,
Hỗ trợ cho các mô hình dữ liệu nhúng làm giảm hoạt động I/O trên hệ thống cơ sở dữ liệu
Các chỉ mục hỗ trợ các truy vấn nhanh hơn và có thể bao gồm các khóa từ các tài liệu và mảng được nhúng
API truy vấn
MongoDB Query API hỗ trợ các thao tác đọc và ghi [CRUD] cũng như
Tổng hợp dữ liệu
Tìm kiếm văn bản và truy vấn không gian địa lý
Mẹo
Xem thêm
Biểu đồ ánh xạ SQL sang MongoDB
Biểu đồ ánh xạ SQL sang tập hợp
Tìm hiểu về các tính năng ngôn ngữ truy vấn mới nhất với
Ngôn ngữ truy vấn MongoDB. Có gì mới bản trình bày từ MongoDB. sống 2020.
Tính khả dụng cao
Cơ sở sao chép của MongoDB, được gọi là bộ bản sao, cung cấp
chuyển đổi dự phòng tự động
dữ liệu dự phòng
Bộ bản sao là một nhóm các máy chủ MongoDB duy trì cùng một bộ dữ liệu, cung cấp khả năng dự phòng và tăng tính khả dụng của dữ liệu
Khả năng mở rộng theo chiều ngang
MongoDB cung cấp khả năng mở rộng theo chiều ngang như một phần chức năng cốt lõi của nó
phân phối dữ liệu trên một cụm máy
bắt đầu trong 3. 4, MongoDB hỗ trợ tạo dữ liệu dựa trên. Trong một cụm cân bằng, MongoDB chỉ đạo việc đọc và ghi được bao phủ bởi một vùng chỉ tới các phân đoạn bên trong vùng đó. Xem trang hướng dẫn để biết thêm thông tin
Hỗ trợ nhiều công cụ lưu trữ
MongoDB hỗ trợ nhiều công cụ lưu trữ
WiredTiger Storage Engine [bao gồm hỗ trợ Encryption at Rest]
Công cụ lưu trữ trong bộ nhớ
Ngoài ra, MongoDB cung cấp API công cụ lưu trữ có thể cắm được cho phép các bên thứ ba phát triển công cụ lưu trữ cho MongoDB
MongoDB được thiết kế để đáp ứng nhu cầu của các ứng dụng hiện đại với nền tảng công nghệ cho phép bạn vượt qua
Mô hình dữ liệu tài liệu – trình bày cho bạn cách tốt nhất để làm việc với dữ liệu
Thiết kế hệ thống phân tán – cho phép bạn đặt dữ liệu ở nơi bạn muốn một cách thông minh
Một trải nghiệm hợp nhất cho phép bạn tự do chạy ở bất cứ đâu – cho phép bạn kiểm chứng công việc của mình trong tương lai và loại bỏ sự ràng buộc của nhà cung cấp
Với những khả năng này, bạn có thể xây dựng Nền tảng dữ liệu hoạt động thông minh, được hỗ trợ bởi MongoDB. Tải xuống Hướng dẫn kiến trúc nơi chúng tôi tìm hiểu sâu hơn về nền tảng công nghệ của MongoDB
Thách thức chính trong mô hình hóa dữ liệu là cân bằng nhu cầu của ứng dụng, đặc điểm hiệu suất của công cụ cơ sở dữ liệu và các mẫu truy xuất dữ liệu. Khi thiết kế các mô hình dữ liệu, hãy luôn xem xét ứng dụng sử dụng dữ liệu [i. e. truy vấn, cập nhật và xử lý dữ liệu] cũng như cấu trúc vốn có của chính dữ liệu đó
Lược đồ linh hoạt
Không giống như cơ sở dữ liệu SQL, nơi bạn phải xác định và khai báo lược đồ của bảng trước khi chèn dữ liệu, theo mặc định, MongoDB không yêu cầu tài liệu của chúng phải có cùng lược đồ. Đó là
Các tài liệu trong một bộ sưu tập không cần phải có cùng một tập hợp các trường và kiểu dữ liệu cho một trường có thể khác nhau giữa các tài liệu trong một bộ sưu tập
Để thay đổi cấu trúc của tài liệu trong một bộ sưu tập, chẳng hạn như thêm trường mới, xóa trường hiện có hoặc thay đổi giá trị trường thành loại mới, hãy cập nhật tài liệu theo cấu trúc mới
Tính linh hoạt này tạo điều kiện thuận lợi cho việc ánh xạ tài liệu tới một thực thể hoặc một đối tượng. Mỗi tài liệu có thể khớp với các trường dữ liệu của thực thể được đại diện, ngay cả khi tài liệu đó có sự thay đổi đáng kể so với các tài liệu khác trong bộ sưu tập
Tuy nhiên, trên thực tế, các tài liệu trong một bộ sưu tập có chung cấu trúc và bạn có thể thực thi các quy tắc xác thực tài liệu cho một bộ sưu tập trong các thao tác cập nhật và chèn. Xem Xác thực lược đồ để biết chi tiết
Cấu trúc tài liệu
Quyết định quan trọng trong việc thiết kế mô hình dữ liệu cho các ứng dụng MongoDB xoay quanh cấu trúc của tài liệu và cách ứng dụng thể hiện mối quan hệ giữa dữ liệu. MongoDB cho phép dữ liệu liên quan được nhúng trong một tài liệu
Dữ liệu nhúng
Tài liệu nhúng nắm bắt mối quan hệ giữa dữ liệu bằng cách lưu trữ dữ liệu liên quan trong một cấu trúc tài liệu duy nhất. Các tài liệu MongoDB cho phép nhúng cấu trúc tài liệu vào một trường hoặc mảng trong tài liệu. Các mô hình dữ liệu không chuẩn hóa này cho phép các ứng dụng truy xuất và thao tác dữ liệu liên quan trong một thao tác cơ sở dữ liệu
Đối với nhiều trường hợp sử dụng trong MongoDB, mô hình dữ liệu không chuẩn hóa là tối ưu
Xem điểm mạnh và điểm yếu của tài liệu nhúng
Người giới thiệu
Tài liệu tham khảo lưu trữ các mối quan hệ giữa dữ liệu bằng cách bao gồm các liên kết hoặc tài liệu tham khảo từ tài liệu này sang tài liệu khác. Các ứng dụng có thể giải quyết các tham chiếu này để truy cập dữ liệu liên quan. Nhìn chung, đây là những mô hình dữ liệu được chuẩn hóa
Xem điểm mạnh và điểm yếu của việc sử dụng tài liệu tham khảo
Tính nguyên tử của hoạt động ghi
Tính nguyên tử của một tài liệu
Trong MongoDB, thao tác ghi là nguyên tử ở cấp độ của một tài liệu, ngay cả khi thao tác sửa đổi nhiều tài liệu được nhúng trong một tài liệu
Mô hình dữ liệu không chuẩn hóa với dữ liệu nhúng kết hợp tất cả dữ liệu liên quan trong một tài liệu thay vì chuẩn hóa trên nhiều tài liệu và bộ sưu tập. Mô hình dữ liệu này tạo điều kiện cho các hoạt động nguyên tử
Để biết chi tiết về các giao dịch trong MongoDB, hãy xem trang Giao dịch
Giao dịch nhiều tài liệu
Khi một thao tác ghi đơn lẻ [e. g. ] sửa đổi nhiều tài liệu, việc sửa đổi từng tài liệu là nguyên tử, nhưng toàn bộ hoạt động không phải là nguyên tử
Khi thực hiện các thao tác ghi nhiều tài liệu, cho dù thông qua một thao tác ghi đơn hay nhiều thao tác ghi, các thao tác khác có thể xen kẽ
Đối với các tình huống yêu cầu tính nguyên tử của việc đọc và ghi vào nhiều tài liệu [trong một hoặc nhiều bộ sưu tập], MongoDB hỗ trợ các giao dịch đa tài liệu
Trong phiên bản 4. 0, MongoDB hỗ trợ các giao dịch đa tài liệu trên các bộ bản sao
Trong phiên bản 4. 2, MongoDB giới thiệu các giao dịch phân tán, bổ sung hỗ trợ cho các giao dịch nhiều tài liệu trên các cụm được phân đoạn và kết hợp hỗ trợ hiện có cho các giao dịch nhiều tài liệu trên các bộ bản sao
Để biết chi tiết về các giao dịch trong MongoDB, hãy xem trang Giao dịch
Quan trọng
Trong hầu hết các trường hợp, giao dịch nhiều tài liệu phát sinh chi phí hiệu suất cao hơn so với ghi một tài liệu và tính khả dụng của các giao dịch nhiều tài liệu không phải là sự thay thế cho thiết kế lược đồ hiệu quả. Đối với nhiều trường hợp, sẽ tiếp tục tối ưu cho dữ liệu và trường hợp sử dụng của bạn. Nghĩa là, trong nhiều tình huống, việc lập mô hình dữ liệu của bạn một cách thích hợp sẽ giảm thiểu nhu cầu giao dịch nhiều tài liệu
Để biết các cân nhắc sử dụng giao dịch bổ sung [chẳng hạn như giới hạn thời gian chạy và giới hạn kích thước oplog], hãy xem thêm Cân nhắc sản xuất
Mẹo
Xem thêm
Hiệu suất và Sử dụng Dữ liệu
Khi thiết kế một mô hình dữ liệu, hãy xem xét các ứng dụng sẽ sử dụng cơ sở dữ liệu của bạn như thế nào. Chẳng hạn, nếu ứng dụng của bạn chỉ sử dụng các tài liệu được chèn gần đây, hãy cân nhắc sử dụng Capped Collections. Hoặc nếu nhu cầu ứng dụng của bạn chủ yếu là các thao tác đọc đối với một bộ sưu tập, thì việc bổ sung để hỗ trợ các truy vấn phổ biến có thể cải thiện hiệu suất
Xem Các yếu tố hoạt động và Mô hình dữ liệu để biết thêm thông tin về những điều này và các cân nhắc hoạt động khác ảnh hưởng đến thiết kế mô hình dữ liệu
Tìm hiểu thêm
MongoDB. các bài thuyết trình trực tiếp 2020
Để tìm hiểu cách kết hợp mô hình dữ liệu linh hoạt vào lược đồ của bạn, hãy xem các bản trình bày sau từ MongoDB. sống 2020