Giới thiệu về NoSQL

Bài viết này sẽ giới thiệu về NoSQL.
1. Khái niệm
NoSQL là một khái niệm chỉ về một lớp các hệ cơ sở dữ liệu không sử dụng mô hình quan hệ (RDBMS). RDBMS vốn tồn tại khá nhiều nhược điểm như có hiệu năng không tốt nếu kết nối dữ liệu nhiều bảng lại hay khi dữ liệu trong một bảng là rất lớn.
NoSQL ra đời năm 1998 bởi Carlo Strozzi khi ông lập mới một hệ cơ sở dữ liệu quan hệ mã nguồn mở nhanh và nhẹ không liên quan đến SQL Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL khi Johan Oskarsson của Last.fm muốn tổ chức một hội thảo về cơ sở dữ liệu nguồn mở phân tán. Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ CSDL mới: phân tán (distributed) + không ràng buộc (non-relational).

2. Đặc điểm
  - NoSQL lưu trữ dữ liệu của mình theo dạng cặp giá trị “key – value”. Sử dụng số lượng lớn các node để lưu trữ thông tin
  - Chấp nhận dữ liệu bị trùng lặp do một số node sẽ lưu cùng thông tin giống nhau
  - Phi quan hệ – không có ràng buộc nào cho việc nhất quán dữ liệu
  - Có hiệu suất cao (high performance) và tính sẵn sàng cao (high availability)
 
Các dạng NoSQL cơ bản:
Key – value data stores: Dữ liệu lưu dưới dạng cặp key – value. Giá trị được truy xuất thông qua key.
  -Ví dụ : Redis, Dynomite, MemcacheDB
  -Thường cho: Content caching Applications
  -Ưu điểm: Tìm kiếm rất nhanh
  -Nhược điểm: Lưu dữ liệu không theo khuôn dạng (schema) nhất định
Column-based – Tabular: Cơ sở dữ liệu tổ chức dưới dạng các bảng. Gần giống với mô hình RDBMS. Tuy nhiên, Chúng lưu dữ liệu bởi các cột chứ không phải bằng các dòng. Nó khá thích hợp với để hiển thị bằng các phần mềm quản lý kho dữ liệu
  -Ví dụ : Apache Hbase, Apache Cassandra, Hypertable
  -Thường cho: các hệ phân tán file
  -Ưu điểm: Tìm kiếm nhanh, Phân tán dữ liệu tốt
  -Nhược điểm: Hỗ trợ được với rất ít phần mềm
Document-based: Dữ liệu (bán cấu trúc hay semi-structured) được lưu trữ và tổ chức dưới dạng một tập hợp các document. Các document này linh hoạt, mỗi document có một tập nhiều trường.
  -Ví dụ : Apache CouchDB và MongoDB
  -Thường cho: Web applications
  -Ưu điểm: Dùng khi dữ liệu nguồn không được mô tả đầy đủ
  -Nhược điểm: Hiệu năng truy vấn, Không có cú pháp chuẩn cho câu truy vấn dữ liệu
Graph-based data-stores: Những CSDL này áp dụng lý thuyết đồ thị trong khoa học máy tính để lưu trữ và truy xuất dữ liệu. Chúng tập trung vào tính rời rạc giữa các phần dữ liệu. Các phần tử đơn vị dữ liệu được biểu thị như một nút và liên kết với các thành phần khác bằng các cạnh.
  -Ví dụ : Neo4j, InfiniteGraph, DEX
  -Thường cho: Social networking, Hệ trợ giúp
  -Ưu điểm: Ứng dụng các thuật toán trên đồ thị như Đường đi ngắn nhất, liên thông
  -Nhược điểm: Phải duyệt nội bộ đồ thị, để trả lời lại các truy vấn. Không dễ để phân tán
Hiện tại đã có khoảng 150 cơ sở dữ liệu NoSQL chi tiết về danh sách các cơ sở dữ liệu trên có thể tham khảo tại: http://nosql-database.org/
 
Tham khảo
- http://en.wikipedia.org/wiki/NoSQL
- http://nosql-database.org/

Powered by WHMCompleteSolution