2.5.1.1 NoSQL
NoSQL là một dạng CSDL mã nguồn mở không sử dụng T - SQL để truy vấn thông tin. NoSQL viết tắt cho từ None - Relational SQL, hay có nơi thường gọi là Not - Only SQL.
{{ "chuỗi kí tự viết thường" | uppercase }} {{ {name: "An", age: 22} | json }}
{{ 1504375948024 | date }}
{{ 1504375948024 | date:"MM/dd/yyyy @ h:mma" }}
CHUỖI KÍ TỰ VIẾT THƯỜNG { "name": "An", "age": 22 } March 23, 2015
47 NoSQL được phát triển trên Javascript Framework với kiểu dữ liệu là JSON và dạng dữ liệu theo kiểu key và value (một đặc trưng về dữ liệu trong JSON). NoSQL ra đời như một mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của mô hình dữ liệu quan hệ (RDBMS) về tốc độ, tính năng, khả năng mở rộng, memory cache,...
Chắc hẳn, chúng đã sử dụng một dạng CSDL quan hệ nào đó có thể là SQL Server, MySQL và không ít lần phải vất vả trong việc chỉnh sửa các bảng dữ liệu khi liên quan tới khóa chính, khóa ngoại hay một loạt các rắc rối khác trong quá trình làm việc. Bởi đó là CSDL quan hệ.
Với NoSQL chúng ta có thể mở rộng dữ liệu mà không lo tới những việc như tạo khóa ngoại, khóa chính, kiểm tra ràng buộc, .v.v...Vì NoSQL không hạn chế việc mở rộng dữ liệu nên tồn tại nhiều nhược điểm như: sự phục thuộc của từng bản ghi, tính nhất quán, toàn vẹn dữ liệu,....nhưng chúng ta có thể chấp nhận những nhược điểm đó để khiến ứng dụng cải thiện hiệu suất cao hơn khi giải quyết những bài toán lớn về hệ thống thông tin, phân tán hay lưu trữ dữ liệu.
Với các CSDL quan hệ, chi phí triển khai cũng như phát triển các ứng dụng sử dụng CSDL quan hệ cũng rất tốn kém và điều quan trọng được bộc lộ rõ khi truy vấn một lượng bản ghi lớn trong thời gian rất dài. Tiếp đó những thiết bị cầm tay như smartphone thì không phù hợp để triển khai CSDL quan hệ vì dung lượng bộ nhớ thấp và khả năng xử lý kém hơn máy tính. Và còn rất nhiều lí do khác nữa để chúng ta quyết định việc áp dụng NoSQL vào trong dự án của mình.
NoSQL được sử dụng ở rất nhiều công ty, tập đoàn lớn, ví dụ như FaceBook sử dụng Cassandra do FaceBook phát triển, Google phát triển và sử dụng BigTable. 2.5.1.2 Các dạng NoSQL cơ bản
2.5.1.2.1 Key – value
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ụ như Redis, Dynomite, Project Voldemort. Thường được sử dụng cho “content caching applications”. Ưu điểm là tìm kiếm rất nhanh tuy nhiên dữ liệu không theo khuôn dạng (schema) nhất định.
2.5.1.2.2 Column-based
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 để hiển thị bằng các phần mềm quản lý kho dữ liệu. Ví dụ như Apache Hbase, Apache Cassandra, Hypertable. Được sử dụng cho các hệ phân tán file. Ưu điểm là tìm kiếm nhanh, phân tán dữ liệu tốt tuy nhiên có rất ít phần mềm hổ trợ.
2.5.1.2.3 Document-based
Dữ liệu đượ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ụ như Apache CouchDB, MongoDB. Thường dùng trong các ứng dụng web. Ư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.
48
2.5.1.2.4 Graph-based
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 dùng cho Social networking, hệ trợ giúp. Có ưu điểm là ứ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 là 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.