Tải bản đầy đủ (.doc) (31 trang)

TIỂU LUẬN MÔN CƠ SƠ DỮ LIỆU NÂNG CAO Tìm hiểu Hệ quản trị CSDL Phân Tán và hệ QTCSDLPT Apache Cassandra

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.05 MB, 31 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
  
Đề tài:
Tìm hiểu khái niệm Hệ quản trị dữ liệu
phân tán và hệ Quản trị CSDL PT
Apache Cassandra
Giảng viên : PGS.TS Nguyễn Hà Nam
Sinh viên thực hiện :
Nguyễn Quang Dương
Phạm Ngọc Hải
Nhóm thực hiện : Nhóm 11
Hà Nội – 04/2012
MỤC LỤC:
1.Giới thiệu chủ đề: 3
2.Các vấn đề liên quan: 3
2.1, Mô hình Xử lí song song và phân tán dữ liệu: 3
2.2, Hệ quản trị CSDL Phân Tán:
6
9
2.3, Các kiến trúc của Hệ quản trị CSDL Phân Tán: 9
2.3.1, Mô hình kiến trúc của hệ phân tán khách/đại lý – client/server: 9
2.3.2, Mô hình kiến trúc của hệ phân tán Ngang Hàng: 11
sở dữ liệu 12
3.Bài toán và Mô hình Hệ QTCSDL Apache Cassandra: 12
3.1, Bài toán đề ra: 12
3.2, Mô hình NoSQL phân tán, không ràng buộc: 13
3.3, Hệ quản trị CSDL Phân Tán Apache Cassandra : 15
3.3.1, Mô hình dữ liệu: 16
a. Gia đình Cột : 18
b. Cột 19


c. Chỉ mục trong Apache Cassandra 20
3.3.2, Kiến trúc của Apache Cassandra: 20
a. Giao thức Gossip: 20
b. Clustering (cụm trong Apache Cassandra ) và Seed Node: 21
c. Phân vùng dữ liệu: (Partitioning): 21
d. Sao lưu dữ liệu (nhân bản- Replication) trong Cassandra: 23
e. Các yêu cầu phía máy khách (client request) trong Cassandra : 24
f. Quản lí và truy cập dữ liệu trong Apache Cassandra : 26
g. Tính Nhất quán dữ liệu trong Apache Cassandra : 27
h. Rà soát lỗi và Phục hồi trong Apache Cassandra: 28
5.Nhận xét: 29
5.1 Về Hệ quản trị CSDL phân tán Apache Cassadra : 29
5.2 Kết luận: 30
1.Giới thiệu chủ đề:
Những năm gần đây, hệ CSDL phân tán được phát triển dựa trên CSDL và mạng máy
tính. CSDL phân tán gồm nhiều CSDL kết hợp với nhau thông qua mạng máy tính để
trao đổi dữ liệu, thông tin CSDL được tổ chức và lưu trữ ở những vị trí khác nhau
trong mạng máy tính và chương trình ứng dụng làm việc trên cơ sở truy cập dữ liệu ở
những điểm khác nhau đó.
Mỗi CSDL cần có chương trình quản lý, xắp xếp, duy trì dữ liệu gọi là hệ quản trị
CSDL (DBMS - Database Management System). Hệ quản trị CSDL phân tán
(Distributed Database Management System-DBMS) được định nghĩa là một hệ thống
phần mềm cho phép quản lý các hệ CSDL (tạo lập và điều khiển các truy nhập cho các hệ
CSDL phân tán) và làm cho việc phân tán trở nên trong suốt với người sử dụng.
Đặc tính trong suốt muốn nói đến sự tách biệt về ngữ nghĩa ở cấp độ cao của một hệ
thống với các vấn đề cài đặt ở cấp độ thấp. Sự phân tán dữ liệu được che dấu với người
sử dụng làm cho người sử dụng truy nhập vào CSDL phân tán như hệ CSDL tập trung.
Sự thay đổi việc quản trị không ảnh hưởng tới người sử dụng.
Hệ quản trị CSDL phân tán gồm 1 tập các phần mềm (chương trình) sau đây:
• Các chương trình quản trị các dữ liệu phân tán

• Chứa các chương trình để quản trị việc truyền thông dữ liệu
• Các chương trình để quản trị các CSDL địa phương.
• Các chương trình quản trị từ điển dữ liệu.

2.Các vấn đề liên quan:
2.1, Mô hình Xử lí song song và phân tán dữ liệu:
Chúng ta cần phân biệt giữa mô hình xử lí song song và việc phân tán dữ liệu.
Các hệ song song cải tiến tốc độ xử lý và tốc độ I/O bằng cách sử dụng nhiều CPU, bộ
nhớ và nhiều đĩa cứng song song. Trong xử lý song song, nhiều hoạt động được thực hiện
đồng thời. Một máy song song "hạt thô" (coarse-grain) gồm một số nhỏ các bộ xử lý
mạnh. Một máy song song đồ sộ (massively parallel) hay "hạt mịn" (fine-grain) sử dụng
hàng ngàn bộ xử lý nhỏ hơn
Các hệ song song (Parallel Systems)
Có một vài mô hình kiến trúc cho các máy song song:
- Chia sẻ Bộ Nhớ ( Shared memory ): Tất cảc các processor chia sẻ một bộ nhớ chung.
Trong mô hình này các processor và các đĩa cứng truy xuất một bộ nhớ chung, thường
thông qua một bus hoặc một mạng hợp nhất. Thuận lợi : dữ liệu trong bộ nhớ chia sẻ có
thể được truy xuất bởi bất kỳ processor nào. Tuy nhiên, các máy bộ nhớ chia sẻ không
thể hỗ trợ nhiều hơn 64 processor vì nếu nhiều hơn, bus hoặc mạng hợp nhất sẽ trở nên
dễ bị nghẽn ( bottle-neck ).
Kiến trúc bộ nhớ chia sẻ thường có những cache lớn cho mỗi processor, như vậy việc
tham khảo bộ nhớ chia sẻ có thể tránh được mỗi khi có thể.
- Chia sẻ Đĩa Cứng ( Shared disk ): Tất cả các processor chia sẻ đĩa cứngchung. Mô hình
này còn được gọi là cụm (cluster). Trong mô hình này tất cả các processor có thể truy
xuất trực tiếp đến tất cả các đĩa cứngthông qua một mạng hợp nhất, nhưng mỗi processor
có bộ nhớ riêng.
Kiến trúc này có các điểm thuận lợi là: bus bộ nhớ không bị bottle-neck và là phương
pháp rẻ để cung cấp một mức độ xử lí lỗi một processor bị hỏng hóc, các processor khác
có thể tiếp tục công việc của nó. Ta có thể tạo ra hệ thống con các đĩa cứngtự lượng thứ
lỗi bằng cách sử dụng kiến trúc RAID. Tuy nhiên vẫn tồn tại bottle-neck, đặc biệt trong

tình huống CSDL truy xuất đĩa cứng nhiều
- Không chia sẻ ( Shared nothing ): Các processor không chia sẻ bộ nhớ chung, cũng
không chia sẻ đĩa cứngchung. Trong hệ thống này mỗi nút của máy có một processor, bộ
nhớ và một vài đĩa cứng.
Các processor ở mỗi nút có thể liên lạc với các processor khác qua mạng hợp nhất tốc độ
cao. Chức năng của một nút, như server, dữ liệu được chứa trên các đĩa cứngcủa nó. Mô
hình không chia sẻ gì chỉ có vấn đề về việc truy xuất các đĩa cứngkhông cục bộ và việc
truyền các quan hệ kết quả qua mạng. Hơn nữa, đối với các hệ thống không chia sẻ gì,
các mạng hợp nhất thường được thiết kế để có thể tăng quy mô, sao cho khả năng truyền
của chúng tăng khi các nút mới được thêm vào.
- Phân cấp ( hierarchical ): Mô hình này là một sự lai kiểu của các kiến trúc trước.
Kiến trúc này tổ hợp các đặc trưng của các kiến trúc chia sẻ bộ nhớ, chia sẻ đĩa cứngvà
không chia sẻ gì. Ở mức cao nhất, hệ thống bao gồm những nút được nối bởi mạng hợp
nhất và không chia sẻ đĩa cứngcũng như bộ nhớ với nút khác. Như vậy, mức cao nhất là
kiến trúc không chia sẻ gì. Mỗi nút của hệ thống có thể là hệ thống chia sẻ bộ nhớ với
một vài processor. Kế tiếp, mỗi nút có thể là một hệ thống chia sẻ đĩa cứng. Mỗi một hệ
thống chia sẻ đĩa cứnglại có thể là một hệ thống chia sẻ bộ nhớ Như vậy, hệ thống có
thể được xây dựng như một sự phân cấp.
Các hệ thống phân tán (Distributed Systems)
Trong một hệ thống CSDL phân tán, CSDL được lưu trữ trên một vài máy tính. Các máy
tính trong một hệ thống phân tán liên lạc với một máy khác qua nhiều dạng phương tiện
liên lạc khác nhau: mạng tốc độ cao, đường điện thoại Chúng không chia sẻ bộ nhớ
cũng như đĩa cứng. Các máy tính trong hệ thống phân tán có thể rất đa dạng về kích cỡ
cũng như chức năng: từ các workstation đến các mainframe. Các máy tính trong hệ thống
phân tán được tham chiếu bởi một số các tên khác nhau: site , node (phụ thuộc vào ngữ
cảnh mà máy được đề cập).
Sự sai khác chính giữa CSDL song song không chia sẻ gì và hệ thống phân tán là CSDL
phân tán được tách biệt về mặt địa lý, được quản trị tách biệt và có một sự hợp nhất
chậm. Hơn nữa, trong hệ thống phân tán người ta phân biệt giữa các giao dịch cục bộ
(local) và toàn thể (global). Giao dịch cục bộ là một giao dịch truy xuất dữ liệu trong một

node (site) tại đó giao dịch đã được khởi xướng. Giao dịch toàn thể là một giao dịch mà
nó hoặc truy xuất dữ liệu trong một node từ một node khác tại đó nó được khởi xướng
hoặc truy xuất dữ liệu trong một vài node khác nhau
Tuy nhiên, nhiều lý thuyết cũng như phương pháp tính toán song song được áp dung vào
hệ phân tán cũng như CSDL phân tán.
2.2, Hệ quản trị CSDL Phân Tán:
Hệ CSDL phân tán (Distributed DataBase System) được xây dựng dựa
trên hai công nghệ cơ bản là CSDL và mạng máy tính. Hệ CSDL phân tán được mô tả
như là tập hợp nhiều CSDL có liên quan logic đến nhau và được phân bố trên mạng máy
tính.
Trong khái niệm được mô tả về CSDL phân tán ở trên có hai đặc trưng cơ bản là “liên
quan logic” và “phân bố trên mạng”. Trong CSDL phân tán các tập tin dữ liệu được lưu
trữ độc lập trên các nút của mạng máy tính và phải có liên quan đến nhau về mặt logic và
còn hơn thế nữa còn đòi hỏi chúng phải được truy xuất đến qua một giao diện chung,
thống nhất.
Hiện nay khái niệm xử lý phân tán (Distributed procesing), tính toán phân tán
(Distributed computing) hoặc các thuật ngữ có từ “phân tán” hay được dùng để chỉ
các hệ thống rải rác như các hệ thống máy tính có đa bộ xử lý (multiprocessor system)
hay là các xử lý trên mạng máy tính. CSDL phân tán là một khái niệm không bao gồm
các trường hợp xử lý dữ liệu trong các hệ thống sử dụng bộ nhớ chung, kể cả bộ nhớ
trong hay bộ nhớ thứ cấp (đĩa từ), nhất thiết phải là một hệ có sử dụng giao tiếp mạng với
các trạm làm việc độc lập.
Hình 1: Mô hình CSDL Phân tán (bên phải) và mô hình không phải CSDL Phân tán
Hệ Quản trị CSDL phân tán (Distributed DBMS) là hệ thống phần mềm cho phép quản lý
các hệ CSDL phân tán và làm cho sự phân tán trở nên “trong suốt” đối với người sử
dụng.
Khái niệm “trong suốt” – “transparent” để chỉ sự tách biệt ở cấp độ cao của hệ
thống với các vấn đề cài đặt ở cấp độ thấp của hệ thống. Có các dạng “trong suốt” như
sau:
+ “Trong suốt” về phân tán. Do tính chất phân tán của hệ thống nên các dữ liệu

được lưu trữ tại các nút có vị trí địa lý khác nhau, phần mềm sẽ đáp ứng các yêu cầu của
người sử dụng sao cho người sử dụng không cần phải biết vị trí địa lý của dữ liệu.
+ “Trong suốt” về phân hoạch (Partition). Do dữ liệu phân tán và do nhu cầu
của công việc dữ liệu cần được phân hoạch và mỗi phân hoạch được lưu trữ tại một
nút khác nhau (đây gọi là quá trình phân mảnh – fragmentation). Quá trình phân mảnh
hoàn toàn tự động bởi hệ thống và người sử dụng không cần phải can thiệp.
+ “Trong suốt” về Sao lưu (Replication). Vì lí do “hiệu năng”, “tin cậy” nên
dữ liệu còn được sao chép một phần ở những vị trí khác nhau.
+ “Trong suốt” về độc lập dữ liệu.
+ “Trong suốt” về kết nối mạng. Người sử dụng không cần biết về sự có mặt
của giao tiếp mạng.
Hình 2: Các tầng trong suốt của hệ thống
Ví dụ:
Một công ty có các văn phòng ở Paris, London, NewYork, Toronto.
Công ty này có các CSDL sau đây:
CSDL về nhân viên: EMP (ENo, EName, Title)
CSDL về các dự án: PROJ (PNo, PName, Budget, Loc)
CSDL về lương: PAY (Title, Sal)
CSDL về phân công: ASG (ENo, PNo, Dur, Resp)
Giải thích về các thuộc tính: Sal: Lương; Title: Chức vụ; Budget: Ngân sách
của dự án; Loc: Địa điểm; Dur: Duration – Thời hạn; Resp: Responsibility – Trách
nhiệm
Do tính phân tán của các văn phòng nên tại mỗi văn phòng có lưu trữ dữ liệu
tác nghiệp của chính các văn phòng đó, có thể là các nhân viên tại đó và các dự án mà
văn phòng đó đang quản lý. Ta có sơ đồ lưu trữ đã phân tán và phân mảnh giả định
như sau:
Hình3: Ví dụ Sơ hồ hệ Phân tán dữ liệu
2.3, Các kiến trúc của Hệ quản trị CSDL Phân Tán:
Chúng ta có 2 mô hình Hệ quản trị CSDL phổ biến:
- Mô hình Khách – Chủ (Client- Server)

- Mô hình Ngang Hàng (Peer to Peer)
2.3.1, Mô hình kiến trúc của hệ phân tán khách/đại lý – client/server:
Đặc trưng của hệ này là chức năng của hệ thống được chia làm hai lớp:
+ Chức năng đại lý – server function
+ Chức năng khách hàng – client function.
Trong hệ thống khách/đại lý các thao tác xử lý dữ liệu đáp ứng yêu cầu của
khách hàng đều được thực hiện bởi các chức năng đại lý, chỉ có kết quả được gửi trả
cho khách hàng. Ta có mô hình chức năng như sơ đồ ở dưới
Hệ khách có các tầng:
+ Giao diện tương tác với người sử dụng (User Interface), các chương
trình ứng dụng (Application Program),
+ Hệ quản trị CSDL khách hàng (Client DBMS).
+ Các phần mềm mạng có chức năng truyền tin (Communication
Software).
Hệ đại lý có các tầng:
+ Các phần mềm mạng có chức năng truyền tin.
+ Tầng kiểm soát ngữ nghĩa của dữ liệu (Semantic Data Controler)
+ Tầng tối ưu hóa câu hỏi (Query Optimizer).
+ Tầng quản lý các giao tác (Transaction Manager).
+ Tầng quản lý khôi phục (Recovery Manager).
+ Tầng hỗ trợ thực thi (Run – time Support Processor) .
+ Hệ điều hành quản lý chung và giao tiếp với CSDL vật lý.
Hình 4: Sơ đồ kiến trúc Hệ quản trị CSDL Phân Tán mô hinh Khách – Chủ
Hệ client/server có ưu điểm là xử lý dữ liệu tập trung, trên đường truyền chỉ có
các gói tin yêu cầu (câu hỏi) và các kết quả đáp ứng câu hỏi, giảm tải được khối lượng
truyền tin trên mạng kết hợp với thiết bị tại đại lý rất mạnh sẽ tăng tốc độ xử lý dữ liệu
của cả hệ thống.
2.3.2, Mô hình kiến trúc của hệ phân tán Ngang Hàng:
Đặc điểm nổi bật của hệ thống này là dữ liệu được tổ chức ở các nút có chức
năng như nhau, đồng thời sự tổ chức dữ liệu ở các nút này lại có thể rất khác nhau, từ

đó cần phải có:
Hình 5: Sơ đồ kiến trúc của Hệ quản trị CSDL Phân Tán Ngang Hàng
+ Định nghĩa dữ liệu tại mỗi vị trí: tại mỗi nút phải xây dựng lược đồ dữ liệu
cục bộ LIS (Local Internal Schema)
+ Mô tả cấu trúc logic toàn cục: Lược đồ khái niệm toàn cục GCS (Global
Conceptual Schema).
+ Mô tả cấu trúc logic tại mỗi vị trí, điều nảy xảy ra do Sao lưu và phân mảnh,
gọi là lược đồ khái niệm cục bộ LCS (Local Conceptual Schema).
+ Mô tả cấu trúc dữu liệu của các ứng dụng gọi là lược đồ ngoại giới ES
(External Schema).
Cấu trúc của hệ thống bao gồm hai thành phần chính: Bộ phận tiếp nhận người
dùng (User Processor) và bộ phận xử lý dữ liệu (Data Processor). Hai modun này
được đặt chung trên mỗi máy chứ không tách biệt như hệ thống khách/đại lý.
Các chức năng cơ bản của từng modun như sau:
+ User Interface Handler - Giao tiếp người sử dụng: Diễn dịch yêu cầu, định
dạng kết quả.
+ Semantic Data Controler - Kiểm soát dữ liệu ngữ nghĩa: Dựa vào lược đồ
khái niệm toàn cục để kiểm tra câu vấn tin có thực hiện được hay không.
+ Global Query Optimizer - Tối ưu hóa câu hỏi toàn cục: Định ra chiến lược
thực thi tốt nhất trên các nút.
+ Global Execution Monitor – Điều khiển thực thi câu vấn tin toàn cục.
+ Local Query Processor – Xử lý câu hỏi cục bộ
+ Local Recovery Manager – Quản lý khôi phục cục bộ: Quản lý sự nhất quán
khi có sự cố.
+ Run-Time Support Processor - Bộ phận hỗ trợ thực thi: Quản lý truy xuất cơ
sở dữ liệu.
3.Bài toán và Mô hình Hệ QTCSDL Apache Cassandra:
3.1, Bài toán đề ra:
Bài toán đề ra được gắn liền với việc tìm hiểu mô hình Hệ quản trị CSDL Apache
Cassandra, đó là việc phát triển của các mạng xã hội như Facebook, Twitter, các mạng

với tương tác của người dùng qua internet là chủ yếu như các trang mua bán hàng trực
tuyến Amazon hay kinh doanh các dịch vụ online như Google. Làm thế nào để thiết kế
(lựa chọn) được một mô hình CSDL và xây dựng được một Hệ quản trị CSDL có thể đáp
ứng được số lượng lớn các dữ liệu người dùng liên tục được cập nhật ra mỗi ngày và
luôn luôn có xu hướng “nở” ra ngày một nhiều.
Hệ quản trị CSDL Apache Cassandra là một hệ Hệ quản trị CSDL dựa trên mô hình thiết
kế dữ liệu NoSQL, là một mô hình tiềm năng để cạnh tranh cũng như lấp đày được những
yếu điểm của hô hình CSDL Quan hệ truyền thống.
3.2, Mô hình NoSQL phân tán, không ràng buộc:
NoSQL còn có nghĩa là Non-Relational (NoRel) - không ràng buộc. Tuy nhiên, thuật ngữ
đó ít phổ dụng hơn và ngày nay người ta thường dịch NoSQL thành Not Only SQL -
Không chỉ SQL. NoSQL ám chỉ đến những CSDL không dùng mô hình dữ liệu quan hệ
để quản lý dữ liệu trong lĩnh vực phần mềm.
Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm tên gọi chung cho
các lightweight open source relational database (CSDL quan hệ nguồn mở nhỏ) nhưng
không sử dụng SQL cho truy vấn.
Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL
trong một hội thảo về CSDL nguồn mở phân tán. 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).
NoSQL storage đặc biệt phổ dụng trong thời kỳ Web 2.0 bùng nổ, nơi các mạng dịch vụ
dữ liệu cộng đồng cho phép người dùng tạo hàng tỷ nội dung trên web. Do đó, dữ liệu lớn
rất nhanh vượt qua giới hạn phần cứng và cần phải giải quyết bằng bài toán phân tán.
Nửa đầu năm 2009, người ta đã manh nha thuật ngữ NoSQL đánh dấu sự trưởng thành
của thế hệ database mới trong khi những sản phẩm phần mềm có thể đã được phát triển
từ trước đó rất lâu.
Các khái niệm trong mô hình CSDL NoSQL
Non-relational- khồng ràng buộc - thuật ngữ sử dụng đến các mối quan hệ giữa các bảng
trong CSDL quan hệ (RDBMs) sử dụng mô hình khóa gồm 2 loại khóa: khóa chính và
khóa phụ (primary key + foreign key) để ràng buộc dữ liệu nhằm thể hiện tính nhất quán
dữ liệu từ các bảng khác nhau. Non-relational là khái niệm không sử dụng các ràng buộc

dữ liệu cho nhất quán dữ liệu ở NoSQL database.

Distributed storage: mô hình lưu trữ phân tán các file hoặc dữ liệu ra nhiều máy tính
khác nhau trong mạng LAN hoặc Internet dưới sự kiểm soát của phần mềm.
Eventual consistency (nhất quán cuối): tính nhất quán của dữ liệu không cần phải đảm
bảo ngay tức khắc sau mỗi phép GHI. Một hệ thống phân tán chấp nhận những ảnh
hưởng theo phương thức lan truyền và sau một khoảng thời gian (không phải ngay tức
khắc), thay đổi sẽ đi đến mọi điểm trong hệ thống, tức là cuối cùng (eventually) dữ liệu
trên hệ thống sẽ trở lại trạng thái nhất quán.

Vertical scalable (khả năng mở rộng chiều dọc): Khi dữ liệu lớn về lượng, phương
pháp tăng cường khả năng lưu trữ và xử lý bằng việc cải tiến phần mềm và cải thiện phần
cứng trên một máy tính đơn lẻ được gọi là khả năng mở rộng chiều dọc. Ví dụ việc tăng
cường CPUs, cải thiện đĩa cứng, bộ nhớ trong một máy tính, cho DBMs nằm trong
phạm trù này. Khả năng mở rộng chiều dọc còn có một thuật ngữ khác scale up.

Horizontal scalable (khả năng mở rộng chiều ngang): Khi dữ liệu lớn về lượng, phương
pháp tăng cường khả năng lưu trữ và xử lý là dùng nhiều máy tính phân tán. Phân tán dữ
liệu được hỗ trợ bởi phần mềm tức CSDL.
Kiến trúc của NoSQL :
Về cơ bản, các thiết kế của NoSQL lựa chọn mô hình lưu trữ tập dữ liệu theo cặp giá trị
key-value. Khái niệm node được sử dụng trong quản lý dữ liệu phân tán. Với các hệ
thống phân tán, việc lưu trữ có chấp nhận trùng lặp dữ liệu. Một request truy vấn tới data
có thể gửi tới nhiều máy cùng lúc, khi một máy nào nó bị chết cũng không ảnh hưởng
nhiều tới toàn bộ hệ thống. Để đảm bảo tính Thời gian thực trong các hệ thống xử lý
lượng lớn, thông thường người ta sẽ tách biệt CSDL ra làm 2 hoặc nhiều CSDL. Một
CSDL nhỏ đảm bảo vào ra liên tục, khi đạt tới ngưỡng thời gian hoặc dung lượng,
CSDL nhỏ sẽ được gộp (merge) vào CSDL lớn hơn có thiết kế tối ưu cho phép đọc (read
operation). Mô hình đó cho phép tăng cường hiệu suất I/O truy xuất dữ liệu
Đặc điểm của hệ CSDL mô hình NoSQL:

- High Scalability: Gần như không có một giới hạn cho dữ liệu và người dùng trên hệ
thống.
- High Availability: Do chấp nhận sự trùng lặp trong lưu trữ nên nếu một node
(commodity machine) nào đó bị Ngừng Kết Nối cũng không ảnh hưởng tới toàn bộ hệ
thống.
ACID :
- Atomicity: Mọi giao dịch phải hoàn thành hoặc không có giao dịch nào hoàn thành.
- Consistency: chấp nhận tính nhất quán yếu, cập nhật mới không đảm bảo rằng các truy
xuất sau đó thấy ngay được sự thay đổi. Sau một khoảng thời gian lan truyền thì tính nhất
quán cuối cùng của dữ liệu mới được đảm bảo.
- Isolation: Một giao dịch phải tách biệt với giao dịch khác khi hoạt động
- Durability: dữ liệu có thể tồn tại trong bộ nhớ máy tính nhưng đồng thời cũng được lưu
trữ lại đĩa cứng.
Phân loại
Wide Column Store / Column Families
Hệ CSDL phân tán cho phép truy xuất ngẫu nhiên/tức thời với khả năng lưu trữ một
lượng cực lớn data có cấu trúc. Dữ liệu có thể tồn tại dạng bảng với hàng tỷ bản GHI và
mỗi bản GHI có thể chứa hàng triệu cột. Một triển khai từ vài trăm cho tới hàng nghìn
commodity hardware dẫn đến khả năng lưu trữ hàng petabytes nhưng vẫn đảm bảo high
performance. Dưới đây là một số sản phẩm thông dụng: Hadoop/HBase –
Apache, BigTable – Google, Cassandra - Facebook/Apache, Hypertable - Zvents
Inc/Baidu, Cloudera, SciDB, Mnesia, Tablets,…
Key-Value Store/Tuple store :
Mô hình lưu trữ dữ liệu dưới cặp giá trị key-value trong đó việc truy xuất, xóa, cập nhật
giá trị thực thông qua key tương ứng. Với sự bổ trợ bởi các kỹ thuật BTree, B+Tree,
Hash, dữ liệu có thể tồn tại trên RAM hoặc đĩa cứng, phân tán hoặc không phân tán.
Hầu hết các NoSQL database đều là key-value store.
Document Store:
Thực chất là các document-oriented database - một thiết kế riêng biệt cho việc lưu trữ
document. Các cài đặt có thể là giả lập tương tác trên relational database, object database

hay key-value store. Một số sản phẩm tiêu biểu: Apache Jackrabbit, CouchDB, IBM
Lotus Notes Storage Format (NSF), MongoDB, Terrastore, ThruDB, OrientDB,
RavenDB,
Graph Database:
Graph database là một dạng CSDL được thiết kế riêng cho việc lưu trữ thông tin đồ họa
như cạnh, nút, properties. Một số sản phẩm tiêu biểu: Neo4J, Sones, AllegroGraph, Core
Data, DEX, FlockDB, InfoGrid, OpenLink Virtuoso,
3.3, Hệ quản trị CSDL Phân Tán Apache Cassandra :
Apache Cassandra là một hệ quản trị CSDL phân tán mở (Open Souce Distributed
DBMS). Hệ quản trị này là một trong những dự án trọng điểm của Tổ chức phần mềm
Apache nổi tiếng với phần mềm Webserver cùng tên. Nó được thiết kế để thích nghi với
một lượng lớn dữ liệu có thể được mở rộng nhanh chóng trong mô hình tính toán phân
tán hoặc các máy chủ cung cấp dịch vụ phân tán.
Hệ quản trị CSDL này dựa trên mô hình NoSQL. Ban đầu, Apache Cassandra được
Facebook phát triển dựa trên nhu cầu về tín năng tìm kiếm trong Inbox. Năm 2008 nó
được biết đến như là một dự án phần mềm nguồn mở của Google. Tháng 3 năm 2009 nó
được Apache phát triên trong dự án Apache Incubator và trở thành dự án tiêu điểm của
Apache vào năm 2010. Cũng vào năm này, Facebook quyết định phát triển Facebook
Messaging của họ dựa trên Hbase nên đã từ bỏ Apache Cassandra
Apache Cassandra cung cấp kiến trúc key-value (Khóa-Dữ liệu) cùng với tính nhất quán
uyển chuyển (tunable consistency). Mỗi giá trị khóa ứng với nhiều dữ liệu và được
nhóm vào thành các Gia Đình Cột (column families). Số lượng các Gia đình Cột là cố
định trong Hệ quản trị CSDL Apache Cassandra khi khởi tạo, nhưng các cột trong đó
được thêm vào gia đình bất kì lúc nào.
Với mỗi Gia đình Cột có một khóa hàng (row key) tương ứng, điều đó làm cho Hệ quản
trị CSDL Apache Cassandra là 1 Hệ quản trị CSDL lai ghép giữa Hệ quản trị CSDL
hướng cột (column-oriented) và lưu trữ theo hướng hàng (row-oriented).
3.3.1, Mô hình dữ liệu:
Một bảng trong Apache Cassandra là một bản đồ đa chiều phân tán (distributed
multidimensional map) với tính cấu trúc cao. Những khóa hàng (row key( trong bảng là

các chuỗi 64KB (cũng nối với tên cột, mặc dù tên cột thường là 16 đến 36 byte). Mỗ họat
động dưới một khóa hàng là độc lập với mỗi sao chép không kể số cột đang được ĐỌC
hay GHI vào. Cột được nhóm lại thành các tập hợp cột và được gọi là Gia đình Cột
(column families) khá giống với BigTable. Apache Cassandra có 2 cột là loại Đơn Giản
và Siêu Lớn. Loại Siêu Lớn có thể hình dung là có các cột nằm trong nhau. Mô hình tổng
thể phía trên cùng các cột Apache Cassandra được gọi là Keyspace
Vì vậy Apache Cassandra có thể xử lí được với 4 hoặc 5 hướng sau :
Map with four dimensions:
1. Keyspace → Column Family
2. Column Family → Column Family Row
3. Column Family Row → Columns
4. Column → Data value
Map with five dimensions:
1. Keyspace → Super Column Family
2. Super Column Family → Super Column Family Row
3. Super Column Family Row → Super Columns
4. Super Column → Columns
5. Column → Data value

So sánh với mô hình CSDL Quan hệ :
Apache Cassandra được thiết kế cho hệ thống dữ liệu có khả năng mở rộng lớn, vì vậy nó
rất khác so với CSDL quan hệ truyền thống. Trong CSDL quan hệ, dữ liệu được lưư vào
các bảng (table) và liên quan đến nhau, chúng cũng được tối ưu để giảm bớt thông tin dư
thừa và thương dùng khóa chung để tiện lợi trong quá trình truy vấn SQL.
Ví dụ dưới đây là một bảng CSDL quan hệ dùng để thiết kế một blog nhỏ, chúng ta có
thể thấy mối quan hệ giữa chúng
Hình 6 : Mô hình CSDL Quan hệ truyền thống
Trong mô hình Apache Cassandra, keyspace sẽ được dùng cho dữ liệu, giống như là các
lược đồ quan hệ. Bên trong keyspace sẽ có một hoặc nhiều Gia đình Cột, tương tự như
bảng. Gia đình Cột sẽ chứa các cột, tập các cột có quan hệ sec được xác định bởi khóa

hàng (row key). Mỗi hàng trong một Gia đình Cột không bắt buộc phải có cùng một tập
cột. Apache Cassandra cũng không bắt buộc quan hệ giữa các Gia đình Cột như CSDL
truyền thống : không có khóa ngoài nào trong Cassandra, và việc thêm vào Gia đình Cột
trong quá trình truy vấn không được hỗ trợ. Mỗi Gia đình Cột sẽ tự chứa 1 tập các cột
được dự định sẽ được truy cập với nhau để đáp ứng các truy vấn cụ thể.
Hình 7 : Mô hình CSDL Phân tán Apache Cassandra
Trong Apache Cassandra, keyspace là nơi chứa các dữ liệu, giống như lược đồ dữ liệu
trong Cơ sở dữ liệu quan hệ. Keyspace được dùng để nhóm các Gia đình Cột cùng nhau.
Thông thường có một keyspace cho mỗi ứng dụng và quá trình sao lưu cũng được kiểm
soát trên mỗi keyspace, vì vậy dữ liệu có yêu cầu sao lưu khác nhau cũng nên được nhóm
vào các keyspace khác nhau. Keyspace cũng không được thiết kế cho chức năng mapping
mà chỉ là cách để kiểm soát sao lưu dữ liệu của tập các Gia đình Cột
a. Gia đình Cột :
Có thể so sánh với khái niệm bảng (table) trong mô hình Cơ sở dữ liệu quan hệ, tuy nhiên
việc lưu trữ lại khác. Trong Cơ sở dữ liệu quan hệ, định nghĩa bảng rồi định nghĩa cột,
dạng dữ liệu cũng được định nghĩa trước. Một hàng có tập các cột cố định. Trong Apache
Cassandra, Gia đình Cột được định nghĩa trước, sau đó Gia đình Cột sẽ định nghĩa siêu
dữ liệu (metadata) cho các cột, nhưng các cột thực tế tạo nên 1 hàng lại được xác định bởi
ứng dụng. Mỗi hàng có thể có tập các cột khác nhau.
Mặc dù Gia đình Cột linh hoạt, tuy nhiên mỗi Gia đình Cột nên được thiết kế để lưu trữ
duy nhất một loại dữ liệu. Có 2 kiểu Gia đình Cột điển hình là Tĩnh và Động.
Gia đình Cột Tĩnh chứa một tập tương đối tĩnh các tên cột và tương tự như bảng Cơ sở
dữ liệu quan hệ. Mặc dù các hàng sẽ có tập các cột nhưng không cần thiết phải định nghĩa
dữ liệu. Gia đình Cột Tĩnh dùng siêu dữ liệu để xác định trước cho mỗi cột.
Mô hình Gia đình Cột tĩnh :
Hình 8: Mô hình Gia đình Cột Tĩnh
Gia đình Cột Động là tính năng mới của Apache Cassandra, cho phép tính toán trước
kiểu dữ liệu các cột và lưu chúng vào một hàng đơn để tăng tính hiệu quả truy vấn. Mỗi
hàng là một ánh xạ nhanh của dữ liệu, được sắp xếp thành một loạt, có thể dùng tùy ý các
tên cột để lưu giữ dữ liệu. Ví dụ như muốn thiết kế một cột để xem số người dùng theo

dõi blog của bạn:
Hình 9: Mô hình Gia đình Cột động
Thay vì định nghĩa siêu dữ liệu cho các cột khác nhau, Gia đình Cột Động định nghĩa
dạng dữ liệu cho tên cột và giá trị nhưng tên và giá trị thực sự thì được quyết định bởi
ứng dụng khi thêm dữ liệu thực vào.
Mỗi Gia đình Cột có một giá trị khóa hàng (row key) duy nhất, khái niệm tương tự như
khóa chính trong Cơ sở dữ liệu quan hệ. Một Gia đình Cột được phân vùng dựa trên khóa
hàng của nó và khóa hàng cũng được ngầm định hiểu là chỉ mục.
b. Cột
Là khái niệm nhỏ nhất trong Apache Cassandra, tên cột có thể là nhãn tĩnh hoặc động dựa
vào ứng dụng.
Hình 10: Mô hình Cột
Cột có thể được lập chỉ mục dựa vào tên nhưng không hỗ trợ truy vấn dữ liệu được yêu
cầu sắp xếp tuần tự như dữ liệu thời gian. Cột cũng không cần yêu cầu có giá trị, đôi khi
các thông tin cần được ứng dụng truy vấn lại nằm ngay trên phần tên cột (như ví dụ ai
đang theo blog ở trên).
Apache Cassandra sử dụng giá trị timestamp của cột để xác định cột nào được cập nhật
thông tin gần nhất. Giá trị timestamp được cập nhật bởi ứng dụng máy khách. Giá trị gần
nhất của timestamp sẽ luôn được chọn để đáp ứng khi yêu cầu dữ liệu được khởi tạo.
Ngoài ra, Apache Cassandra còn có các kiểu cột đặc biệt sau:
Cột hết hạn (Expiring Column): có giá trị TTL (time to live). Khi máy khách yêu cầu
ghi vào cột, máy khách sẽ họn giá trị TTL thích hợp (giây) cho cột. TTL cột sẽ được xóa
khi yêu cầu quá hạn (đầu tiên cho vào tombstore rồi tự động xóa sau đó. Cần chú ý đồng
bộ thời gian giữa khi sử dụng giá trị TTL
Cột đếm (Counter Column): dùng để lưu số tăng qua mỗi sự kiện hay tiến trình, Ví dụ
như đếm số lần trang web được xem. Loại cột này sẽ được lưu ở Gia đình Cột chuyên
biệt. Cột đếm khác các cột thông thường vì một biến đếm được định nghĩa, ứng dụng
máy khách sẽ cập nhật giá trị bằng cách tăng hay giảm và cập nhật thông qua tên của biến
đếm mà không cần timestamp.
Siêu cột (Super Column): là một cột đặc biệt chứa tập các cột. Một siêu cột gồm tên và

bản đồ các cột nó chứa, có thể so sánh giữa 2 siêu cột hoặc các cột trong 2 siêu cột với
nhau.
Hình 11: Mô hình Siêu Cột
Một siêu cột là một cách để nhóm tất cả các cột dựa trên một giá trị cần tra cứu. Ứng
dụng chính là việc nhóm các khóa hàng ở các Gia đình Cột khác nhau thành một hàng
cho việc thống kê, ví dụ như trường hợp bạn muốn tạo một danh sách những bài viết của
các người viết mà bạn đang muốn theo dõi.
Hạn chế của siêu cột là tất cả các cột của siêu cột phải được tuần tự hóa để đọc một giá trị
của cột con phía trong nó. Do đó việc sử dụng siêu cột thích hợp cho trường hợp sử dụng
số lượng cột trong tương đối nhỏ.
c. Chỉ mục trong Apache Cassandra
Chỉ mục chính: Khóa hàng, với Cơ sở dữ liệu quan hệ, khóa chính là khóa để nhận dạng
mỗi hàng trong bảng, phục vụ cho quá trình truy xuất dữ liệu và được coi là duy nhất.
Trong Apache Cassandra khóa chính của mỗi Gia đình Cột chính là khóa hàng, cho phép
tìm kiếm các hàng. Khóa hàng cũng dùng để xác định phân vùng và đánh dấu node nào
được nhóm để sao lưu
Chỉ mục phụ: Apache Cassandra cũng cung cấp chỉ mục thứ hai (chỉ mục phụ), tự động
đánh chỉ mục trong giá trị của cột khi chọn dạng dữ liệu KEY. Điều này để cung cấp truy
vấn cho những truy vấn đặc biệt để so sánh bằng các trường giá trị trong cột hoặc muốn
lọc một tập giá trị nào đó. Nó được dùng tốt nhất trong trường hợp nhiều hàng chứa các
giá trị chỉ mục vì càng nhiều các giá trị duy nhất thì bạn cần càng nhiều dữ liệu hàng để
lưu trữ. Ví dụ như bạn muốn tìm kiếm một người dùng đến từ một thành phố nào đó,
nhiều người dùng sẽ khai báo cùng một thành phố như HN,HCM… vì vậy ta có thể lập
chỉ phụ cho những người cùng thành phố để tìm kiếm.
3.3.2, Kiến trúc của Apache Cassandra:
a. Giao thức Gossip:
Apache Cassandra dùng giao thức với tên gọi Gossip để nhận ra vị trí và thông tin trạng
thái của các node tham gia trong Apache Cassandra cluster. Đây la giao thức ngang hàng,
nghĩa là các node có quyền như nhau và trong đổi thông tin lẫn nhau với các node biết
nhau.

Trong Apache Cassandra, giao thức Gossip định kì chạy mỗi giây để lấy thông tin trạng
thái của các node lân cận. Các node trao đổi thông tin về bản thân node cũng như tình
trạng quan hệ với các node lân cận. Mỗi bản tin Gossip sẽ có các phiên bản khác nhau (ở
đây sử dụng khái niệm phiên bản để phân biệt), và thông điệp nào có phiên bản cũ hơn sẽ
bị ghi đè bằng các thông điệp mới chứa trạng thái gần hiện tại nhất của hệ thống.
b. Clustering (cụm trong Apache Cassandra ) và Seed Node:
Cụm là một khái niệm quan trọng trong Apache Cassandra, là tập hợp các node đã được
phân vùng được nhóm với nhau.
Khi một node được khởi tạo, nó bắt đầu tìm trong file cấu hình để xác định mình thuộc
Apache Cassandra cluster nào (tìm tên của Apache Cassandra cluster), và node được gọi
là Seed Node thì cung cấp cho node vừa khởi tạo thông tin về các node trong Cluster và
Seed Node này có thể được cấu hình ở file cassandra.yaml và thường tất cả các node
trong cluster đều có chung 1 danh sách các Seed Node. Việc thiết kế Seed Node cũng
không nắm ngoài mục đích cho các nút mới khởi tạo biết được trạng thái của Cluster.
c. Phân vùng dữ liệu: (Partitioning):
Khi một Cluster được tạo ra, chúng ta có thể chọn được số phân vùng mà chúng ta muốn.
Trong Apache Cassandra thì các Cluster được hình dung như là các vòng tròn (vòng
ring). Mỗi vòng được chia thành các khoảng (vùng) bằng nhau và node được quản lí
trong các vùng này. Node phải có (được gán) 1 token trước khi vào cluster, token này xác
định vị trí của node trong vòng và vùng dữ liệu nó chịu trách nhiệm.
Để xác định node cần ghi dữ liệu Sao lưu, vòng sẽ được chạy theo chiều kim đồng hồ đến
node có token lớn hơn khóa hàng, và mỗi node thì có trách nhiệm với bản thân và node
trước nó, điều đó có nghĩa là node cuối cùng sẽ có trách nhiệm với node đầu tiên, như
hình dung của vòng tròn.
Ví du:
Hình 12: Mô hình token 1 Data Center
Ta có 4 node trong 1 cluster và chia giá trị token lần lượt là 0,25,50,75. Dữ liệu
với khóa hàng sẽ được chia dựa trên các vùng quản lí của node, vd khóa hàng là 0 sẽ có
trách nhiệm dữ liệu với khoảng từ 75-0.
Ví dụ về phân chia Token với Data Center :

Hình 12: Mô hình token Nhiều Data Center
Trường hợp các node được phân bổ ở các Data Center khác nhau, Apache Cassandra có
cơ chế tính toán để gán token dựa vào công cụ NetworkTopology Strategy (xác định các
vị trí các node mỗi Data Center) để có thể có mô hình phân bố dữ liệu đều nhất. Nếu việc
tính toán phân bổ quá phức tạp, mỗi Data Center có thể được thiết lập như một Cluster
riêng biệt, tuy nhiên các node trong các cluster phải được gán token sao cho không được
trung với token của Cluster khác. Việc gom các node của các Data Center chính là nhằm
mục đích phân chia token đều mà không bị xung đột
Các dạng phân chia dữ liệu trong Apache Cassandra :
Một điều quan trọng là các phân vùng trong Apache Cassandra không thể thay đổi trừ khi
nạp lại dữ liệu. Vì vậy việc lựa chọn và cấu hình phân vùng là rất cần thiết trước khi khởi
tạo Cluster. Apache Cassandra không hạn chế số lượng phân vùng, nhưng phần lớn phân
vùng được sử dụng là Phân vùng Ngẫu Nhiên (Random Partition)
Phân vùng Ngẫu Nhiên (Random Partition) là partition mặc định của Cassandra
Cluster, dữ liệu được ghi vào các phân vùng theo cơ chế sử dụng bảng băm thích hợp. Để
phân phối dữ liệu đều tới các node, các giá trị băm của khóa hàng sẽ được tạo ra. Mặc
định các token cũng sẽ được băm hóa để node sau đó sẽ sở hữu các hàng với giá trị nhỏ
hơn giá trị token được băm hóa. Với dữ liệu cùng một Data Center, token sẽ được tính
toán dựa trên khoảng băm trong khoảng số lượng node trên cluster, với nhiều Data
Center, dữ liệu được tính toán trên mỗi Data Center và được chia đều cho các node trong
cùng một nhóm sao lưu.
Mục đích của phương pháp này là khi token được bố trí thích hợp, dữ liệu sẽ được phân
phối đều trong cluster trong quá trình đọc hoặc ghi. Nó cũng góp phần vào cân bằng tải
cho Cluster.
Phân vùng có Thứ Tự (Ordered Partition): nếu phân vùng bằng cách này, phải chắc
chắn rằng các giá trị khóa hàng được sắp xếp theo một thứ tự nào đó. Việc phân vùng này
cũng cho phép rà soát tìm kiếm tốt giữa các hàng bởi ban có thể tạo ra một bảng chỉ mục
như Cơ sở dữ liệu truyền thống, điều này không thẻ làm với phân vùng Ngẫu nhiên vì
các giá trị khóa đã được băm hóa.
Tuy nhiên có quá nhiều nhược điểm khi sử dụng phương pháp này như: dữ liệu ghi tuần

tự ( như dữ liệu thời gian) sẽ được ghi vào cùng node, phải dùng nhiều biện pháp cân
bằng tải hơn để san sẻ dữ liệu, mất cân bằng trong các Gia đình Cột…
d. Sao lưu dữ liệu (nhân bản- Replication) trong Cassandra:
Quá trình sao lưu dữ liệu là việc sao chép dữ liệu vào nhiều node để chắc chắn tính sẵn
sàng (reliability) là khả năng chống chịu lỗi (fault tolerance). Khi tạo ra keyspace trong
Cassandra, bạn phải lựa chọn vị trí chiến lược sao lưu (Replica placement strategy) : số
lượng bản sao và cách thức sao lưu. Việc này dựa trên kiến trúc cấu hình được gọi là
Snitch của Cluster để xác định vị trí của node và các node kề cận. Số lượng bản sao trong
Cassandra gọi là replication factor, các node sao lưu cũng không có vai trò chủ - tớ mà
mang bằng nhau. Số lượng node sao lưu luôn phải nhỏ hơn tổng số node.
Snitch là một bộ phận được cấu hình của Cassandra cluster dùng để định nghĩa việc nhóm
các nhóm trong toàn bộ sơ đồ mạng (có bao gồm nhiều data center). Cassandra sử dụng
thông tin này để định tuyến liên node một cách hiệu quả nhất có thể trong việc tạo chiến
lược sao lưu.
Các chiến lược Sao lưu trong Cassandra :
Chiến lược Đơn giản (Simple Strategy): đây là chiến lược mặc định sau khi tạo keyspace.
Nó đơn giản sẽ chọn một node được xác định là node sao lưu đầu trong phân vùng, các
node sao lưu khác là các node sau nó với việc chạy vòng ring theo chiều kim đồng hồ
Hình 14 : Mô hình sao lưu 1 Data Center
Như ví dụ trên, mỗi dữ liệu sẽ được sao lưu tuần tự vào node kế tiếp trong cluster hoặc
phân vùng.
Chiến lược dựa vào Sơ Đồ Mạng : (Network Topology Strategy) : áp dụng cho dữ liệu
phân bố ở nhiều Data Center và biết được sơ đồ mạng. Do các node cùng một rack có
nguy cơ cùng hỏng cao nên quy tắc chạy vòng theo chiều kim đồng hồ sẽ lựa chọn node
sao lưu tiếp theo khác rack với node sao lưu trước nó
Hình 15 : Mô hình sao lưu nhiều Data Center
e. Các yêu cầu phía máy khách (client request) trong Cassandra :
Tất cả các node trong Cassandra là như nhau. Khi máy khách gửi yêu cầu đọc và ghi và
kết nối tới bất kì node nào trong Cluster, node này sẽ được đóng vai trò làm điều phối
viên theo cho các hoạt động được gửi từ máy khách.

Việc điều phối được hoạt động như là một proxy giữa các ứng dụng máy khách và node
(hoặc các bản sao) chứa dữ liệu đích. Node điều phối sẽ xác định node nào trong vòng sẽ
tiếp nhận yêu cầu dựa trên phân vùng và chiến lược tạo bản sao.
Với việc ghi dữ liệu
Hình 16 : Mô hình GHI
Với việc ghi, node điều phối sẽ gửi yêu cầu ghi tới tất cả các node bản sao chứa hàng
được ghi miễn là node vẫn hoạt động. Việc ghi bản sao sẽ dựa vào cấu hình sao lưu của
hệ thống, ví dụ như hình trên, với một cluster 10 node và cấu hình sao lưu 3 node, khi
máy khách kết nối tới node 10, node 10 sẽ nhận yêu cầu ghi và tìm trong hệ thống đến
node thích hợp (node 7), đồng thời gửi yêu cầu ghi tới 2 node bản sao 1 và 2. Node 7 sau
khi hoàn thành sẽ trả kết quả về cho node điều phối và node điều phối thực hiện trả kết
quả lại cho máy khách.
Trong mô hình nhiều Data Center, mỗi Data Center sẽ chọn một node điều phối, yêu cầu
của máy khách sau khi được nhận bởi node Điều phối của 1 Data Center và được chuyển
tiếp tới các node điều phối của các Data Center khác như hình dưới
Hình 17 : Mô hình GHI nhiều Data Center
Về việc đọc dữ liệu
Hình 18 : Mô hình ĐỌC
Với việc đọc dữ liệu, có 2 cách node điều phối có thể gửi tới node sao lưu : đọc dữ liệu
(read request) gửi trực tiếp và đọc sửa lỗi dữ liệu (read repair request) gửi đằng sau. Số
node sao lưu được gửi yêu cầu đọc dữ liệu phụ thuộc máy khách. Yêu cầu đọc sửa lỗi dữ
liệu được gửi cho các node sao lưu không nhận được yêu cầu đọc trực tiếp để chắc chắn
dữ liệu nhất quán trên tất cả các node sao lưu.

×