Giới thiệu 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/

06/09/2021
Was this article helpful?