Nhóm 12 - INT3114 3
Vũ Ngọc Tùng
Trần Khánh Toàn
Trần Văn Trinh
Tìm hiểu về NoSQL
•
Mở đầu
•
Thuật ngữ NoSQL
•
Làm việc với NoSQL
•
NoSQL Apache Cassandra
Nội dung trình bày
2
•
Thời đại Web 2.0 bùng nổ, hàng tỷ nội dung được chia sẻ lên Web. Khối
lượng dữ liệu và xử lý truy vấn trở nên rất lớn.
▫
Ví dụ: Facebook
2,7 tỉ lượt “like” hàng ngày.
300 triệu bức ảnh được tải lên Facebook.
700.000 truy vấn được thực hiện bởi người sử dụng và hệ thống.
500 TB dữ liệu mới được xử lí.
…
Mở đầu (1)
3
4
•
Các hệ thống cơ sở dữ liệu quan hệ truyền thống tỏ ra yếu kém trước
khối lượng dữ liệu đồ sộ và lượng truy vấn khổng lồ.
▫
Hệ thống thiên về xử lý tập trung, nhưng dữ liệu hiện được lưu trữ phân
tán
▫
Dễ phá vỡ thiết kế dữ liệu ban đầu do việc phi chuẩn hoá dữ liệu
▫
Dễ xảy ra hiện tượng thắt nút cổ chai
▫
…
Mở đầu (2)
5
•
Có nhiều giải pháp được đưa ra, trong đó NoSQL là một giải pháp đem
lại tính hiệu quả cao.
▫
Facebook/Twitter ứng dụng Apache Cassandra
▫
Amazon với DynamoDB
▫
Google với BigTable
▫
Mở đầu (3)
6
Vậy NoSQL là gì?
7
•
NoSQL là gì?
▫
Thuật ngữ
▫
Lịch sử ra đời
▫
Vì sao lại chọn NoSQL?
▫
Một số thuật ngữ liên quan
•
NoSQL có những loại nào?
THUẬT NGỮ NOSQL
8
•
NoSQL được sử dụng như một thuật ngữ chung cho tất cả các cơ sở dữ liệu
không tuân theo quy tắc của các cơ sở dữ liệu quan hệ (RDBMS) phổ biến và
thường liên quan đến việc xử lý và thao tác với một lượng lớn/ dữ liệu.
•
NoSQL không phải là một sản phẩm hay một công nghệ duy nhất, nó đại diện
cho một lớp các sản phẩm liên quan đến việc lưu trữ và xử lý dữ liệu không
theo quy tắc RDBMS.
•
Một mệnh đề khá thú vị về NoSQL:
▫
"select fun, profit from real_world where relational=false;"
Thuật ngữ NoSQL
9
•
Cơ sở dữ liệu NoSQL không hẳn là mới!
•
NoSQL mới được thừa nhận và giới thiệu gần đây
▫
Khởi đầu từ tập đoàn Inktomi với công cụ tìm kiếm HotBot
▫
Đỉnh điểm là Google nghiên cứu sử dụng NoSQL BigTable vào công cụ tìm kiếm nổi
tiếng của mình (2003)
▫
Thuật ngữ NoSQL được Eric Evans – nhân viên của Rackspace, giới thiệu trong một
hội thảo về cơ sở dữ liệu mã nguồn mở phân tán (2009)
•
Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ database mới:
distributed (phân tán) + non-relational (không ràng buộc).
Lịch sử ra đời của NoSQL
10
•
RDBMS
▫
Dữ liệu lớn, phân tán
▫
Khó mở rộng quy mô dữ liệu
▫
Xử lý giao dịch phân tán kém
▫
…
•
NoSQL
▫
Xử lý dữ liệu lớn, phân tán tốt
▫
Dễ dàng mở rộng quy mô
▫
…
Vì sao lại sử dụng NoSQL?
11
•
Non-relational: không có ràng buộc dữ liệu
•
Distributed storage: dữ liệu được lưu trữ phân tán (LAN, Internet…)
•
Eventual consistency: tính nhất quán cuối, tức là đến cuối cùng vẫn đảm bảo
tính nhất quán dữ liệu
•
Vertical scalable: khả năng mở rộng về chiều dọc
•
Horizontal scalable: khả năng mở rộng về chiều ngang
•
Distributed Data: dữ liệu phân tán
•
Deployment Flexibility: triển khai linh hoạt
Một số thuật ngữ liên quan
12
•
Tính cho đến hiện tại có 150 cơ sở dữ liệu NoSQL (số liệu tại trang http
://nosql-database.org/).
•
Dựa theo đặc điểm và thuộc tính của một số loại cơ sở dữ liệu NoSQL,
có thể chia chúng ra làm 4 loại:
▫
Column-Families Stores
▫
Document Stores
▫
Key-Values Stores
▫
Graph Stores/Databases
NoSQL có những loại nào?
13
•
Mô hình mà dữ liệu được lưu trữ định hướng cột được khởi xướng bởi
Google (BigTable).
•
Mỗi đơn vị dữ liệu có thể được coi như một tập hợp các cặp khoá – giá
trị, trong đó mỗi đơn vị được xác định bằng một định danh chính, giống
như là khoá chính, và có xu hướng được gọi là row-key.
NoSQL: Column Families Stores (1)
14
For row-key: 1 For row-key: 2
first_name: John first_name: Jane
last_name: Doe
zip_code: 10001 zip_code: 94303
gender: male
•
Chỉ có cặp khoá – giá trị hợp lệ được lưu trữ
▫
Một column-family ‘name’ với hàng
first_name và last_name.
▫
Một column-family khác ‘location’ với
zip_code.
▫
Column-family ‘profile’ với hàng gender.
•
Column-family được định nghĩa khi cấu hình
hoặc lúc bắt đầu chạy.
•
Các cột có khả năng lưu trữ bất kỳ loại dữ liệu
nào.
NoSQL: Column Families Stores (2)
Ví dụ về row-key
15
•
Dữ liệu được lưu trữ theo trình tự liên tiếp.
•
Dữ liệu tồn tại được chịu lỗi bằng cách tạo ra 3 bản sao của mỗi bộ dữ
liệu được duy trì.
•
Hệ thống cho phép dữ liệu được lưu trữ trong 1 cụm máy (lưu trữ phân
tán).
•
Một số cơ sở dữ liệu NoSQL tiêu biểu cho dạng này: Hadoop/Hbase,
Cassandra, Hypertable, Cloudata,…
NoSQL: Column Families Stores (3)
16
•
Một bảng băm hay một danh sách liên kết là cấu trúc dữ liệu đơn giản
nhất có thể chứa tập hợp các cặp khoá – giá trị (key-values).
•
Độ phức tạp trung bình O(1) cho các thuật toán truy cập dữ liệu.
•
Khoá của 1 cặp key-values là giá trị duy nhất trong các bộ và dễ dàng tìm
kiếm để truy cập dữ liệu.
NoSQL: Key-Values Stores (1)
17
•
Cặp key-values có nhiều kiểu:
▫
Lưu trữ dữ liệu trong bộ nhớ RAM.
▫
Lưu trữ dữ liệu trực tiếp trong ổ cứng.
▫
Lưu trữ dữ liệu trong bộ nhớ cache. (phổ biến hơn cả)
•
Một số cơ sở dữ liệu NoSQL tiêu biểu cho dạng này: DynamoDB, Redis,
FoundationDB, BerkeleyDB, Voldermort,…
NoSQL: Key-Values Stores (2)
18
•
Đây không phải là một hệ thống quản lý văn bản.
•
Các document trong Document Stores bao gồm cấu trúc key-values khá
lỏng lẻo.
▫
Định dạng JSON (JavaScript Object Notatin).
▫
Không có tài liệu hay bảng tính (mặc dù chúng có thể được lưu trữ).
NoSQL: Document Stores (1)
19
•
Document Stores xử lý toàn bộ một document một lúc và tránh việc cắt nhỏ
bản ghi thành các giá trị key-values cấu thành nên nó.
•
Ở mức độ cao hơn, nó cho phép đặt các bản ghi có chung đặc điểm vào một bộ
dữ liệu duy nhất (gọi là Collections).
•
Document Stores cho phép lập chỉ mục cho các bản ghi trên cơ sở không chỉ
đích danh khoá chính mà là tất cả các chỉ mục bên trong của nó.
•
Một số cơ sở dữ liệu NoSQL tiêu biểu cho dạng này: MongoDB, CouchDB,
Couchbase,…
NoSQL: Document Stores (2)
20
•
Đa số cơ sở dữ liệu NoSQL thuộc 3 dạng trên.
•
Số ít còn lại là cơ sở liệu dạng biểu đồ (điểm, cạnh, đường) và cơ sở dữ
liệu lưu trữ dưới dạng XML. Chúng cũng được coi là cơ sở dữ liệu
NoSQL.
•
Một số ít cơ sở dữ liệu NoSQL thuộc dạng này tiêu biểu như: Neo4j và
FlockDB.
NoSQL: Graph Databases/Stores
21
•
Sơ lược
•
Kiến trúc lưu trữ
•
Các đặc điểm chung
•
NoSQL với các ngôn ngữ lập trình bậc cao
•
Ưu, nhược điểm của NoSQL
KIẾN TRÚC NOSQL
22
•
Thiết kế trên nguyên tắc Distributed NoSQL giảm thiểu tối đa các phép
tính toán không cần thiết.
•
Tối thiểu hoá thao tác đọc-ghi dữ liệu trực tiếp kết hợp với batch
processing.
•
Mô hình lưu trữ tập dữ liệu theo cặp giá trị key-values.
•
Quản lý dữ liệu phân tán dưới dạng note (nút), chấp nhận việc trùng lặp
dữ liệu.
Sơ lược
23
•
NoSQL Column Families
•
NoSQL Document Stores
Kiến trúc lưu trữ NoSQL
24
•
Trong một NoSQL Column Families, các column-family giống như các cột ở
hệ thống RDBMS.
•
Chúng cùng được định nghĩa trước khi dữ liệu được lưu trữ và thường ít
thay đổi trong quá trình cập nhật.
•
Điểm khác biệt giữa chúng là khi khai báo cột bên hệ thống RDBMS thì phải
khai báo loại dữ liệu có thể lưu trữ (INT, VARCHAR, TEXT,…), còn NoSQL
Column Families không có giới hạn như vậy. Hơn nữa, ở NoSQL Column
Families không lưu trữ giá trị null, còn bên hệ thống RDBMS thì có.
NoSQL Column Families (1)
25
•
Thường áp đặt một lược đồ (schema) đơn giản trước và có thể dễ dàng
tạo thêm các cột mới.
•
Một column-family là một tập hợp của các cột nhỏ hơn, thường thì các
cột nhỏ này có quan hệ logic với nhau. Chúng cũng được lưu trữ vật lý
cùng nhau.
NoSQL Column Families (2)