Bạn không bao giờ có thể nói về cái gọi là cơ sở dữ liệu "NoQuery" mà không mang định lý CAP (Tính nhất quán, Tính khả dụng, Phân vùng: chọn hai). Nếu bạn phải chọn nói, giữa MongoDB (Phân vùng, Tính nhất quán) và CouchDB (Tính khả dụng, Phân vùng), điều đầu tiên bạn cần nghĩ đến là "Tôi có cần dữ liệu chính xác hay tôi cần truy cập mọi lúc?".
Những cơ sở dữ liệu mới đã được thực hiện để được phân vùng. Nhưng nếu tôi không ? Điều gì sẽ xảy ra nếu tôi nghĩ thật tuyệt vời khi có Khóa / Giá trị, Cột, Tài liệu, bất kỳ cơ sở dữ liệu nào thay vì cơ sở dữ liệu quan hệ và chỉ cần tạo một phiên bản máy chủ và không bao giờ hủy bỏ nó? Trong trường hợp đó, liệu tôi có sẵn sàng và nhất quán không? MongoDB sẽ không cần sao chép bất cứ thứ gì, vì vậy nó sẽ có sẵn. Và CouchDB sẽ chỉ có một nguồn dữ liệu, vì vậy nó sẽ khá nhất quán.
Vậy điều đó có nghĩa là, trong trường hợp đó, MongoDB và CouchDB sẽ có ít sự khác biệt về thời hạn sử dụng? Chà, ngoại trừ hiệu suất khóa học, API và al, nhưng điều đó sẽ giống như lựa chọn giữa PostgreQuery và MySQL hơn là có hai yêu cầu cơ bản khác nhau.
Tôi có ở đây không? Tôi có thể thay đổi cơ sở dữ liệu AP hoặc CP thành AC không bằng cách tạo nhiều hơn một thể hiện không? Hoặc có một cái gì đó mà tôi đang thiếu?
Hãy đặt câu hỏi ngược lại. Điều gì sẽ xảy ra nếu tôi lấy một cơ sở dữ liệu quan hệ, giả sử MySQL và đặt nó trong cấu hình chính / nô lệ. Tôi không sử dụng các giao dịch ACID Nếu tôi yêu cầu bất kỳ ghi nào được đồng bộ hóa với nô lệ ngay lập tức, liệu đó có phải là cơ sở dữ liệu CP không? Và điều gì xảy ra nếu tôi đồng bộ hóa nó với một số khoảng thời gian được xác định trước và không thành vấn đề nếu khách hàng đọc dữ liệu cũ từ một nô lệ. Nó sẽ không làm cho nó một cơ sở dữ liệu AP? Điều đó có nghĩa là nếu tôi từ bỏ tuân thủ ACID, tôi vẫn có thể sử dụng mô hình quan hệ cho cơ sở dữ liệu chia tay?
Về bản chất: khả năng mở rộng về những gì bạn đã sẵn sàng từ bỏ trong định lý CAP, nhiều hơn mô hình dữ liệu cơ bản? Có Cột, Tài liệu, Giá trị khóa, bất cứ điều gì giúp tăng khả năng mở rộng so với mô hình quan hệ không? Chúng ta có thể thiết kế một cơ sở dữ liệu quan hệ được thiết kế từ đầu để dung sai phân vùng không? (Có lẽ nó đã tồn tại). Chúng tôi có thể làm cho cơ sở dữ liệu NoQuery tuân thủ ACID không?
Xin lỗi, rất nhiều câu hỏi, nhưng tôi đã đọc rất nhiều về cơ sở dữ liệu NoQuery gần đây và dường như lợi ích lớn nhất của việc sử dụng chúng là chúng phù hợp hơn với "hình dạng" dữ liệu của bạn, thay vì chỉ phân vùng, CAP và từ bỏ tuân thủ ACID. Rốt cuộc, không phải ai cũng có nhiều dữ liệu đến mức họ cần phân vùng nó. Có lợi ích về hiệu suất / khả năng mở rộng khi không sử dụng mô hình quan hệ trước khi tôi nghĩ đến việc phân vùng dữ liệu của mình không?