Tôi đã tìm hiểu về Cơ sở dữ liệu NoQuery một tuần nay.
Tôi thực sự hiểu những lợi thế của Cơ sở dữ liệu NoQuery và nhiều trường hợp sử dụng mà chúng rất phù hợp.
Nhưng mọi người thường viết các bài báo của họ như thể NoQuery có thể thay thế Cơ sở dữ liệu quan hệ. Và có một điểm tôi không thể hiểu được:
Cơ sở dữ liệu NoQuery là (thường) lưu trữ khóa-giá trị.
Tất nhiên có thể lưu trữ mọi thứ vào kho lưu trữ khóa-giá trị (bằng cách mã hóa dữ liệu bằng JSON, XML, bất cứ điều gì), nhưng vấn đề tôi thấy là bạn cần lấy một lượng dữ liệu phù hợp với một tiêu chí cụ thể, trong nhiều trường hợp sử dụng. Trong cơ sở dữ liệu NoQuery, bạn chỉ có một tiêu chí bạn có thể tìm kiếm một cách hiệu quả - khóa. Cơ sở dữ liệu quan hệ được tối ưu hóa để tìm kiếm bất kỳ giá trị nào trong hàng dữ liệu một cách hiệu quả.
Vì vậy, Cơ sở dữ liệu NoQuery không thực sự là một lựa chọn cho việc lưu giữ dữ liệu cần tìm kiếm theo nội dung của chúng. Hay tôi đã hiểu lầm điều gì?
Một ví dụ:
Bạn cần lưu trữ dữ liệu người dùng cho một webshop.
Trong cơ sở dữ liệu quan hệ, bạn lưu trữ mọi người dùng dưới dạng một hàng trong users
bảng, với ID, tên, quốc gia của anh ấy, v.v.
Trong Cơ sở dữ liệu NoQuery, bạn sẽ lưu trữ mỗi người dùng với ID của mình làm khóa và tất cả dữ liệu của anh ấy (được mã hóa bằng JSON, v.v.) làm giá trị.
Vì vậy, nếu bạn cần đưa tất cả người dùng từ một quốc gia cụ thể (vì một số lý do mà các nhân viên tiếp thị cần biết điều gì đó về họ), thì việc đó dễ dàng thực hiện trong Cơ sở dữ liệu quan hệ, nhưng không hiệu quả lắm trong Cơ sở dữ liệu NoQuery, bởi vì bạn phải nhận mọi người dùng, phân tích tất cả dữ liệu và bộ lọc.
Tôi không nói điều đó là không thể , nhưng nó phức tạp hơn nhiều và tôi đoán là không hiệu quả nếu bạn muốn tìm kiếm trong dữ liệu của các mục nhập của NoQuery.
Bạn có thể tạo khóa cho mỗi quốc gia lưu trữ khóa của mọi người dùng sống ở quốc gia này và nhận người dùng của một quốc gia cụ thể bằng cách lấy tất cả các khóa được gửi vào khóa cho quốc gia này. Nhưng tôi nghĩ rằng techique này làm cho một bộ dữ liệu phức tạp thậm chí còn phức tạp hơn - khó thực hiện hơn và không hiệu quả như truy vấn Cơ sở dữ liệu SQL. Vì vậy, tôi nghĩ rằng đó không phải là cách bạn sẽ sử dụng trong sản xuất. Hoặc là nó?
Tôi không thực sự chắc chắn nếu tôi hiểu nhầm điều gì đó hoặc bỏ qua một số khái niệm hoặc thực tiễn tốt nhất để xử lý các trường hợp sử dụng đó. Có lẽ bạn có thể sửa các phát biểu của tôi và trả lời câu hỏi của tôi.