Không có thứ gì như NoQuery!
NoQuery là một từ thông dụng.
Trong nhiều thập kỷ, khi mọi người nói về cơ sở dữ liệu, họ có nghĩa là cơ sở dữ liệu quan hệ. Và khi mọi người đang nói về cơ sở dữ liệu quan hệ, họ có nghĩa là những người bạn kiểm soát với Ngôn ngữ truy vấn có cấu trúc của Edgar F. Codd. Lưu trữ dữ liệu theo một cách khác? Điên cuồng! Bất cứ điều gì khác chỉ là phẳng.
Nhưng trong vài năm qua, mọi người bắt đầu đặt câu hỏi về giáo điều này. Mọi người tự hỏi nếu các bảng có hàng và cột thực sự là cách duy nhất để biểu diễn dữ liệu. Mọi người bắt đầu suy nghĩ và mã hóa, và đưa ra nhiều khái niệm mới về cách dữ liệu có thể được tổ chức. Và họ bắt đầu tạo ra các hệ thống cơ sở dữ liệu mới được thiết kế cho những cách làm việc mới với dữ liệu này.
Các triết lý của tất cả các cơ sở dữ liệu này là khác nhau. Nhưng có một điểm chung của tất cả các cơ sở dữ liệu này là Ngôn ngữ truy vấn có cấu trúc không còn phù hợp để sử dụng chúng. Vì vậy, mỗi cơ sở dữ liệu đã thay thế SQL bằng các ngôn ngữ truy vấn của riêng họ. Và vì vậy, thuật ngữ NoQuery đã ra đời, như một nhãn hiệu cho tất cả các công nghệ cơ sở dữ liệu thách thức mô hình cơ sở dữ liệu quan hệ cổ điển.
Vậy cơ sở dữ liệu NoQuery có điểm gì chung?
Thật ra, không nhiều.
Bạn thường nghe những cụm từ như:
- NoQuery có khả năng mở rộng!
- NoQuery là dành cho BigData!
- NoQuery vi phạm ACID!
- NoQuery là một kho lưu trữ khóa / giá trị được tôn vinh!
Điều đó có đúng không? Chà, một số câu lệnh này có thể đúng với một số cơ sở dữ liệu thường được gọi là NoQuery, nhưng mỗi câu lệnh cũng sai với ít nhất một câu lệnh khác. Trên thực tế, điểm chung duy nhất của cơ sở dữ liệu NoQuery là chúng là các cơ sở dữ liệu không sử dụng SQL. Đó là nó. Điều duy nhất định nghĩa chúng là những gì làm cho chúng khác biệt với nhau.
Vì vậy, những gì đặt cơ sở dữ liệu NoQuery khác nhau?
Vì vậy, chúng tôi đã làm rõ rằng tất cả các cơ sở dữ liệu thường được gọi là NoQuery là quá khác nhau để đánh giá chúng cùng nhau. Mỗi người trong số họ cần được đánh giá một cách riêng biệt để quyết định xem họ có phù hợp để giải quyết một vấn đề cụ thể không. Nhưng chúng ta bắt đầu từ đâu? Rất may, cơ sở dữ liệu NoQuery có thể được nhóm thành các danh mục nhất định, phù hợp cho các trường hợp sử dụng khác nhau:
Định hướng tài liệu
Ví dụ: MongoDB, CouchDB
Điểm mạnh: Dữ liệu không đồng nhất, hướng đối tượng làm việc, phát triển nhanh
Ưu điểm của họ là không yêu cầu cấu trúc dữ liệu nhất quán. Chúng rất hữu ích khi các yêu cầu của bạn và do đó bố cục cơ sở dữ liệu của bạn thay đổi liên tục hoặc khi bạn đang xử lý các bộ dữ liệu thuộc về nhau nhưng trông vẫn rất khác nhau. Khi bạn có nhiều bảng có hai cột được gọi là "khóa" và "giá trị", thì những bảng này có thể đáng để xem xét.
Cơ sở dữ liệu đồ thị
Ví dụ: Neo4j, Gi hươu cao cổ.
Điểm mạnh: Khai thác dữ liệu
Trong khi hầu hết các cơ sở dữ liệu NoQuery từ bỏ khái niệm quản lý quan hệ dữ liệu, các cơ sở dữ liệu này chấp nhận nó thậm chí còn nhiều hơn cả các cơ sở dữ liệu được gọi là cơ sở dữ liệu quan hệ.
Trọng tâm của họ là xác định dữ liệu bằng mối quan hệ của nó với dữ liệu khác. Khi bạn có nhiều bảng có khóa chính là khóa chính của hai bảng khác (và có thể một số dữ liệu mô tả mối quan hệ giữa chúng), thì đây có thể là một số thứ dành cho bạn.
Cửa hàng khóa-giá trị
Ví dụ: Redis, Cassandra, MemcacheDB
Điểm mạnh: Tra cứu nhanh các giá trị bằng các phím đã biết
Chúng rất đơn giản, nhưng điều đó làm cho chúng nhanh và dễ sử dụng. Khi bạn không có nhu cầu về các thủ tục được lưu trữ, các ràng buộc, trình kích hoạt và tất cả các tính năng cơ sở dữ liệu nâng cao đó và bạn chỉ muốn lưu trữ và truy xuất dữ liệu nhanh chóng, thì chúng là dành cho bạn.
Thật không may, họ cho rằng bạn biết chính xác những gì bạn đang tìm kiếm. Bạn cần hồ sơ của User157641? Không có vấn đề, sẽ chỉ mất vài giây. Nhưng điều gì sẽ xảy ra khi bạn muốn tên của tất cả người dùng trong độ tuổi từ 16 đến 24, có "bánh quế" là thực phẩm yêu thích của họ và đăng nhập trong 24 giờ qua? May mắn lớn. Khi bạn không có khóa xác định và duy nhất cho một kết quả cụ thể, bạn không thể lấy nó ra khỏi cửa hàng KV của mình một cách dễ dàng.
SQL có lỗi thời không?
Một số người đề xuất NoQuery cho rằng cơ sở dữ liệu NoQuery yêu thích của họ là cách thức mới để thực hiện và SQL là một điều của quá khứ.
Họ có đúng không?
Không, tất nhiên họ không. Mặc dù có những vấn đề mà SQL không phù hợp, nhưng nó vẫn có những điểm mạnh. Rất nhiều mô hình dữ liệu được trình bày đơn giản nhất là một tập hợp các bảng tham chiếu lẫn nhau. Đặc biệt bởi vì hầu hết các lập trình viên cơ sở dữ liệu đã được đào tạo trong nhiều thập kỷ để nghĩ về dữ liệu theo cách quan hệ và cố gắng đưa suy nghĩ này lên một công nghệ mới không được tạo ra cho nó hiếm khi kết thúc tốt đẹp.
Cơ sở dữ liệu NoQuery không phải là sự thay thế cho SQL - chúng là một sự thay thế.
Hầu hết các hệ sinh thái phần mềm xung quanh các cơ sở dữ liệu NoQuery khác nhau vẫn chưa hoàn thiện. Mặc dù có những tiến bộ, bạn vẫn chưa có các công cụ bổ sung hoàn thiện và mạnh mẽ như các công cụ có sẵn cho cơ sở dữ liệu SQL phổ biến.
Ngoài ra, có nhiều bí quyết hơn cho SQL xung quanh. Các thế hệ các nhà khoa học máy tính đã dành hàng thập kỷ sự nghiệp của họ để nghiên cứu tập trung vào cơ sở dữ liệu quan hệ và nó cho thấy: Tài liệu viết về cơ sở dữ liệu SQL và mô hình hóa dữ liệu quan hệ, cả thực tế và lý thuyết, có thể lấp đầy nhiều thư viện đầy sách. Làm thế nào để xây dựng cơ sở dữ liệu quan hệ cho dữ liệu của bạn là một chủ đề được nghiên cứu kỹ lưỡng, thật khó để tìm ra một trường hợp góc trong đó không có cách thực hành tốt nhất được chấp nhận trong sách.
Mặt khác, hầu hết các cơ sở dữ liệu NoQuery vẫn còn trong giai đoạn trứng nước. Chúng tôi vẫn đang tìm ra cách tốt nhất để sử dụng chúng.