NoQuery mang tính tiến hóa hơn là cách mạng. Về cơ bản, nó kết hợp các ý tưởng hiện có về "lưu trữ cơ sở dữ liệu bên ngoài" với "sử dụng các cấu trúc dữ liệu quen thuộc, không phải các bảng quan hệ".
Có nhiều loại cơ sở dữ liệu hơn quan hệ, ví dụ cơ sở dữ liệu phân cấp . Mặc dù cổ xưa theo các tiêu chuẩn ngày nay, nó đã kết nối thực sự tốt với các cấu trúc dữ liệu của dữ liệu của nó (ví dụ: các bản ghi COBOL ). Vấn đề là, dữ liệu trong cơ sở dữ liệu được mô hình hóa chặt chẽ với cách các bản ghi được trình bày trong các ngôn ngữ lập trình sử dụng chúng.
Chuyển nhanh sang phát minh cơ sở dữ liệu quan hệ , trong đó cuối cùng cơ sở dữ liệu tách biệt mối quan tâm và, khi được chuẩn hóa đúng cách, là một cách tuyệt vời để hình dung hầu hết các loại dữ liệu và mối quan hệ giữa dữ liệu. Nó thực sự dễ hiểu so với các loại cơ sở dữ liệu khác. Tuy nhiên, điều mà nó hoàn toàn thất bại là lưu trữ dữ liệu theo cách phản chiếu các đối tượng và các lớp trong một chương trình. Do đó, việc phát minh ra ánh xạ quan hệ đối tượng . Nói cách khác, thiết kế cơ sở dữ liệu thực sự là một trở ngại cho thiết kế chương trình sử dụng nó, đó là lý do tại sao chúng ta cần các thư viện ORM như Hibernate. Trong khi sạch sẽ và nhất quán, luôn có sự nghi ngờ dai dẳng trong đầu tôi rằng có gì đó không hoàn toàn đúng ở đó.
Điều này đã tạo ra thêm hai loại cơ sở dữ liệu, cơ sở dữ liệu đối tượng và NoQuery .
Cả hai đều cố gắng giải quyết các vấn đề được giới thiệu bởi các cơ sở dữ liệu quan hệ trong khi không cho chúng ta thấy sự kinh hoàng của các cơ sở dữ liệu phân cấp. Dữ liệu vẫn được đặt trong các kho lưu trữ gần giống với các bảng, nhưng thực tế lại giống như các cấu trúc dữ liệu lập trình hơn là các bảng quan hệ. Mặc dù cơ sở dữ liệu đối tượng tuân theo các quy tắc được xác định rõ ràng, nhưng sự hiểu biết của tôi là NoQuery khá độc đoán. Ví dụ, một bảng có thể được hiển thị dưới dạng bảng băm hoặc mảng. Không có một cách dễ dàng, được xác định rõ ràng để truy vấn chúng bằng cách sử dụng một công cụ tùy ý tương tự như Oracle SQL Developer hoặc SQL Server Management Studio .
Ý tưởng là người ta có thể định nghĩa các cấu trúc dữ liệu dễ dàng tìm kiếm trong mã, thay vì ghép các truy vấn SQL phù hợp hơn với công cụ cơ sở dữ liệu SQL thay vì thể hiện truy vấn mà người ta mong muốn. Ví dụ, các kết quả mờ hoặc một phần khó khăn hơn và hoạt động kém hơn trong cơ sở dữ liệu quan hệ, trong khi cơ sở dữ liệu NoQuery có thể có cấu trúc được tối ưu hóa cho tìm kiếm như vậy và hoàn thành trong một phần nhỏ thời gian.
Có các ngôn ngữ để truy vấn NoQuery. Tuy nhiên, không có ngôn ngữ phổ quát như SQL dành cho cơ sở dữ liệu quan hệ.
Chỉnh sửa muộn:
Mặc dù tôi đã đủ quen thuộc với cơ sở dữ liệu NoQuery, nhưng câu hỏi này là động lực để tôi mua một cuốn sách chất lượng về chủ đề này và bắt đầu đọc nó với mục tiêu cuối cùng là trở thành một chuyên gia thực sự về chủ đề này. Các ý kiến còn lại được dựa trên NoQuery chưng cất: Hướng dẫn ngắn gọn về Thế giới mới nổi của sự tồn tại của Polyglot của Pramod Sadalage và Martin Fowler .
Các tác giả tuyên bố rằng các cơ sở dữ liệu quan hệ không mở rộng tốt cho các cụm có khả năng phục vụ dữ liệu cần thiết cho các trang web như Amazon và Google: NoQuery được phát triển để phù hợp với phân khúc này, giúp thư giãn tính đồng thời và độ bền trong ACID để cung cấp số lượng truy vấn lớn. phần lớn sử dụng dữ liệu tĩnh (do đó, các giao dịch ACID không quan trọng).
Hơn nữa, họ cho rằng cơ sở dữ liệu NoQuery hoạt động mà không có lược đồ (trang 10) cho phép cơ sở dữ liệu NoQuery sửa đổi cấu trúc dữ liệu dễ dàng hơn. Tôi không chắc chắn rằng sự hiện diện hay vắng mặt của một lược đồ chính thức có liên quan đến vấn đề này, vì cơ sở dữ liệu SQL cũng cho phép sửa đổi các lược đồ. Bất kể, hai tác giả nổi tiếng đưa ra tuyên bố vì vậy nó là giá trị kiểm tra.
Tôi tin rằng cả hai điểm chính này chỉ phục vụ để thực thi quan điểm chính của tôi rằng NoQuery là tiến hóa, không mang tính cách mạng. Họ vẫn lưu trữ dữ liệu và thực hiện các cải tiến gia tăng về quy mô và khả năng sửa đổi. Họ cũng đưa ra quan điểm rằng NoQuery không tìm cách chiếm đoạt cơ sở dữ liệu quan hệ như là vua lưu trữ dữ liệu, chỉ cung cấp một phương tiện lưu trữ dữ liệu thay thế cho các loại dữ liệu cần mở rộng và biến đổi theo cách mà họ tin rằng cơ sở dữ liệu không hỗ trợ đủ tốt.