Ngày 5 - Học về Big Data – NoSQL là gì?

NoSQL là gì?

NoSQL là viết tắt cho Not Relational SQL hay Not Only SQL. Nhiều người nghĩ rằng NoSQL có nghĩa là No SQL, là không đúng – cả hai đều phát âm giống nhau nhưng nghĩa hoàn toàn khác nhau. NoSQL dùng SQL nhưng nó dùng nhiều hơn cả SQL để đạt được mục tiêu của mình.

Như định nghĩa NoSQL Database trên Wikepedia – “A NoSQL database provides a mechanism for storage and retrieval of data that uses looser consistency models than tranditional relational databases.”

NoSQL

Tại sao dùng NoSQL

CSDL quan hệ truyền thống thường xác định trước cấu trúc dữ liệu. Trong khi thế giới đang hướng đến dữ liệu không cấu trúc, chúng ta thấy giới hạn của CSDL quan hệ truyền thống trong trường hợp này. Ví dụ, ngày nay chúng ta có dữ liệu dạng SMS, tập tin âm thanh wave, photo và video. Có sự khó khăn nhỏ để quản lý chúng dùng CSDL quan hệ truyền thống. Mọi người dùng BLOB lưu trữ dữ liệu như trên. BLOB có thể lưu trữ dữ liệu nhưng khi truy xuất hoặc xử lý thì rất chậm. CSDL NoSQL là loại CSDL có thể tiếp nhận dữ liệu không cấu trúc (unstructured), không tổ chức (unorganized) và không dự đoán trước (unpredictable).

Cùng với hỗ trợ dữ liệu không cấu trúc, thuận lợi khác của NoSQL database là hiệu suất cao (high performance) và tính sẵn sàng cao (high availability).

Tính nhất quán cuối cùng

Ngoài ra cần lưu ý CSDL NoSQL không thể cung cấp 100% ACID (Atomicity, Consistency, Isolation, Durability). Mặc dù vậy, nó cung cấp sự thống nhất cuối cùng.

Taxonomy (phân loại)

NoSQL thuộc nhiều loại như: column store, document store, key-value store, và graph database. Chúng ta sẽ nói chi tiết về các loại này sau.

  • Column: Hbase, Cassandra, Accumulo
  • Document: MongoDB, Couchbase, Raven
  • Key-value: Dynamo, Riak, Azure, Redis, Cache, GT.m
  • Graph: Neo4j, Allegro, Virtouso, Bigdata

Hiện đã có hơn 150 CSDL NoSQL và bạn có thể đọc thêm tại đây.