ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Mạnh Thắng
ỨNG DỤNG FOUNDATIONDB TRONG VIỆC NÂNG
CAO HIỆU NĂNG XỬ LÝ TRUY VẤN TRỰC TUYẾN
LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN
HÀ NỘI - 2014
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Mạnh Thắng
ỨNG DỤNG FOUNDATIONDB TRONG VIỆC NÂNG
CAO HIỆU NĂNG XỬ LÝ TRUY VẤN TRỰC TUYẾN
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60480104
LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:Tiến sĩ. Nguyễn Ngọc Hóa
HÀ NỘI - 2014
3
LỜI CAM ĐOAN
Tôi xin cam đoan bản luận văn “Ứng dụng FoundationDB trong việc nâng
cao hiệu năng xử lý truy vấn trực tuyến”là công trình nghiên cứu và thử nghiệm
của tôi, tại đơn vị công tác, tham khảo các nguồn tài liệu đã được chỉ rõ trong trích
dẫn và danh mục tài liệu tham khảo. Các nội dung công bố và kết quả trình bày trong
luận văn này là trung thực và chưa từng được ai công bố trong bất cứ công trình nào.
4
LỜI CẢM ƠN
Tôi xin gửi lời cảm ơn tới các thầy, cô Trường Đại học Công nghệ, Đại học
Quốc gia Hà Nội đã tận tình giảng dạy và truyền đạt kiến thức trong suốt khóa học
cao học vừa qua. Xin chân thành cảm ơn TS.Nguyễn Ngọc Hóa, người đã định
hướng đề tài, trực tiếp hướng dẫn và tận tình chỉ bảo tôi trong suốt quá trình thiết kế,
xây dựng và hoàn thiện luận văn này.
Tôi xin chân thành cảm ơn các anh chị, các bạn đồng nghiệp trong phòng Phát
triển phần mềm - Trung tâm Công nghệ thông tin BIDV đã tạo điều kiện cho tôi tìm
hiểu hệ thống và tạo môi trường thử nghiệm.
Tôi xin bày tỏ lòng biết ơn sâu sắc tới gia đình, vợ, con… những người đã luôn
ở bên cạnh, động viên, chia sẻ cùng tôi trong quãng thời gian học cao học cũng như
quá trình thực hiện luận văn cao học.
5
MỤC LỤC
LỜI CAM ĐOAN ....................................................................................................... 3
LỜI CẢM ƠN ............................................................................................................ 4
MỤC LỤC.................................................................................................................. 5
DANH MỤC CÁC KÝ HIỆU CÁC TỪ VIẾT TẮT ................................................... 8
DANH MỤC CÁC HÌNH VẼ .................................................................................... 9
MỞ ĐẦU.................................................................................................................. 11
CHƯƠNG 1:
1.1
TỔNG QUAN FOUNDATIONDB ................................................ 13
Tổng quan hệ thống xử lý giao tác trực tuyến - OLTP ................................. 13
1.1.1
Hệ thống OLTP..................................................................................... 13
1.1.2
Nguyên tắc thiết kế, xây dựng hệ thống OLTP ...................................... 13
1.2
FoundationDB[4] ........................................................................................ 14
1.2.1
NewSQL[5] .......................................................................................... 14
1.2.2
Key-value store ..................................................................................... 14
1.2.2.1
Chống chịu lỗi ................................................................................ 14
1.2.2.2
Mở rộng theo hướng tuyến tính ...................................................... 16
1.2.2.3
Hỗ trợ mạnh giao tác ACID ............................................................ 16
1.2.2.4
Đa dạng mô hình dữ liệu ................................................................ 18
1.2.3
1.3
Sql Layer .............................................................................................. 21
1.2.3.1
Kiến trúc vật lý ............................................................................... 21
1.2.3.2
Các tính năng chính ........................................................................ 23
1.2.3.3
Tích hợp ORM ............................................................................... 24
Quản trị FoundationDB[4] ........................................................................... 24
1.3.1
Khởi động và dừng ............................................................................... 24
1.3.2
Tập tin Cluster ...................................................................................... 24
1.3.3
Thêm node vào cluster .......................................................................... 25
1.3.4
Loại bỏ node từ cluster.......................................................................... 26
6
1.3.5
Xem thông tin trạng thái cluster ............................................................ 26
1.3.6
Quản lý tập tin trace .............................................................................. 28
1.3.7
Gỡ bỏ .................................................................................................... 28
1.3.8
Nâng cấp ............................................................................................... 28
1.4
Kết luận ....................................................................................................... 29
CHƯƠNG 2: PHÁT TRIỂN ỨNG DỤNG XỬ LÝ GIAO TÁC TRỰC TUYẾN
VỚI FOUNDATIONDB........................................................................................... 30
2.1
Xây dựng ứng dụng với API của FoundationDB[4] ..................................... 30
2.1.1
Mô hình dữ liệu .................................................................................... 30
2.1.2
Quản lý không gian tên ......................................................................... 30
2.1.3
Làm việc với các hàm APIs .................................................................. 30
2.1.4
Cơ bản về giao tác trong FoundationDB ............................................... 30
2.2
Quản trị SQL Layer[4] ................................................................................ 31
2.2.1
Cài đặt SQL layer ................................................................................. 31
2.2.2
Khởi động và dừng dịch vụ trên môi trường windows ........................... 31
2.2.3
Công cụ client ....................................................................................... 33
2.2.4
JVM warmup ........................................................................................ 33
2.2.5
Quản lý phiên người dùng (Managing User Sessions) ........................... 33
2.2.6
Sử dụng tệp tin LOG ............................................................................. 34
2.2.7
Gỡ bỏ SQL Layer.................................................................................. 35
2.2.8
Nâng cấp ............................................................................................... 35
2.3
Xây dựng ứng dụng tích hợp với SQL Layer[4]........................................... 35
2.3.1
Kiểu dữ liệu .......................................................................................... 35
2.3.2
Truy cập với SQL ................................................................................. 36
2.3.2.1
Tạo bảng và truy vấn dữ liệu .......................................................... 37
2.3.2.2
Tạo chỉ mục(index) ........................................................................ 39
2.3.3
Thủ tục và hàm ..................................................................................... 41
2.3.3.1
Functions được xây dựng sẵn của SQL layer .................................. 41
7
2.3.3.2
2.4
Lập trình thủ tục và hàm ................................................................. 44
Kết luận ....................................................................................................... 46
CHƯƠNG 3:
XÂY DỰNG ỨNG DỤNG THỰC NGHIỆM ................................ 46
3.1
Bài toán đặt ra ............................................................................................. 46
3.2
Thiết kế và cài đặt hệ thống thử nghiệm ...................................................... 48
3.2.1
Các mô hình kiến trúc ........................................................................... 48
3.2.1.1
Mô hình hoạt động hiện tại ............................................................. 48
3.2.1.2
Mô hình vật lý hiện tại của hệ thống BIB ....................................... 49
3.2.1.3
Mô hình giải pháp BIDV Online..................................................... 50
3.2.2
Thiết kế cơ sở dữ liệu ............................................................................ 52
3.2.2.1
Thiết kế bảng, khóa, chỉ mục .......................................................... 52
3.2.2.2
Khối lượng dữ liệu ......................................................................... 52
3.2.3
Thiết kế chức năng và giao diện ............................................................ 53
3.2.4
Thiết kế máy chủ vật lý-cluster ............................................................. 59
3.2.5
Cài đặt chương trình ............................................................................. 60
3.3
Đánh giá so sánh FoundationDB và Oracle.................................................. 60
KẾT LUẬN .............................................................................................................. 63
TÀI LIỆU THAM KHẢO ........................................................................................ 64
8
DANH MỤC CÁC KÝ HIỆU CÁC TỪ VIẾT TẮT
ACID
Atomicity, Consistency, Isolation, và Durability
BIB
BIDV Internet Banking
CSDL
Cơ sở dữ liệu
FDB
FoundationDB
JDBC
Java Database Connectivity
KVS
Key-Value Store
ORM
Object-Relational Mapping
OLTP
Online Transaction Processing
RDBMS
Relational database management system
TPS
Transactions Processed per Second
9
DANH MỤC CÁC HÌNH VẼ
Chương 1 : Hình 1: Chức năng của CSDL OLTP ..................................................... 13
Chương 1 : Hình 2: mô hình cluster và các bị lỗi ...................................................... 15
Chương 1 : Hình 3: minh họa về khả năng mở rộng của KVS ................................... 16
Chương 1 : Hình 4: Đa dạng mô hình dữ liệu ........................................................... 18
Chương 1 : Hình 5: mô hình tích hợp ứng dụng với FDB ......................................... 19
Chương 1 : Hình 6: Mô hình logic của KVS ............................................................. 20
Chương 1 : Hình 7: Kiến trúc vật lý đơn giản của SQL layer .................................... 21
Chương 1 : Hình 8: Kiến trúc SQL layer được khuyến nghị ..................................... 22
Chương 1 : Hình 9: Cấu hình cluster cơ bản bao gồm hai nodes ............................... 25
Chương 1 : Hình 10: trạng thái của cluster ................................................................ 27
Chương 2: Hình 1: dịch vụ SQL layer trên window .................................................. 32
Chương 2: Hình 2: ví dụ đánh chỉ mục nhóm ........................................................... 40
Chương 3: Hình 1: Các chức năng chính của hệ thông BIDV Internet Banking ........ 47
Chương 3: Hình 2: Mô hình hoạt động của BIB........................................................ 48
Chương 3: Hình 3: Mô hình vật lý của BIB .............................................................. 49
Chương 3: Hình 4: Mô hình BIDV online................................................................. 50
Chương 3: Hình 5: Mô hình vật lý hệ thống BIDV Online ........................................ 51
Chương 3: Hình 6: thiết kế bảng BIDV Online ......................................................... 52
Chương 3: Hình 7: biểu đồ Usecase BIDV Online .................................................... 53
Chương 3: Hình 8: Màn hình giao diện đăng nhập .................................................... 54
Chương 3: Hình 9: Màn hình chức năng quản lý chi nhánh ...................................... 55
Chương 3: Hình 10: Thêm mới người dùng .............................................................. 56
Chương 3: Hình 11: sửa thông tin người dùng .......................................................... 56
Chương 3: Hình 12: Thêm mới tài khoản cho khách hàng ........................................ 57
10
Chương 3: Hình 13: chức năng kiểm tra tải hệ thống ................................................ 57
Chương 3: Hình 14: chức năng chuyển khoản .......................................................... 58
Chương 3: Hình 15: Chức năng vấn tin tài khoản ..................................................... 58
Chương 3: Hình 16: mô hình cluster FDB của BIDV Online .................................... 60
Chương 3: Hình 17: kết quả cấu hình cluster ............................................................ 60
Chương 3: Hình 18: cấu hình connection pool tomcat .............................................. 61
11
MỞ ĐẦU
Giới thiệu
Trong các hệ thống lớn tài chính – ngân hàng – chứng khoán một ngày phải giải
quyết số lượng truy vấn và giao dịch rất lớn phát sinh trong quá trình tác nghiệp nên
việc đảm bảo tải cho hệ thống là rất quan trọng. Đồng thời các truy vấn và giao dịch
phải đáp ứng tính chính xác và phần lớn trong đó phải đảm bảo về mặt thời gian xử lý
cho kết quả đầu ra gần như trực tuyến hoặc có thể coi là trực tuyến.
Hiện nay, các hệ quản trị CSDL truyền thống như Oracle, MS SQL Server…
không đáp ứng được những dịch vụ có số lượng truy vấn đồng thời lớn [1-2]. Hơn
nữa, các mô hình quản trị CSDL truyền thống này ban đầu đều được xây dựng trên
các hệ thống máy tính đơn vi xử lý (CPU). Vì thế, việc tận dụng các bộ vi xử lý đa
nhân hay đa vi xử lý mới chỉ được quan tâm ở mức hệ điều hành. Có rất nhiều cách
tiếp cận mới theo hướng NoSQL để giải quyết những vấn đề đặt ra ở trên [2-3]. Hệ
quản trị CSDL NoSQL có khả năng tận dụng rất tốt phần cứng kèm theo khả năng mở
rộng, tăng cường năng lực xử lý đơn giản nhưng lại vấp phải một số khiếm khuyết
như: khó tiếp cận đối với những nhà phát triển chưa có kinh nghiệm, một số hệ quản
trị CSDL NoSQL không hỗ trợ thực thi các giao tác. Do đó từ đầu năm 2011 một lớp
hệ quản trị CSDL mới ra đời kết hợp các điểm mạnh của các hệ quản trị NoSQL và
SQL truyền thống. Lớp hệ quản trị CSDL này được gọi là NewSQL, đều hỗ trợ mô
hình dữ liệu quan hệ và sử dụng ngôn ngữ truy vấn SQL. Một trong số đó là
FoundationDB được thiết kế để hoạt động trên cluster, nhà phát triển có thể truy vấn,
tương tác với FoundationDB thông qua ngôn ngữ SQL nhằm tăng khả năng tận dụng
phần cứng tối đa và tăng khả năng tương thích với các ứng dụng đã xây dựng trước
đây có truy vấn CSDL thông qua SQL do đó cải thiện hiệu năng xử lý giao tác trực
tuyến.
Mục tiêu của luận văn
Với vấn đề đã được đặt ra như ở phần mở đầu, mục tiêu của luận văn này bao
gồm:
- Nghiên cứu, tìm hiểu được cách thiết kế hệ thống OLTP trong việc tối ưu xử
lý các giao tác trên những hệ thống đa vi xử lý.
- Nghiên cứu, tìm hiểu hệ quản trị CSDL FoundationDB áp dụng vào bài toán
cụ thểQuản lý giao dịch chuyển tiền BIDV online. Với mục đích khắc phục toàn
diện thực trạng của hệ thống phần mềm “BIDV internet banking” như :
Khó khăn khi đáp ứng yêu cầu nhiều giao dịch trên giây (TPS) .
12
Hệ thống không ổn định và thường xuyên quá tải khi lượng giao dịch
đồng thời lớn.
Chưa tận dụng được lợi thế phần cứng máy chủ đa nhân, cluster.
- Phát triển thử nghiệm ứng dụng và so sánh đánh giá hiệu năng với một số hệ
quản trị truyền thống.
Bố cục của luận văn
Mở đầu: Giới thiệu về đề tài luận văn, tính thiết thực của đề tài và tổ chức của
luận văn.
Chương 1. Tổng quan về FoundationDB
-
Các yêu cầu về thiết kế hệ thống OLTP.
-
Giới thiệu về FoundationDB.
o Key-Value Store
o SQL Layer
-
Quản trị FoundationDB
o Cài đặt cấu hình FoundationDB trên cluster
o Sao lưu và khôi phục.
Chương 2. Phát triển ứng dụng xử lý giao tác trực tuyến với FoundationDB
-
Xây dựng ứng dụng với API của FoundationDB
-
Xây dựng ứng dụng tích hợp với SQL Layer
-
Quản trị ứng dụng với SQL Layer
Chương 3. Thực nghiệm
-
Bài toán đặt ra: Quản lý giao dịch chuyển tiền-BIDV Online.
-
Thiết kế và cài đặt hệ thống website.
-
Kết quả thu được của hệ thống.
-
Xây dựng công cụ đánh giá hiệu năng xử lý so với các hệ cơ sở dữ liệu
truyền thống
Kết luận chung và những hướng phát triển tiếp theo: Tổng kết những kết quả
đạt được qua quá trình hoàn thành đề tài luận văn; đề ra hướng phát triển, hoàn thiện
cho đề tài nghiên cứu.
13
CHƯƠNG 1:
TỔNG QUAN FOUNDATIONDB
1.1 Tổng quan hệ thống xử lý giao tác trực tuyến - OLTP
1.1.1 Hệ thống OLTP
Online transaction processing – OLTP là một lớp hệ thống thông tin nhằm mục
tiêu thuận tiện trong việc quản lý các ứng dụng hướng giao tác, thường dùng để nhập
dữ liệu và xử lý các giao tác. Các ứng dụng xử lý giao tác trực tuyến có thông lượng
cao, chuyên thêm và sửa vào hệ quản trị CSDL. Các ứng dụng này thường có rất
nhiều người dùng đồng thời. Mục tiêu của các ứng dụng OLTP là sẵn sàng, nhanh,
đồng thời và có thể phục hồi. Các hệ thống OLTP thường thấy hiện nay như đặt chỗ
trực tuyến, mua hàng trực tuyến, ngân hàng điện tử, sàn giao dịch chứng khoán. Hầu
hết các công ty, tổ chức này đều xây dựng một hệ quản trị CSDL hỗ trợ OLTP.
Chương 1 : Hình 1: Chức năng của CSDL OLTP
1.1.2 Nguyên tắc thiết kế, xây dựng hệ thống OLTP
Để xây dựng một hệ thống OLTP, nhà thiết kế phải dự đoán, đánh giá được số
lượng người dùng đồng thời mà không làm ảnh hưởng đến hiệu năng chung của hệ
thống. Các yếu tố sau đây có ảnh hưởng quyết định đến hiệu năng của một hệ thống
OLTP.
14
1.2 FoundationDB[4]
1.2.1 NewSQL[5]
NewSQL là một lớp CSDL quan hệ hướng đến việc cung cấp khả năng mở
rộng hiệu năng giống như hệ CSDL NoSQL phục vụ cho nhu cầu đọc ghi lớn của hệ
thống OLTP trong khi vẫn đảm bảo tính ACID của các hệ CSDL quan hệ truyền
thống.
Thuật ngữ này lần đầu tiên được sử dụng bởi 451 Group analyst Matthew
Aslett trong một bài báo năm 2011 nghiên cứu và thảo luận về sự phát triển của hệ
thống CSDL mới như một thách thức cho các nhà cung cấp. Nhiều hệ thống doanh
nghiệp cần có khả năng mở rộng quy mô nhưng không thể sử dụng NoSQL do chúng
không cung cấp đầy đủ các yêu cầu về quan hệ dữ liệu và giao tác. Các giải pháp
trước đây thường là mua một máy chủ CSDL mạnh hơn hoặc phát triển phần mềm lớp
giữa tùy chỉnh và phân phối các truy vấn trên các nút máy chủ CSDL quan hệ truyền
thống. Cả hai phương pháp này đều tốn kém nên không nhiều doanh nghiệp lựa chọn.
Do đó trong bài báo này Matthew Aslett đã thảo luận về cách NewSQL khởi đầu và
đang sẵn sàng để thách thức các nhà cung cấp thương mại đặc biệt là Oracle.
Mặc dù các hệ thống NewSQL khác nhau rất nhiều trong kiến trúc của chúng
nhưng có hai đặc tính chung là tất cả đều hỗ trợ các mô hình dữ liệu quan hệ và sử
dụng ngôn ngữ truy vấn SQL. Những ứng dụng mà NewSQL hướng tới có số lượng
lớn giao tác có thời gian sống ngắn, tác động đến một nhóm dữ liệu nhỏ thông qua các
chỉ mục (index), và có tính lặp lại giao tác với các giá trị đầu vào khác nhau. Một
trong những hệ CSDL NewSQL đầu tiên là H-Store.
1.2.2 Key-value store
Đây là lớp nằm ở dưới cùng trong thiết kế của FoundationDB, như một nền
tảng lưu trữ. Key-value Store là một CSDL kết hợp khả năng mở rộng(scalability),
chống lỗi(fault-tolerance), có hiệu năng rất tốt và hỗ trợ mạnh mẽ giao tác ACID đa
khoa (multi-key ACID transactions).
1.2.2.1 Chống chịu lỗi
Khả năng chịu lỗi được đặc trưng bởi số lượng, thời gian, và khả năng dữ liệu
và dịch vụ bị mất có thể xảy ra.
15
Chương 1 : Hình
H
2: mô hình cluster và các bị lỗi
Phân tán và nhân bản
Key-Value Store đượ
ợc xây dựng trên kiếnn trúc phân tán không chia
sẻ(distributed shared-nothing).
nothing). Ki
Kiến trúc này mang lại rất nhiều ưu điểm
m so với
v việc
hệ thống chỉ chạy trên mộtt máy tính tránh trường hợp hệ thống gặp lỗii khi máy tính
vật lý xảy ra sự cố.. KVS chia dữ
d liệu thành nhiều phầnn và phân tán chúng thành nhiều
nhi
bản sao ra các máy chủ lưu trữ
ữ khác nhau, các máy chủ này kết nối mạng
ng vvới nhau.
KVS có thể chịu đượcc sự hỏng hóc của một máy tính với dịch vụ bị gián đoạn
trong tối đa vài giây và dữ liệu
u được
đư bảo toàn, dù vậy thì thông lượng củaa hhệ thống sẽ
bị ảnh hưởng. Mộtt máy tính b
bị hỏng hóc là lỗi rất phổ biến, do đó khả năng ch
chịu lỗi
này là rất cần thiết.
Chiến lược phân tán dữ
ữ liệu
Trong trường hợp nhiềều máy tính bị hỏng hóc, KVS vẫn có thể giao ddịch với
khả năng dịch vụ có thể bị mấất, gián đoạn. Tuy nhiên dữ liệu bị mấtt có th
thể xảy ra do
chỉ có một số lượng hữu hạn
n các bản
b sao của các phần dữ liệu được tạoo ra trên khu
vực lưu trữ của các máy tính.
Bất kỳ một hệ thống
ng phân tán nào đều
đ phải đối mặt với mộtt xác su
suất mất mát
dữ liệu.
u. VD: khi chúng ta có m
một hệ thống cluster bao gồm
m 40 máy tính, ddữ liệu được
chia ra một triệu phần và mỗii ph
phần được sao chép ở bốnn máy tính, khi 4 máy tính đó
cùng bị lỗi thì khả năng mấtt mát dữ
d liệu là có thể xảy ra. Qua tính toán chúng ta có
một con số khả năng xảy ra lỗii như vậy
v rất thấp khoảng mười phần triệu.
Giả định
Chúng ta có thể nhận
n ra rrằng các máy tính có xu hướng xảy ra lỗỗi cùng nhau
như các máy chủ chung mộtt k
kết nối mạng, nguồn điện. KVS có thể chọn
n các máy tính
để phân tán các bản
n sao các mảnh
m
dữ liệu sao cho khả năng xảy ra việcc các máy tính
bị lỗi cùng nhau là thấp nhất.
16
Các loại lỗi khác
Có rất nhiều các loại lỗ
ỗi, hỏng hóc khác nhau như: đầy đĩa cứng
ng lưu trữ,
tr mạng
kết nối lỗi, hiệu suấtt máy tính bị
b suy hao, lỗi hệ điều hành…KVS đượcc xây dựng
d
và
thử nghiệm trên môi trường
ng giả
gi lập các loại lỗi này để nâng cao khả năng ch
chịu lỗi và
đảm bảo an toàn cho dữ liệu.
1.2.2.2 Mở rộng theo hướng
ng tuy
tuyến tính
Do sử dụng kiến
n trúc phân tán không chia sẻ
s nên KVS có thể mở rộộng đơn giản
bằng việc thêm máy vậtt lý vào cluster chứ
ch không phải chỉ mở rộng bằng
ng cách tăng kh
khả
năng của một máy. Khả năng mở
m rộng là một thuộc tính cần thiếtt cho m
một ứng dụng
thành công. Nó cũng là mộtt trong ba thành ph
phần ảnh hưởng lẫnn nhau và ảnh hưởng
đến hiệu năng chung của hệ thống
th
bao gồm: Hiệu năng cao, Sự mở rộng
ng, Sự mềm
dẻo.
Chương 1 : H
Hình 3: minh họa về khả năng mở rộng của KVS
Hiệu năng cao
Khả năng đạt được hiệu
u năng cao nhất
nh cho một cấu hình.
Sự mở rộng
Khả năng cung cấp dịch
ch vvụ hiệu quả ở các mức độ mở rộng
ng khác nhau
nhau.
Sự mềm dẻo
Khả năng thích ứng
ng và thay đđổi quy mô đơn giản.
1.2.2.3 Hỗ trợ mạnh
nh giao tác ACID
@fdb
@fdb.transactional
def example(tr):
# Read two values from the database
a = tr.get('a')
17
b = tr.get('b')
# Write two key-value pairs to the database
tr.set('c', a+b)
tr.set('d', a+b)
example(db)
Giao tác ACID là mô hình lập trình đơn giản và mạnh mẽ nhất để giải quyết
các vấn đề liên quan đến tính đồng thời. KVS là một trong số ít CSDL phân tán cung
cấp đầy đủ giao tác ACID với hiệu năng cao.
Giao tác
Một giao tác được định nghĩa là một tập các thao tác đọc ghi vào CSDL được
xử lý như một thao tác với một vài thuộc tính quan trọng. Thứ nhất tất cả các thao tác
đọc đều đọc vào một ảnh của CSDL(không thấy được thay đổi của dữ liệu khi có các
giao tác thực thi đồng thời). Thứ hai các thao tác ghi trong cùng một giao tác thì tất cả
đều thành công hoặc tất cả đều thất bại. Cuối cùng khi giao tác hoàn thành(commit)
những thay đổi dữ liệu do thao tác ghi đều được lưu trữ vĩnh viễn vào CSDL.Mọi ứng
dụng đều có nhu cầu hỗ trợ nhiều người dùng đồng thời, nên cần được xây dựng để sử
dụng các giao tác có đầy đủ tính ACID. Giao tác ngày càng đóng vai trò quan trọng
trong sự phát triển của NoSQL.
Giao tác giải quyết sự đồng thời
Sự đồng thời (Concurrency) xảy ra khi có nhiều người dùng, hay một phần của
ứng dụng đọc và ghi vào cùng một dữ liệu cùng một lúc. Giao tác giúp cho việc quản
lý sự đồng thời đơn giản hơn cho nhà phát triển. Thuộc tính chính của giao tác dễ đạt
được là tính cô lập (Isolation). Khi một hệ thống đảm bảo rằng giao tác thực sự được
cô lập, nhà phát triển có thể coi mỗi giao tác là thực thi tuần tự dù thực sự chúng đang
thực thi đồng thời.Một vài hệ thống chỉ cung cấp các giao tác ACID cho một tập hạn
chế các chế độ hoạt động, thông thường bị giới hạn bởi cấu trúc của mô hình dữ liệu.
Tuy nhiên, sức mạnh thật sự của giao tác nằm ở chỗ chúng có thể được định nghĩa bởi
nhà phát triển trên bất cứ tập yếu tố dữ liệu nào. Một nhà phát triển làm việc với KVS
có thể định nghĩa các giao tác đọc và ghi bất cứ số lượng bộ key-value. Khi nhà phát
triển có thể tự do định nghĩa các giao tác mà không gặp rào cản nào, họ có thể sử dụng
giao tác như các khối cơ bản của ứng dụng.
Giao tác tăng khả năng trừu tượng
Giao tác cho phép xây dựng các lớp trừu tượng một cách đơn giản và hiệu quả
cung cấp khả năng mở rộng để hỗ trợ đa dạng mô hình dữ liệu. Mô hình dữ liệu được
18
tối ưu hóa cho biểu đồ, tài liệệu, dữ liệu tổ chức theo cột, hay dữ liệuu quan hhệ đều có
thể được cài đặt ở các lớp
p bên trên ccủa KVS. Trong hầu hết các trường
ng hhợp, một đối
tượng dữ liệu đơn lẻ trong m
một mô hình cao cấp hơn sẽ được sắp xếpp trên nhi
nhiều bộ
khóa-giá trị. Giao
ao tác làm cho nó đơn giản
gi để thực hiện các ánh xạ này bbằng cách
đóng gói các thao tác cập nhậật vào các bộ khóa –giá trị trong các đơn vvị nguyên tử
(Atomic units).Những lợii ích mà giao tác mang lại
l còn lớn hơn là một lự
ựa chọn linh
hoạt về mô hình dữ liệu cấp
p cao. Chúng có thể
th cho phép một đại diện dữ li
liệu hiệu quả
hơn trong một mô hình cụ thể..
1.2.2.4 Đa dạng mô hình dữ li
liệu
Chương 1 : Hình
H
4: Đa dạng mô hình dữ liệu
Kiến trúc lớp độcc đáo của
c KVS tách riêng công nghệ lưu trữ và mô hình dữ
liệu của nó. Điều
u này cho phép các nhà phát triển
tri tạo ra các lớp mà họ ccần trong khi
vẫn tiếp tục lưu trữ dữ liệu
u trong m
một hệ thống có khả năng mở rộng.
19
Chương 1 : Hình 5: mô hình tích hợp ứng dụng với FDB
Lớp ứng dụng có thể thao tác trực tiếp với KVS thông qua api.
SQL layer hoặc Your Layer mô hình dữ liệu mới có khả năng tương thích với
hệ thống có sẵn hoặc phục vụ như một framework.
Lớp dưới cùng là KVS tất cả dữ liệu được lưu trữ ở đây.
20
Chương 1 : Hình 6: Mô hình logic của KVS
- Xem thêm -