ĐẠI HỌC QUỐC GIA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN
HOÀNG TRÍ NHÂN
CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ (IN-MEMORY DB)
VÀ ỨNG DỤNG TRONG HỆ THỐNG PHẦN MỀM
CẦN XỬ LÝ CƠ SỞ DỮ LIỆU HIỆU NĂNG CAO
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội, 2013
ĐẠI HỌC QUỐC GIA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN
HOÀNG TRÍ NHÂN
CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ (IN-MEMORY DB)
VÀ ỨNG DỤNG TRONG HỆ THỐNG PHẦN MỀM
CẦN XỬ LÝ CƠ SỞ DỮ LIỆU HIỆU NĂNG CAO
Ngành: Công nghệ thông tin
Chuyên ngành: Quản lý hệ thống thông tin
Mã số: Chuyên ngành đào tạo thí điểm
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
HƢỚNG DẪN KHOA HỌC: TS. ĐINH VĂN DŨNG
Hà Nội, 2013
1
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Các số liệu đã nêu
trong luận văn có nguồn gốc rõ ràng, kết quả của luận văn là trung thực và chưa được
ai công bố trong bất kỳ công trình nào khác.
Tác giả Luận văn
Hoàng Trí Nhân
2
LỜI CẢM ƠN
Để hoàn thành luận văn này, bên cạnh sự nỗ lực của bản thân, tôi đã nhận được
rất nhiều sự giúp đỡ, động viên và hướng dẫn của các thầy cô giáo, bạn bè, đồng
nghiệp và gia đình trong suốt khoá học cũng như thời gian nghiên cứu đề tài luận văn.
Tôi xin bày tỏ lòng biết ơn chân thành tới Tiến sĩ Đinh Văn Dũng – Viện CNTT
– ĐHQG HN, người đã tận tình hướng dẫn và giúp đỡ tôi trong quá trình nghiên cứu
và viết đề tài.
Tôi xin chân thành cảm ơn các thầy cô trong Hội đồng đã cho tôi những lời
nhận xét cũng như những ý kiến đóng góp quý báu, giúp tôi hoàn thiện luận văn này.
Tôi xin cám ơn các thầy cô giáo Viện Công nghệ thông tin – ĐH Quốc Gia Hà
Nội về những bài giảng thú vị và hữu ích; cảm ơn bạn bè đồng nghiệp về sự cổ vũ tinh
thần lớn lao; cảm ơn gia đình đã có sự trợ giúp về mọi mặt.
Đây là một đề tài liên quan đến lĩnh vực Cơ sở dữ liệu trên bộ nhớ, lĩnh vực còn
khá mới mẻ ở Việt Nam. Vì vậy, luận văn không thể tránh khỏi thiếu sót và hạn chế
nhất định. Tôi rất mong nhận được ý kiến đóng góp của mọi cá nhân, tổ chức quan tâm
đến đề tài, để đề tài được hoàn thiện hơn nữa.
Xin chân thành cảm ơn!
Hà Nội, tháng 12 năm 2013
3
MỤC LỤC
LỜI CAM ĐOAN................................................................................................................ 1
LỜI CẢM ƠN ..................................................................................................................... 2
MỤC LỤC ........................................................................................................................... 3
DANH MỤC CÁC TỪ VIẾT TẮT ................................................................................... 4
DANH MỤC BẢNG, BIỂU ............................................................................................... 5
DANH MỤC HÌNH VẼ...................................................................................................... 6
MỞ ĐẦU .............................................................................................................................. 7
Chƣơng 1: CƠ SỞ LÝ LUẬN VỀ CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ ...................... 10
I.1. Tình hình nghiên cứu IMDB ............................................................................... 10
I.2. Nhu cầu thực tế và khả năng áp dụng .................................................................. 14
I.3. Kết luận chương 1 ............................................................................................... 15
Chƣơng 2: CƠ SỞ KHOA HỌC VỀ CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ ................. 16
II.1. Khái niệm IMDB ................................................................................................ 16
II.2. Các vấn đề kỹ thuật của IMDB .......................................................................... 16
II.3. So sánh với các công nghệ cạnh tranh ............................................................... 25
II.4. Ưu nhược điểm của IMDB ................................................................................. 29
II.5. Kết luận chương 2 .............................................................................................. 30
Chƣơng 3: CÁC SẢN PHẨM CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ ............................. 31
III.1. Các sản phẩm thương mại ................................................................................. 31
III.2. Các sản phẩm mã nguồn mở ............................................................................. 41
III.3. So sánh các sản phẩm ....................................................................................... 43
III.4. Kết luận chương 3 ............................................................................................. 45
Chƣơng 4: THỬ NGHIỆM CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ................................. 46
IV.1. Tổng quát lớp bài toán áp dụng ........................................................................ 46
IV.2. Mô hình áp dụng ............................................................................................... 47
IV.3. Thử nghiệm và kết quả ..................................................................................... 50
IV.4. Kết luận chương 4............................................................................................. 58
KẾT LUẬN VÀ HƢỚNG NGHIÊN CỨU TIẾP THEO .............................................. 59
1. Kết luận .................................................................................................................. 59
2. Hướng nghiên cứu tiếp theo................................................................................... 59
TÀI LIỆU THAM KHẢO ................................................................................................ 60
PHỤ LỤC .........................................................................................................................P-1
1. Phụ lục 1 – Cài đặt cấu hình Oracle TimesTen ................................................... P-1
2. Phụ lục 2 – Một số lệnh quản trị TimesTen cơ bản ........................................... P-13
3. Phụ lục 3 – Kết nối tới TimesTen bằng Java ..................................................... P-14
4
DANH MỤC CÁC TỪ VIẾT TẮT
Viết tắt
Viết đầy đủ
Ý nghĩa
IMDB
In-memory database
Cơ sở dữ liệu trên bộ nhớ
DB
Database
Cơ sở dữ liệu
DBMS
Database Management System
Hệ quản trị cơ sở dữ liệu
CNTT
Công nghệ thông tin
Công nghệ thông tin
CSDL
Cơ sở dữ liệu
Cơ sở dữ liệu
5
DANH MỤC BẢNG, BIỂU
Bảng II.1 – Bảng so sánh CSDL dựa trên ổ cứng và IMDB ......................................... 16
Bảng III.1 – Bảng so sánh đặc điểm chức năng các phần mềm IMDB......................... 43
Bảng III.2 – Bảng so sánh hiệu năng các phần mềm IMDB ......................................... 45
Bảng IV.1 – Bảng thống kê thời gian xử lý một bản ghi cước...................................... 55
Bảng IV.2 – Lựa chọn TimesTen .................................................................................. 55
Bảng IV.3 – Lựa chọn tính năng TimesTen .................................................................. 56
Bảng IV.4 – So sánh response time giữa TimesTen và Oracle của CC ........................ 57
Bảng IV.5 – So sánh response time giữa TimesTen và Oracle của Rating ................... 58
6
DANH MỤC HÌNH VẼ
Hình II.1 – Kiến trúc disk-based RDB ..........................................................................18
Hình II.2 – Kiến trúc IMDB ..........................................................................................20
Hình II.3 – So sánh mô hình xử lý SQL của disk-based DB và IMDB ........................21
Hình II.4 – Mô hình chung tính năng Replication ........................................................25
Hình II.5 – Luồng dữ liệu luân chuyển trong DBMS truyền thống ..............................26
Hình II.6 – Hadoop và Hbase ........................................................................................28
Hình III.1 – Ví dụ cache grid.........................................................................................32
Hình III.2 – Ví dụ cache group ......................................................................................33
Hình III.3 – Kiến trúc TimesTen IMDB .......................................................................34
Hình III.4 – Kiến trúc IBM solidDB .............................................................................36
Hình III.5 – Kiến trúc mức cao của SQLServer 2014 ...................................................40
Hình III.6 – Hiệu năng Oracle TimesTen ......................................................................44
Hình III.7 – Hiệu năng IBM solidDB ............................................................................45
Hình IV.1 – Mô hình hệ thống phần mềm thông thường ..............................................47
Hình IV.2 – Mô hình hệ thống phần mềm sử dụng IMDB ...........................................49
Hình IV.3 – Kết hợp CSDL truyền thống và IMDB Cache .........................................49
Hình IV.4 – Mô hình CC trước và sau khi áp dụng TimesTen .....................................57
Hình IV.5 – Mô hình Rating trước và sau khi áp dụng TimesTen ................................58
7
MỞ ĐẦU
1. Sự cấp thiết của đề tài
Sự phát triển với tốc độ rất nhanh của công nghệ thông tin bao gồm cả phần
cứng, phần mềm và hạ tầng mạng (Internet, LAN, WAN…) đã làm thay đổi bộ mặt và
hình thức kinh doanh trên quy mô toàn thế giới. Giờ đây hầu hết các quy trình kinh
doanh đều được tự động hóa, công nghệ thông tin hóa một cách tối đa. Các hệ thống
công nghệ thông tin đang là xương sống của những tập đoàn, tổ chức kinh doanh từ
nhỏ đến lớn, và khi việc kinh doanh phát triển hơn (nhiều khách hàng hơn, nhiều lĩnh
vực hơn, tinh vi hơn) nhưng cũng nhiều cạnh tranh hơn, những công ty tổ chức này
yêu cầu xây dựng những hệ thống phần mềm ngày càng lớn và phức tạp, nhưng vẫn
phải đáp ứng những yêu cầu về hiệu năng. Để đáp ứng yêu cầu này, ngành công nghệ
thông tin cũng đã có những bước phát triển nhanh chóng: phần cứng rẻ hơn, nhanh
hơn, băng thông mạng lớn hơn, các công cụ lập trình tiện dụng hơn, hiệu quả hơn,…
Nhưng thật không may có một thành phần quan trọng của các hệ thống công nghệ
thông tin là Cơ sở dữ liệu truyền thống lại không có được những phát triển ấn tượng
như vậy. Khi xây dựng những hệ thống lớn với số lượng dữ liệu cũng như số giao dịch
lớn, Cơ sở dữ liệu truyền thống (dựa trên ổ đĩa cứng) trở thành điểm nghẽn ảnh hưởng
không nhỏ đến hiệu năng của toàn bộ hệ thống. Thực trạng này đặt ra những yêu cầu
cần tìm ra những phương pháp, hướng đi mới cho hệ thống Cơ sở dữ liệu. Tại Việt
Nam, yêu cầu này càng trở nên cấp thiết hơn bao giờ hết khi hệ thống công nghệ thông
tin ngày càng đóng vai trò quan trọng trong quy trình hoạt động kinh doanh và thành
công của doanh nghiệp, số lượng các doanh nghiệp tổ chức ra đời ngày càng nhiều
trong môi trường kinh doanh cạnh tranh hơn, và chủ trương của Nhà nước về phát
triển khoa học công nghệ phục vụ sự phát triển chung của đất nước.
Để giải quyết vấn đề này, hiện cũng đã có các nghiên cứu thử nghiệm nhằm làm
tăng tốc độ truy vấn dữ liệu. Từ cơ sở tốc độ truy vấn của ổ cứng chậm hơn chip nhớ
flash, chip nhớ chậm hơn bộ nhớ chính (RAM), một hướng đi là đổi phương tiện lưu
trữ dữ liệu của CSDL từ ổ cứng sang SSD (chíp nhớ flash) hoặc RAM disk (giả lập ổ
cứng thành RAM), tốc độ truy vấn đã được cải thiện. Một hướng đi khác là In-memory
database (IMDB), lưu toàn bộ dữ liệu trong bộ nhớ chính. Kết quả so sánh giữa cơ sở
dữ liệu trên ổ cứng, trên SSD, trên bộ nhớ chính đã cho thấy sử dụng cơ sở dữ liệu trên
bộ nhớ là một hướng đi đúng đắn. Cơ sở dữ liệu trên bộ nhớ (In-memory database) là
cơ sở dữ liệu quan hệ dựa trên bộ nhớ, bỏ qua các thao tác truy cập ổ đĩa cứng bằng
cách lưu trữ và xử lý dữ liệu ngay trên bộ nhớ chính. Nó còn được gọi với các tên khác
như Main memory database (cơ sở dữ liệu bộ nhớ chính) hoặc real-time database (cơ
sở dữ liệu thời gian thực). Khác biệt cơ bản giữa Cơ sở dữ liệu trên bộ nhớ với cơ sở
dữ liệu truyền thống là nó sử dụng bộ nhớ chính (RAM) để lưu trữ dữ liệu. Khi đó tốc
độ truy cập không chỉ được cải thiện vì tốc độ đọc/ghi của RAM nhanh hơn mà còn vì
kiến trúc của hệ thống CSDL đơn giản hơn rất nhiều, cũng như không cần các cơ chế
8
buffer, không cần liên tục copy dữ liệu cache từ ổ cứng lên RAM, đồng thời các thuật
toán tối ưu câu truy vấn, tổ chức dữ liệu, chỉ mục cũng được tối ưu hơn.
Hiện nay, các nhà cung cấp giải pháp lưu trữ dữ liệu hàng đầu thế giới cũng đang
hướng về giải pháp Cơ sở dữ liệu trên bộ nhớ để cải thiện tốc độ truy cập dữ liệu. Điển
hình phải kể đến Oracle với sản phẩm Oracle TimesTen, IBM với sản phẩm IBM
solidDB. Ngoài ra, các công ty nhỏ và cộng đồng mã nguồn mở cũng tham gia mạnh
mẽ vào việc nghiên cứu phát triển và sử dụng cơ sở dữ liệu trên bộ nhớ. Tại Việt Nam,
chưa có nhiều nghiên cứu, bài viết chính thống về Cơ sở dữ liệu trên bộ nhớ, chủ yếu
là các thông tin trên một số diễn đàn công nghệ thông tin, các nghiên cứu toàn diện và
chuyên sâu lại càng hiếm. Từ đó đặt ra yêu cầu cấp thiết và thực tế là cần có một
nghiên cứu chuyên sâu và toàn diện về Cơ sở dữ liệu trên bộ nhớ: kiến trúc, đặc điểm
chức năng, ưu nhược điểm, cũng như cách sử dụng chúng sao cho hiệu quả.
2. Mục tiêu nghiên cứu
- Tìm hiểu hiện trạng, tình hình nghiên cứu Cơ sở dữ liệu trên bộ nhớ
- Nghiên cứu kiến thức cơ sở của Cơ sở dữ liệu trên bộ nhớ: khái niệm, kiến
trúc, đặc điểm tính năng
- Nghiên cứu ưu nhược điểm của Cơ sở dữ liệu trên bộ nhớ, các sản phẩm Cơ
sở dữ liệu trên bộ nhớ, so sánh với các công nghệ, sản phẩm cạnh tranh
- Tổng quát hóa các bài toán nghiệp vụ, kiến trúc có thể áp dụng Cơ sở dữ
liệu trên bộ nhớ; Cài đặt thử nghiệm.
- Đưa ra những đề xuất, ý tưởng ứng dụng, cải tiến với Cơ sở dữ liệu trên bộ
nhớ
3. Đối tƣợng, phạm vi và phƣơng pháp nghiên cứu
- Đối tượng nghiên cứu: Cơ sở dữ liệu trên bộ nhớ
- Phạm vi nghiên cứu:
Cơ sở lý luận, kiến thức cơ sở khoa học về Cơ sở dữ liệu trên bộ
nhớ
Điểm khác biệt, lợi thế cạnh tranh của Cơ sở dữ liệu trên bộ nhớ, ưu
nhược điểm
Các sản phẩm Cơ sở dữ liệu trên bộ nhớ
Mô hình áp dụng và kết quả thực nghiệm
- Phương pháp nghiên cứu:
Nghiên cứu lý thuyết: tìm hiểu lý thuyết về Cơ sở dữ liệu trên bộ
nhớ trên các paper, diễn đàn nổi tiếng, các website chính thức của
các công ty có sản phẩm hoặc giải pháp liên quan Cơ sở dữ liệu trên
bộ nhớ.
Thử nghiệm: tổng quát hóa loại bài toán có thể áp dụng Cơ sở dữ
liệu trên bộ nhớ, chọn lựa một sản phẩm Cơ sở dữ liệu trên bộ nhớ
và hệ thống để áp dụng, rút ra kết quả.
9
4. Ý nghĩa khoa học và thực tiễn
- Ý nghĩa khoa học:
Lý thuyết về Cơ sở dữ liệu trên bộ nhớ: khái niệm, mô hình kiến
trúc, ưu nhược điểm
Phân tích so sánh với các công nghệ cạnh tranh, so sánh nội tại các
sản phẩm Cơ sở dữ liệu trên bộ nhớ.
- Ý nghĩa thực tiễn:
Tổng quát hóa lớp bài toán có thể áp dụng Cơ sở dữ liệu trên bộ
nhớ để tăng hiệu năng
Kết quả thử nghiệm
5. Bố cục của luận văn
- Chương 1: Cơ sở lý luận về Cơ sở dữ liệu trên bộ nhớ
- Chương 2: Cơ sở khoa học về Cơ sở dữ liệu trên bộ nhớ
- Chương 3: Các sản phẩm Cơ sở dữ liệu trên bộ nhớ
- Chương 4: Thử nghiệm Cơ sở dữ liệu trên bộ nhớ
- Kết luận và Hướng nghiên cứu tiếp theo
10
Chƣơng 1: CƠ SỞ LÝ LUẬN VỀ CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ
I.1. Tình hình nghiên cứu IMDB
Sự phát triển với tốc độ rất nhanh của CNTT bao gồm cả phần cứng, phần mềm
và hạ tầng mạng (Internet, LAN, WAN…) đã làm thay đổi bộ mặt và hình thức kinh
doanh trên quy mô toàn thế giới. Giờ đây hầu như các quy trình kinh doanh đều được
tự động hóa, tin học hóa một cách tối đa. Các hệ thống CNTT đang là xương sống của
những tập đoàn, tổ chức kinh doanh lớn, và khi việc kinh doanh phát triển (nhiều
khách hàng hơn, nhiều lĩnh vực hơn, tinh vi hơn) những tổ chức này yêu cầu xây dựng
những hệ thống CNTT ngày càng lớn và phức tạp. Để đáp ứng nhu cầu này ngành
CNTT cũng đã có những bước phát triển nhanh chóng: phần cứng rẻ hơn, nhanh hơn,
băng thông mạng lớn hơn, các công cụ lập trình tiện dụng hơn, hiệu quả hơn,… Nhưng
thật không may có một thành phần quan trọng của các hệ thống CNTT là Cơ sở dữ liệu
truyền thống lại không có được những phát triển ấn tượng như vậy. Khi xây dựng
những hệ thống lớn với số lượng giao dịch lớn Cơ sở dữ liệu trên ổ cứng trở thành các
điểm nghẽn ảnh hưởng đến hiệu năng của toàn bộ hệ thống.
Để giải quyết vấn đề này các nhà cung cấp giải pháp lưu trữ dữ liệu hàng đầu
thế giới đều đang hướng về giải pháp Cơ sở dữ liệu trên bộ nhớ (In memory Database IMDB) để cải thiện tốc độ truy cập dữ liệu. Khác biệt cơ bản là IMDB sử dụng bộ nhớ
chính (RAM) để lưu trữ dữ liệu. Khi đó tốc độ truy cập không chỉ được cải thiện vì tốc
độ đọc/ghi của RAM nhanh hơn mà còn vì kiến trúc của hệ thống CSDL đơn giản hơn
rất nhiều, cũng như không cần các cơ chế bộ nhớ đệm, không cần liên tục sao chép dữ
liệu cache từ ổ cứng lên RAM.
Nghiên cứu phát triển IMDB cũng như áp dụng IMDB vào các hệ thống phần
mềm là xu hướng mới nhưng đang phát triển mạnh mẽ tại các công ty phần mềm, tại
nhiều quốc gia, với nhiều lĩnh vực như tài chính, viễn thông, ngân hàng,…
I.1.1. Tình hình nghiên cứu phát triển
Nghiên cứu phát triển hệ thống IMDB thành các sản phẩm đóng gói đang là xu
hướng của một số công ty phần mềm lớn cũng như cộng đồng mã nguồn mở. Dưới đây
liệt kê một số sản phẩm điển hình:
- Oracle TimesTen (sản phẩm thương mại) [4]: là một bộ sản phẩm của
Oracle gồm CSDL TimesTen IMDB, và IMDB Cache để đồng bộ dữ liệu 2
chiều giữa CSDL Oracle truyền thống và TimesTen IMDB. TimesTen
IMDB là một cơ sở dữ liệu tối ưu hóa dựa trên bộ nhớ, giúp các ứng dụng ở
các lĩnh vực khác nhau đạt được hiệu năng cao với thời gian đáp ứng
(response time) rất nhỏ và thông lượng (throughput) rất lớn. Được triển khai
ở tầng ứng dụng, TimesTen nằm hoàn toàn trong bộ nhớ chính, nhưng vẫn
có các cơ chế lưu trữ dữ liệu ra ổ đĩa cứng nhằm đảm bảo an toàn dữ liệu.
Ứng dụng truy cập dữ liệu trong CSDL TimesTen thông qua giao tiếp SQL
chuẩn. TimesTen cũng có cơ chế đảm bảo tính sẵn sàng cao bằng tính năng
Replication.
11
-
IBM SolidDB (sản phẩm thương mại) [10], [11]: là một bộ sản phẩm của
IBM, gồm solidDB IMDB và solidDB Universal Cache. IBM solidDB
IMDB là một cơ sở dữ liệu quan hệ trên bộ nhớ với đầy đủ tính năng, cung
cấp tốc độ và tính sẵn sàng cao, giúp thỏa mãn yêu cầu về hiệu năng và độ
tin cậy cho các ứng dụng thời gian thực. Ứng dụng kết nối để truy cập dữ
liệu trong solidDB IMDB thông qua giao tiếp SQL chuẩn. solidDB cũng có
cơ chế hot-standby để đảm bảo tính sẵn sàng cao. SolidDB universal cache
giúp đồng bộ dữ liệu từ một CSDL truyền thống tới solidDB IMDB.
- McObject eXtremeDB (sản phẩm thương mại) [13]: là một bộ sản phẩm của
McObject, gồm eXtremeDB IMDB là một cơ sở dữ liệu trên bộ nhớ dùng
cho các ứng dụng thời gian thực và cho các ứng dụng nhúng như set-top
box, thiết bị viễn thông, thiết bị điện tử,… Ngoài ra, bộ sản phẩm còn gồm
các sản phẩm khác như eXtremeDB fusion, Cluster, HA, Transaction
Logging.
- H2 IMDB (sản phẩm nguồn mở) [14]: một CSDL trên bộ nhớ gọn nhẹ, hỗ
trợ JDBC API, cho phép chạy ở chế độ embeded hoặc server, hỗ trợ SQL
chuẩn.
- HyperSQL (sản phẩm nguồn mở) [15]: là một CSDL được viết bằng java.
Nó cung cấp một database engine nhỏ gọn, nhanh, đa luồng, hỗ trợ cơ chế
kết nối embeded và server. Nó cũng có các công cụ dòng lệnh SQL mạnh
mẽ, và các công cụ có giao diện.
Tại Việt Nam, việc nghiên cứu phát triển một sản phẩm CSDL trên bộ nhớ chưa
được công ty, doanh nghiệp nào thực hiện. Việc sử dụng một hệ thống IMDB cũng
còn rất ít. Các giải pháp tăng cường hiệu năng hệ thống vẫn chỉ dừng lại ở mức tối ưu
hóa CSDL hiện tại (chỉ mục, quy hoạch bảng biểu,…), hoặc cao hơn là cache dữ liệu
cần thiết lên bộ nhớ, bằng cách sử dụng hashmap chẳng hạn.
I.1.2. Tình hình sử dụng
Việc lựa chọn sử dụng IMDB cũng ngày càng được các công ty ở các lĩnh vực
quan tâm sử dụng nhằm tăng hiệu năng hệ thống. Dưới đây là một số ví dụ:
- Công ty Dell với hệ thống Sale, CustomerCare và Hỗ trợ kỹ thuật rất lớn,
lượng truy cập CSDL để lấy thông tin mặt hàng, tình trạng,… là rất lớn.
Dell đã sử dụng Oracle TimesTen IMDB để làm giảm thời gian truy vấn dữ
liệu, tăng hiệu năng và khả năng đáp ứng cho hệ thống.
- Công ty tài chính China Finance Online có hai website với khoảng 11 triệu
người dùng. Các website này cung cấp các thông tin về chứng khoán, cổ
phiếu, tài chính,…mới nhất, độ trễ dưới ba giây. Nó đòi hỏi phải đáp ứng
lượng lớn truy cập với thời gian đáp ứng nhanh. China finance online đã sử
dụng Oracle TimesTen và hoàn toàn đáp ứng được những yêu cầu trên.
- Iskratel là một công ty hoạt động trong lĩnh vực viễn thông, chuyên nghiên
cứu và cung cấp các giải pháp liên quan đến mạng lưới. Công ty có một sản
12
phẩm SI3000 cho phép gọi điện, sử dụng data, cũng như các dịch vụ tích
hợp rất hữu ích cho người dùng và doanh nhân. Nhưng hiệu năng CSDL
như tra cứu thông tin khách hàng, cấu hình,… không như mong đợi. Iskratel
đã thay thế CSDL truyền thống bằng IBM solidDB, giúp tăng số lượng cuộc
gọi cũng như giảm thời gian xử lý xuống ba lần.
Tiến sĩ Elliot King [12], một nhà nghiên cứu của Loyola University, đã có
whitepaper đưa ra số liệu thống kê liên quan đến việc sử dụng IMDB. Tháng 04/2011,
Elliot King cùng nhóm cộng sự đã thực hiện mời các chuyên gia CNTT uy tín, cùng
các nhóm phù hợp trên LinkedIn.com tham gia khảo sát. Những người được mời làm
việc ở nhiều lĩnh vực, vai trò khác nhau. Kết quả, có 237 người tham gia khảo sát,
trong số đó 30% đang sử dụng IMDB, 70% còn lại thì có đến hơn một nửa quen thuộc
với công nghệ IMDB. Chi tiết một số kết quả khảo sát như sau:
- Loại ứng dụng sử dụng IMDB:
Phân tích kinh doanh
Giao dịch web
Báo cáo
Tài chính
Billing & provisioning
Ứng dụng nhúng, di động
-
Lượng dữ liệu trong IMDB:
Dưới 10 GB
11 – 25 GB
26 – 100 GB
Trên 100 GB
Không biết
-
Có ý định bắt đầu/mở rộng việc sử dụng IMDB trong tương lai:
13
không biết
không
-
Nguyên nhân thúc đẩy sự mở rộng việc sử dụng IMDB:
Nhiều ứng dụng hơn
Cần độ trễ thấp
Nhiều người dùng hơn
Tăng kích thước data
Tăng dung lượng data
Khác
-
Các lợi ích quan trọng nhất của IMDB:
Hiệu năng cao
Độ trễ rất thấp
Tăng TPS
Giảm lưu trữ dữ liệu tạm thời
Khác
-
có
Các hạn chế lớn nhất của IMDB:
Kích thước CSDL
Tính sẵn sàng
Loại dữ liệu hỗ trợ
Khả năng hỗ trợ tính ACID
Khác
14
-
Tiêu chí khi lựa chọn sản phẩm IMDB:
Có hỗ trợ
Cam kết lộ trình
Platform hỗ trợ
Giá cả
Tương thích đối tác
Khác
Nghiên cứu của Tiến sĩ Elliot King đã cho thấy sự quan tâm ngày càng lớn
trong việc sử dụng IMDB với các ứng dụng trong nhiều lĩnh vực, nhằm đạt được các
yêu cầu về hiệu năng, giải quyết thách thức về sự tăng trưởng dữ liệu, cũng như đạt
được các mục tiêu dài hạn của công ty.
I.2. Nhu cầu thực tế và khả năng áp dụng
I.2.1. Nhu cầu
Đi cùng với sự phát triển kinh doanh, khách hàng của mỗi công ty, doanh
nghiệp sẽ là những thách thức về hiệu năng, số lượng truy cập dữ liệu, cũng như những
đòi hỏi ngày càng cao của khách hàng. Nếu không đủ nhanh và đáp ứng yêu cầu thị
trường, yêu cầu khách hàng, công ty khó có thể cạnh tranh với các công ty khác. Các
hệ thống liên quan trực tiếp cần cải thiện hiệu năng gồm các ứng dụng viễn thông, tài
chính ngân hàng, hàng không, quân sự, game, các hệ thống chăm sóc khách hàng.
Trong lĩnh vực Viễn thông nói riêng, Viettel đang là một trong ba nhà cung cấp
dịch vụ viễn thông lớn nhất Việt Nam. Các sản phẩm phần mềm hỗ trợ kinh doanh chủ
yếu do Trung tâm Phần mềm Viettel tự xây dựng. Hiện tại, Trung tâm đã và đang phát
triển những hệ thống rất lớn như Tính cước và chăm sóc khách hàng (Billing &
Customer Care System – BCCS), kho tàng tài sản, v-office,… đến khi đưa vào sử
dụng, vận hành mới phát hiện ra nhiều điểm nghẽn liên quan đến CSDL và đang phải
khắc phục rất vất vả. Việc treo nghẽn của hệ thống BCCS ảnh hưởng nghiêm trọng đến
việc sản xuất kinh doanh và mức độ hài lòng của khách hàng.
Các điểm treo nghẽn của hệ thống BCCS hầu như đều liên quan đến việc truy
cập CSDL. Các ví dụ điển hình là:
- Vào các thời điểm cuối tháng các chi nhánh, phòng ban, đơn vị đồng thời
vào lấy báo cáo kết quả sản xuất kinh doanh trong tháng. Số lượng truy vấn
đến CSDL tăng đột biến nên việc lấy báo cáo này rất chậm, thậm chí không
lấy được. Ngoài ra điều nguy hiểm hơn là khi CSDL bị quá tải thì các
nghiệp vụ khác cũng không thể thực hiện được. Việc sản xuất kinh doanh bị
đình trệ, ảnh hưởng vô cùng lớn.
15
-
Để cải tiến nghiệp vụ chăm sóc khách hàng, đội dự án BCCS đã bổ sung
tính năng khi khách hàng gọi điện đến Trung tâm chăm sóc khách hàng thì
trên màn hình của giao dịch viên sẽ hiện lên luôn thông tin về khách hàng
này. Tuy nhiên việc này cũng làm tăng đột biến tải của CSDL và ảnh hưởng
nghiêm trọng đến các chức năng khác của BCCS.
- Hiện nay khi xử lý các yêu cầu gửi lên, nhiều phân hệ của BCCS đang dùng
các hàng đợi để chứa các yêu cầu và xử lý dần dần. Các hàng đợi hiện nay
đều được chứa trong CSDL. Khi xử lý liên tục phải truy vấn vào CSDL,
việc này làm tăng thời gian đáp ứng (response time) của hệ thống và làm
giảm tính real-time của việc xử lý.
Số lượng những vấn đề tương tự như trên rất phổ biến, làm giảm hiệu năng,
chất lượng và độ ổn định của hệ thống, làm tăng chi phí giám sát vận hành và gây thiệt
hại lớn cho sản xuất kinh doanh. Việc áp dụng các giải pháp như IMDB sẽ là cứu cánh
cho phần mềm nói riêng và sự phát triển của công ty nói chung, không chỉ để khắc
phục các nhược điểm hiện tại, mà còn chuẩn bị cho sự phát triển trong tương lai.
I.2.2. Khả năng áp dụng
Việc áp dụng các sản phẩm IMDB vào các hệ thống phần mềm hiện tại là hoàn
toàn khả thi và có căn cứ khoa học:
- Việc đưa dữ liệu lên bộ nhớ chính giúp tăng tốc độ truy cập thì tốc độ truy
cập của bộ nhớ chính là nhanh hơn so với ổ đĩa cứng.
- Các sản phẩm IMDB vẫn dựa trên nguyên tắc đưa dữ liệu lên bộ nhớ, và
chúng được quy hoạch như một CSDL quan hệ thông thường, truy cập bằng
SQL chuẩn, giúp thuận tiện cho việc đồng bộ dữ liệu giữa CSDL truyền
thống và IMDB, cũng như ứng dụng dễ dàng truy cập dữ liệu từ IMDB.
- Giá thành của bộ nhớ chính ngày càng giảm, gần với giá ổ đĩa cứng.
- Nhu cầu của các ứng dụng là có thật và ngày càng trở nên cấp thiết, khi số
lượng truy cập ngày càng lớn với đòi hỏi thời gian đáp ứng tức thời:
Viễn thông: đăng nhập, xác thực, tính cước, mediation, call centers.
Tài chính: online banking, fraud detection, stock exchanges,…
Các ứng dụng khác: chăm sóc khách hàng, gaming, đặt vé máy bay,…
I.3. Kết luận chƣơng 1
Từ những thông tin trên cho thấy việc nghiên cứu phát triển cũng như tìm hiểu
sử dụng IMDB đang nở rộ trên thế giới với sự tham gia của các công ty phần mềm lớn
cũng như của cộng đồng mã nguồn mở, trên nhiều lĩnh vực Tài chính, Viễn thông,
ngân hàng, thương mại điện tử, quân sự, trò chơi,…
Hiện trạng các hệ thống phần mềm, ứng dụng trong các lĩnh vực đang đặt ra
nhu cầu cấp thiết phải áp dụng các giải pháp nhằm tăng hiệu năng, đáp ứng nhiều hơn
số lượng truy cập với thời gian nhỏ hơn. Sử dụng IMDB là một giải pháp tốt, có thể dễ
dàng áp dụng cho nhiều loại ứng dụng, mới xây dựng hoặc đã có, trên nhiều lĩnh vực
khác nhau.
16
Chƣơng 2: CƠ SỞ KHOA HỌC VỀ IN-MEMORY DATABASE
II.1. Khái niệm IMDB
Sự phát triển nhanh chóng của kỹ thuật chế tạo ổ cứng và RAM cho phép lưu
trữ ngày càng nhiều dữ liệu, lên đến terabyte hoặc petabyte. Tuy nhiên, độ trễ đọc/ghi
dữ liệu cũng như băng thông lại không có được tốc độ phát triển như vậy. Hiện nay,
thời gian quét RAM cỡ terabyte tính bằng phút và quét ổ cứng cỡ terabyte phải tính
bằng giờ. Chúng ta nên giữ toàn bộ dữ liệu trên bộ nhớ và thiết kế lại cấu trúc dữ liệu
và thuật toán, cũng như sử dụng đa tiến trình để tận dụng hết tài nguyên bộ nhớ chính.
IMDB ra đời nhằm đáp ứng cho các hệ thống cần thời gian truy vấn dữ liệu từ CSDL
rất nhỏ và số lượng truy cập đồng thời cao.
In-memory database (Cơ sở dữ liệu trên bộ nhớ) là cơ sở dữ liệu quan hệ dựa
trên bộ nhớ, bỏ qua các thao tác truy cập ổ đĩa cứng bằng cách lưu trữ và xử lý dữ
liệu ngay trên bộ nhớ chính. Nó còn có các tên khác như Main memory database (cơ
sở dữ liệu bộ nhớ chính) hoặc real-time database (cơ sở dữ liệu thời gian thực).
II.2. Các vấn đề kỹ thuật của IMDB
II.2.1. So sánh IMDB với disk-based DB
IMDB không chỉ đơn thuần khác CSDL truyền thống ở việc dữ liệu được đặt
trên bộ nhớ chính thay vì trên ổ đĩa cứng, mà các yếu tố khác cũng được thay đổi để
tối ưu hơn. Các yếu tố đó bao gồm: Tối ưu truy vấn, quản lý bộ nhớ đệm (buffer pool),
và cấu trúc chỉ mục (index). Trong khi CSDL dựa trên ổ cứng thực hiện các công việc
đó với quan niệm dữ liệu được đặt trên ổ cứng (dù dữ liệu có được cache trên bộ nhớ),
IMDB biết chắc dữ liệu được đặt trên bộ nhớ nên nó làm đơn giản hóa các thuật toán
và cấu trúc.
Dưới đây là so sánh cụ thể giữa IMDB và CSDL dựa trên ổ cứng (gồm cả
trường hợp dữ liệu có được cache toàn bộ lên bộ nhớ):
Bảng II.1 – Bảng so sánh CSDL dựa trên ổ cứng và IMDB
Tiêu chí
Disk-based DB
IMDB
Lưu trữ dữ - Dữ liệu được lưu trữ trên ổ cứng - Dữ liệu được lưu trũ trên bộ nhớ
liệu
- Dữ liệu có thể được cache vào chính để truy vấn và xử lý.
bộ nhớ để truy cập nhanh hơn
- Dữ liệu có thể được ghi xuống ổ
cứng để sao lưu và phục hồi.
Tối ưu hóa - Thuật toán tối ưu hóa truy vấn - IMDB biết chắc dữ liệu lưu trữ
truy vấn
thực hiện với quan niệm dữ liệu trên bộ nhớ, nên thuật toán tối ưu
đặt trên ổ đĩa. Do đó, tại thời truy vấn đơn giản hơn và chính
điểm tối ưu truy vấn, dù dữ liệu xác hơn.
được đặt một phần hay toàn bộ
trong bộ nhớ, thời gian thực hiện
gần như không khác nhau.
Quản lý bộ
- Buffer pool phải quản lý dữ liệu - IMDB không sử dụng buffer
nhớ đệm
được cache trong bộ nhớ. Khi có pool, không phải sao chép dữ liệu
17
(buffer pool)
yêu cầu truy vấn dữ liệu, CSDL
sẽ tìm kiếm trong buffer pool
trước. Nếu không có, sẽ tìm trong
các file ở ổ cứng.
- Thậm chí, nếu dữ liệu được tìm
thấy trong buffer, nó cũng phải
sao chép trước khi trả lại kết quả,
vì còn phải phục vụ các xử lý tiếp
theo.
Cấu trúc chỉ - Sử dụng B+ tree cho index. B+
mục (index)
tree gồm nhiều node, mỗi node
ứng với một data page, và chỉ số
của page tiếp theo. Mỗi node gồm
nhiều entry, mỗi entry chứa cặp
data key-value và con trỏ tới
entry tiếp theo.
Cấu trúc này là lý tưởng để
giảm disk I/O, nhưng nó không
còn nhiều hữu dụng khi dữ liệu
đặt trong bộ nhớ. Khi dữ liệu đặt
trong bộ nhớ, mục tiêu là giảm
CPU cycle, không phải I/O. Nếu
dùng cấu trúc này, CPU cycle
tăng vì phải mở rộng và so sánh
giá trị index trong B+ tree.
II.2.2. Kiến trúc hệ thống IMDB
II.2.2.1. Kiến trúc disk-based RDB
trước khi trả lại cho ứng dụng. Do
đó, thuật toán đơn giản hơn, thời
gian đáp ứng truy vẫn nhanh hơn.
- Sử dụng T-tree cho index. Vì tất
cả data row được đặt trong bộ
nhớ, T-tree không cần cặp keyvalue, chỉ đơn thuần gồm các con
trỏ tới các dòng dữ liệu thực.
Thời gian tìm kiêm dữ liệu như
thuật toán tìm kiếm nhị phân.
18
Nguồn: wikipedia
-
-
Hình II.1 – Kiến trúc disk-based RDB
Driver interfaces: Người dùng hoặc chương trình ứng dụng có thể tác động
đến dữ liệu, thông qua DDL (ngôn ngữ định nghĩa dữ liệu), DML (ngôn ngữ
xử lý dữ liệu), DCL (ngôn ngữ điều khiển dữ liệu). Chương trình ứng dụng
viết bằng ngôn ngữ lập trình nào, sử dụng CSDL nào phải có driver tương
ứng. Những driver này được xây dựng dựa trên SQL. Chúng cung cấp các
phương thức để chuẩn bị câu truy vấn, thực thi câu truy vấn và lấy kết quả
trả về.
SQL Engine: biên dịch và thực thi các truy vấn, gồm:
Compiler: xây dựng cấu trúc dữ liệu từ câu SQL và kiểm tra cú pháp,
ngữ nghĩa.
Optimizer: chuyển câu SQL gốc thành các nhóm operation sao cho
thực thi hiệu quả nhất
Execution engine: thực thi câu SQL sau tối ưu, liên kết với Relational
engine để lấy và lưu trữ kết quả.
- Xem thêm -