Tải bản đầy đủ (.pdf) (76 trang)

luận vă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

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 (2 MB, 76 trang )















































ĐẠ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:

- Lượng dữ liệu trong IMDB:

- Có ý định bắt đầu/mở rộng việc sử dụng IMDB trong tương lai:
Dưới 10 GB
11 – 25 GB
26 – 100 GB
Trên 100 GB
Không biết
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


13

- Nguyên nhân thúc đẩy sự mở rộng việc sử dụng IMDB:

- Các lợi ích quan trọng nhất của IMDB:

- Các hạn chế lớn nhất của IMDB:

không biết


không
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
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
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:

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.
Có hỗ trợ
Cam kết lộ trình
Platform hỗ trợ
Giá cả
Tương thích đối tác
Khác


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ữ
liệu
- Dữ liệu được lưu trữ trên ổ cứng
- Dữ liệu có thể được cache vào
bộ nhớ để truy cập nhanh hơn
- Dữ liệu được lưu trũ trên bộ nhớ
chính để truy vấn và xử lý.
- Dữ liệu có thể được ghi xuống ổ
cứng để sao lưu và phục hồi.
Tối ưu hóa
truy vấn
- Thuật toán tối ưu hóa truy vấn
thực hiện với quan niệm dữ liệu
đặt trên ổ đĩa. Do đó, tại thời
điểm tối ưu truy vấn, dù dữ liệu
đượ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.

- IMDB biết chắc dữ liệu lưu trữ
trên bộ nhớ, nên thuật toán tối ưu
truy vấn đơn giản hơn và chính
xác hơn.
Quản lý bộ
nhớ đệm
- Buffer pool phải quản lý dữ liệu
được cache trong bộ nhớ. Khi có
- IMDB không sử dụng buffer
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.
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.
Cấu trúc chỉ
mục (index)
- Sử dụng B
+

tree cho index. B
+

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.
- 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 key-
value, 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.

II.2.2. Kiến trúc hệ thống IMDB
II.2.2.1. Kiến trúc disk-based RDB



18

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ả.
Nguồn: wikipedia


19
- Transaction engine:
 Concurency manager: quản lý truy cập đồng thời tới dữ liệu
 Log manager: đảm bảo tính toàn vẹn và bền vững của transaction.
Undo log để rollback CSDL về trạng thái gần nhất. Redo log đảm
bảo lưu trữ tất cả những transaction đã commit, phục vụ phục hồi khi
cần thiết.
 Recovery manager: phục hồi CSDL từ ảnh ổ cứng và redo log file.

- Relational engine: các đối tượng quan hệ như bảng, chỉ mục, và ràng buộc
dữ liệu được quản lý bởi thành phần này.
- Storage engine: lưu trữ và lấy các bản ghi dữ liệu. Nó cũng cung cấp cơ chế
lưu trữ thông tin metadata và thông tin điều khiển
II.2.2.2. Kiến trúc IMDB
Về tổng thể, IMDB cũng có kiến trúc tương tự disk-based DB, như gồm các
thành phần: SQL engine, transaction engine, relational engine, và storage engine,
nhưng các thành phần con bên trong mỗi thành phần này lại hoạt động khác hẳn.
Dưới đây trình bày cụ thể từng thành phần trong kiến trúc của IMDB:
- Memory segment: được chia làm 3 phần chính:
 Control segment: chứa bảng lock, bảng tiến trình, bảng transaction,
undo log và redo logs
 Catalog segment: chứa metadata về bảng, chỉ mục,…
 User segment: chứa bản ghi dữ liệu của tất cả các bảng, các chỉ mục.
- SQL engine: với disk-based DB, tối tưu hóa theo cost-based thường được sử
dụng vì liên quan đến disk I/O. IMDB chỉ sử dụng tối ưu hóa theo rule-
based.
- Relational engine: thuật toán lưu trữ, tìm kiếm trong IMDB đơn giản hơn vì
nó chỉ làm việc với bộ nhớ, không liên quan đến ổ cứng. IMDB sử dụng T-
tree cho chỉ mục thay vì B-tree trong disk-based DB.
- Transaction engine: các transaction trong IMDB không có việc đợi disk I/O,
điều này có thể dẫn đến deadlock, làm ảnh hưởng đến thông lượng. Do đó,
việc quản lý giao dịch đồng thời phải được chú trọng hơn trong IMDB.
- Storage engine: trong disk-basedDB việc định vị dữ liệu dựa trên các block,
trong IMDB việc định vị linh hoạt hơn bằng các mô hình kết nối khác nhau,
như kết nối trực tiếp hoặc kết nối client/server. Việc này được quản lý bởi
IPC của hệ điều hành.




20

Hình II.2 – Kiến trúc IMDB
II.2.3. Tại sao IMDB lại nhanh?
Hình dưới so sánh việc truy vấn dữ liệu giữa CSDL truyền thống (dựa trên ổ
cứng) và IMDB.
Khi ứng dụng gửi một câu truy vấn dữ liệu tới CSDL, SQL Engine của
OracleDB biên dịch, tối ưu hóa, sau đó thực thi câu lệnh. Nó sẽ tìm kiếm dữ liệu mong
muốn trong buffer pool trước (trên bộ nhớ chính), nếu không thấy sẽ phải tìm kiếm
trong ổ cứng từ các data file. Sau đó, nó sao chép dữ liệu phù hợp sang một buffer
riêng, trước khi trả lại cho ứng dụng.
Với IMDB, nó cũng có một bộ Query optimizer để tối ưu hóa câu lệnh trước
khi thực thi. Tuy nhiên, khác với disk-based DB, IMDB biết chắc chắn dữ liệu nằm
trên bộ nhớ chính, nên nó chỉ tìm kiếm trên bộ nhớ với những thuật toán đã được tối
ưu riêng cho bộ nhớ. Sau đó, nó trả lại kết quả cho ứng dụng.
Nguồn: wikipedia


21
Với kiến trúc như vậy, cùng với tốc độ truy cập bộ nhớ nhanh hơn nhiều so với
ổ cứng, và các thuật toán tối ưu riêng cho bộ nhớ, IMDB cải thiện đáng kể tốc độ truy
vấn dữ liệu.

Hình II.3 – So sánh mô hình xử lý SQL của disk-based DB và IMDB
II.2.4. Kết nối từ ứng dụng đến IMDB
 Kết nối trực tiếp
Hầu hết các sản phẩm IMDB đều hỗ trợ thêm kiểu kết nối trực tiếp/nhúng
(direct/embeded), ngoài cách kết nối client/server thông thường. Trong một kết nối
trực tiếp, chúng thường dùng một vùng nhớ chia sẻ của phần cứng. Các ứng dụng sử
dụng direct driver để truy cập vào ảnh của CSDL đã được load trong vùng nhớ này. Vì

không yêu cầu một IPC (inter-process communication), một kết nối trực tiếp cung cấp
khả năng xử lý rất nhanh. Đó cũng là cách lý tưởng để sử dụng IMDB.
 Kết nối client/server
IMDB đóng vai trò như server, chương trình ứng dụng là client. Server sẽ tạo
một tiến trình con riêng biệt cho mỗi kết nối từ client tới CSDL. Ứng dụng trên máy
client có thể là ODBC, JDBC hay OCI calls. Những ứng dụng này sẽ truy cập tới một
local ODBC client driver, từ đó driver này sẽ giao tiếp với một tiến trình con trên
IMDB server. Sau đó, tiến trình con này sẽ tạo ra một native ODBC request tới ODBC
direct driver để truy cập IMDB.
Nếu client và server nằm trên các nút mạng khác nhau, chúng giao tiếp bằng
giao thức TCP/IP. Nếu chúng nằm trên cùng một máy, chúng có thể giao tiếp hiệu quả
hơn bằng cách sử dụng vùng nhớ chia sẻ (kết nối trực tiếu). Các hệ thống CSDL
truyền thống thường được cấu trúc theo kiểu client/server, thậm chí khi client và server
Nguồn: Oracle
IMDB


22
nằm trên cùng một máy vật lý. Kiểu kết nối này tăng thêm nhiều thời gian cho các giao
tác với CSDL.
II.2.5. Truy cập đồng thời (concurrent operations)
Một CSDL có thể được truy cập theo kiểu chia sẻ. Khi nhiều có truy vấn đến
CSDL, phải có một cách để điều khiển các thay đổi đồng thời đến dữ liệu. Tương tự
CSDL truyền thống, IMDB sử dụng Transaction isolation (cô lập giao tác) và các lock
(khóa) để điểu khiển các truy cập đồng thời tới dữ liệu.
a/ Transaction isolation
Các ứng dụng có thể sử dụng thuộc tính kết nối isolation để thiết lập mức
isolation cho kết nối ấy. Các kết nối các khác nhau có thể sử dụng các mức isolation
khác nhau. Mức cô lập và khả năng đồng thời là đối ngược nhau. Mức cô lập thấp cho
phép nhiều truy cập đồng thời, nhưng rủi ro về không nhất quán dữ liệu cao. Ngược

lại, mức cô lập cao cung cấp mức nhất quán dữ liệu cao hơn, nhưng cho phép ít các
truy cập đồng thời.
Có 2 mức cô lập giao tác:
 Read committed isolation
Với mức cô lập này, người đọc sử dụng một bản copy của dữ liệu, nên không
cần phải dùng lock. Người ghi chỉ khóa những người ghi và người đọc sử dụng mức
serializable isolation, mà không khóa những người đọc sử dụng Read-commited
isolation. Việc update dữ liệu sẽ tạo ra một bản copy của những dòng được update,
điều này cho phép nonserializable readers có thể đọc những dòng này bình thường.
 Serializable isolation
Với mức cô lập này, khóa được yêu cầu cho một giao tác và được giữ cho đến
khi giao tác được commit hoặc rollback cho cả việc đọc và ghi dữ liệu. Mức cô lập này
cho phép đọc repeatable. Khóa database-level được dùng với mức cô lập này.
b/ Locks
Lock được sử dụng để “niêm phong” các truy cập đến tài nguyên, để ngăn chặn
một user thay đổi một thành phần khi nó đang được đọc hoặc thay đổi.
Có 3 mức Khóa:
 Database-level locking
Mức này khóa toàn bộ CSDL khi có một truy vấn tới nó. Tất cả database-level
là tường minh. Một truy vấn yêu cầu DB-level lock không thể khởi động cho đến khi
không còn một truy vấn nào khác tới CSDL. Mức Khóa này phù hợp với những hoạt
động khởi gán ban đầu như migrate một lượng dữ liệu lớn.
 Table-level locking
Mức này khóa một table khi có một truy vấn tới nó. Nó phù hợp với trường hợp
có một câu lệnh truy cập hầu hết các dòng trong một bảng. Khóa bảng làm giảm thông
lượng dữ liệu vào, do vậy nó chỉ nên dùng khi có một phần quan trong của một bảng
cần phải khóa. Ví dụ, khi một bảng cần update hầu hết các dòng.
 Row-level locking



23
Mức này chỉ khóa những dòng được truy vấn. Nó cung cấp mức đa truy vấn cao
nhất vì cho phép các giao tác đồng thời tới các dòng trong một bảng. Mức này phù hợp
với trường hợp có nhiều giao tác đồng thời tới các dòng khác nhau của cùng một bảng.
II.2.6. Tối ưu hóa truy vấn
Tương tự CSDL truyền thống, IMDB cũng có một bộ tối ưu hóa truy vấn để
bảo đảm các truy cập dữ liệu hiệu quả bằng cách tự động chọn ra cách tốt nhất để trả
lời các truy vấn. Bộ tối ưu hóa truy vấn giúp giảm thời gian thực thi truy vấn xuống
thấp nhất có thể.
Các tham số khi xem xét tối ưu hóa truy vấn:
 Các thông tin của bảng và cột
Khi có một truy vấn tới, bộ tối ưu truy vấn sẽ kiểm tra các thông tin về dữ liệu
được tham chiếu bởi truy vấn, như số dòng của bảng, giá trị unique nhỏ nhất và lớn
nhất của cột xuất hiện trong điều kiện của truy vấn (sau where), khóa chính, index.
 Thông tin metadata (như toàn vẹn tham chiếu, khóa chính,…)
 Chỉ mục (Index)
Bộ tối ưu truy vấn sử dụng index để tăng tốc độ thực thi của truy vấn. Nó sử
dụng các index có sẵn (do người tạo bảng tạo ra) hoặc tự tạo ra các index tạm thời để
chuẩn bị kế hoạch thực thi cho các câu lệnh truy vấn SELECT, INSERT, UPDATE,
DELETE. Một index là một map giữa khóa và vị trí của nó trong bảng.
 Phương pháp quét bảng (scan method)
 Full table scan: Kiểm tra từng dòng một của bảng. Đây là cách scan
kém hiệu quả nhất nên chỉ được sử dụng khi không thể chọn phương
pháp scan nào khác.
 Rowid lookup: IMDB sử dụng một định danh duy nhất gọi là rowid
cho mỗi dòng của bảng. Phương pháp này khả thi trong trường hợp ứng
dụng sử dụng rowid làm giá trị tham chiếu. Rowid lookup nhanh hơn
index lookup.
 Range index lookup: Phương pháp này sử dụng range index để truy
cập bảng, các trường hợp sử dụng phù hợp đã trình bày trong phần

Range index.
 Hash index lookup: Sử dụng hash index để tìm các dòng dựa trên khóa
chính. Các trường hợp sử dụng phù hợp đã trình bày trong phần hash
index.
 Bitmap index lookup: Sử dụng bitmap index để tìm kiếm. Các trường
hợp sử dụng phù hợp đã trình bày trong phần bitmap index.
 Thuật toán join
Cũng như các hệ quản trị CSDL khác, IMDB cũng có các thuật toán và tiêu
chuẩn để lựa chọn phương pháp join giữa các bảng nhằm giảm tối đa thời gian truy
vấn, như table statistic, index,…

×