Trong vài năm qua, các công cụ cơ sở dữ liệu NoSQL hoặc Không quan hệ đã trở nên phổ biến về khả năng lưu trữ lượng dữ liệu khổng lồ và mở rộng quy mô chúng một cách dễ dàng. Có những cuộc tranh luận về việc liệu cơ sở dữ liệu không quan hệ sẽ thay thế cơ sở dữ liệu quan hệ trong tương lai hay không. Với số lượng ngày càng tăng của dữ liệu xã hội và dữ liệu phi cấu trúc khác, sau đây là một số câu hỏi đặt ra về cơ sở dữ liệu quan hệ.
Cơ sở dữ liệu quan hệ có khả năng xử lý dữ liệu lớn không?
Cơ sở dữ liệu quan hệ có thể mở rộng quy mô ra một lượng lớn không? lượng dữ liệu?
Cơ sở dữ liệu quan hệ có phù hợp với dữ liệu thời đại hiện đại không?
Trước khi trả lời những câu hỏi này, hãy cho chúng tôi biết một số khái niệm cơ bản về cả cơ sở dữ liệu Quan hệ và Không quan hệ.
Khái niệm cơ bản về cơ sở dữ liệu Quan hệ và Không Quan hệ
Cơ sở dữ liệu quan hệ: Khái niệm Cơ sở dữ liệu quan hệ được phát triển vào những năm 1970. Tính năng quan trọng nhất của tất cả các cơ sở dữ liệu quan hệ là hỗ trợ các thuộc tính ACID (Tính tự động, Tính nhất quán, Tính cách ly và Độ bền) đảm bảo rằng tất cả các giao dịch được xử lý một cách đáng tin cậy.
Tính tự động: Mỗi giao dịch là duy nhất và đảm bảo rằng nếu một phần logic của giao dịch không thành công, mọi thứ sẽ được khôi phục để dữ liệu không thay đổi.
Nhất quán: Tất cả dữ liệu được ghi vào cơ sở dữ liệu phải tuân theo các quy tắc được xác định (ràng buộc, trình kích hoạt, v.v.)
Cách ly: Các thay đổi được thực hiện trong một giao dịch sẽ không hiển thị đối với các giao dịch khác cho đến khi chúng được cam kết.
Độ bền: Các thay đổi được cam kết trong giao dịch được lưu trữ và có sẵn trong cơ sở dữ liệu ngay cả khi mất điện hoặc cơ sở dữ liệu đột ngột ngoại tuyến.
Có cấu trúc chặt chẽ: Các đối tượng trong cơ sở dữ liệu quan hệ được cấu trúc chặt chẽ. Tất cả dữ liệu trong bảng được lưu trữ trong các hàng và cột. Mỗi cột có một kiểu dữ liệu. Nó hầu hết được bình thường hóa. Ngôn ngữ truy vấn có cấu trúc (SQL) phù hợp với cơ sở dữ liệu quan hệ để lưu trữ và truy xuất dữ liệu theo cách có cấu trúc. Truy vấn là các lệnh thuần túy bằng tiếng Anh. Luôn luôn có một số lượng cột cố định mặc dù có thể thêm các cột bổ sung sau đó. Hầu hết các bảng có liên quan với nhau bằng các khóa chính và khóa ngoài, do đó cung cấp “Tính toàn vẹn tham chiếu” giữa các đối tượng. Các nhà cung cấp chính là ORACLE, SQL Server, MySQL, PostgreSQL, v.v.
Cơ sở dữ liệu không quan hệ: Khái niệm cơ sở dữ liệu phi quan hệ đã xuất hiện để xử lý sự phát triển nhanh chóng của dữ liệu phi cấu trúc và mở rộng chúng một cách dễ dàng. Điều này cung cấp lược đồ linh hoạt nên không có thứ gọi là “Tính toàn vẹn tham chiếu” như chúng ta thấy trong Cơ sở dữ liệu quan hệ. Dữ liệu được khử chuẩn hóa cao và không yêu cầu các phép tham gia giữa các đối tượng. Điều này làm giãn thuộc tính ACID của cơ sở dữ liệu quan hệ và hỗ trợ CAP (Tính nhất quán, Tính khả dụng và Phân vùng). Nhưng trong số ba điều này chỉ có hai được đảm bảo tại bất kỳ thời điểm nào. Vì vậy, trái ngược với ACID, nó sẽ chỉ hỗ trợ BASE (Trạng thái mềm có sẵn về cơ bản, tính nhất quán cuối cùng). Cơ sở dữ liệu ban đầu được tạo dựa trên các khái niệm này là BigTable của Google, HBase của Yahoo, Cassandra của Facebook, v.v.
Danh mục cơ sở dữ liệu không quan hệ: Cơ sở dữ liệu không quan hệ có thể được phân loại thành bốn loại chính như cơ sở dữ liệu Khóa-giá trị, cơ sở dữ liệu cột, cơ sở dữ liệu tài liệu và cơ sở dữ liệu đồ thị.
Cơ sở dữ liệu khóa-giá trị: Đây là dạng cơ sở dữ liệu NoSQL đơn giản nhất trong đó mỗi giá trị được liên kết với khóa duy nhất. (Ví dụ Redis)
Cơ sở dữ liệu cột: Cơ sở dữ liệu này có khả năng lưu trữ và xử lý một lượng lớn dữ liệu bằng cách sử dụng một con trỏ trỏ đến nhiều cột được phân phối trên một cụm. (ví dụ:HBase)
Cơ sở dữ liệu tài liệu: Cơ sở dữ liệu này có thể chứa nhiều tài liệu khóa-giá trị với nhiều cấp độ lồng nhau. Có thể truy vấn hiệu quả với cơ sở dữ liệu này. Các tài liệu được lưu trữ ở định dạng JSON. (Ví dụ:MongoDB)
Cơ sở dữ liệu biểu đồ: Thay vì các hàng và cột truyền thống, cơ sở dữ liệu này sử dụng các nút và cạnh để biểu diễn cấu trúc đồ thị và lưu trữ dữ liệu. (ví dụ:Neo4J)