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

Một số kỹ thuật truy cập trong cơ sở dữ liệu trên bộ nhớ

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

i

ĐẠI HỌC THÁI NGUYÊN
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NGUYỄN MINH PHÚC

MỘT SỐ KỸ THUẬT TRUY CẬP
TRONG CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ
Chuyên ngành: Khoa Học Máy Tính
Mã số: 60 48 01 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Nguyên - 2015


ii
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 TS. Lê Quang Minh, 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 tới các thầy cô giáo 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!
Thái Nguyên, 2015


iii
MỤC LỤC
LỜI CẢM ƠN ...............................................................................................................i
MỤC LỤC ................................................................................................................. iii
DANH SÁCH HÌNH, ẢNH......................................................................................... iv
DANH SÁCH BẢNG................................................................................................... v
BẢNG DANH MỤC CÁC CHỮ VIẾT TẮT ................................................................ v
MỞ ĐẦU ..................................................................................................................... 1
Chương 1. KHÁI QUÁT VỀ CƠ SỞ DỮ LIỆU THỜI GIAN THỰC VÀ VẤN ĐỀ
TRUY CẬP .................................................................................................................. 4
1.1. Khái quát về xử lý dữ liệu trong cơ sở dữ liệu thời gian thực ................................... 4
1.2. Vấn đề truy cập và xử lý nhanh trong hệ thống cơ sở dữ liệu ................................. 6
1.3. Giải pháp sử dụng cơ sở dữ liệu trong bộ nhớ ........................................................ 8
1.3.1. Giải pháp ................................................................................................... 8
1.3.2. Kiến trúc hệ thống cơ sở dữ liệu trong bộ nhớ ......................................... 12
1.3.3. Lợi thế khi sử dụng cơ sở dữ liệu trong bộ nhớ ........................................ 22
Chương 2. MỘT SỐ KỸ THUẬT TRUY CẬP TRONG CSDL TRÊN BỘ NHỚ....... 26
2.1. Tổ chức cấu trúc chỉ mục trong cơ sở dữ liệu trên bộ nhớ..................................... 26
2.2. Kỹ thuật truy cập trên T- Tree.............................................................................. 30
2.3. Kỹ thuật khôi phục và kiểm soát đồng thời trong cơ sở dữ liệu trên bộ nhớ .......... 38
2.3.1. Kỹ thuật khôi phục .................................................................................. 38
2.3.2. Kiểm soát đồng thời................................................................................. 41
Chương 3: THỬ NGHIỆM CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ ................................ 53

3.1. Phát biểu bài toán ................................................................................................ 53
3.2. Lựa chọn giải pháp .............................................................................................. 53
3.2.1. Kết nối trực tiếp hay client/server? .......................................................... 54
3.2.2 Lựa chọn loại cache group sử dụng ........................................................... 55
3.2.3. Lựa chọn cơ chế aging ............................................................................ 57
3.3. Lựa chọn hệ thống phần mềm để thử nghiệm ....................................................... 58
3.4. Kết quả thử nghiệm ............................................................................................. 62
3.4.1. Kết quả thử nghiệm cho hệ thống CustomerCare .................................... 62
3.4.2 Kết quả thử nghiệm cho hệ thống BCCS_Rating ..................................... 64


iv
KẾT LUẬN VÀ KIẾN NGHỊ .................................................................................... 67
TÀI LIỆU THAM KHẢO .......................................................................................... 68

DANH SÁCH HÌNH, ẢNH
Hình 1. 1. Hội họp trong tương lai............................................................................ 5
Hình 1. 2. Hệ thống thi trực tuyến............................................................................ 6
Hình 1. 3. Cấu trúc phân đoạn................................................................................ 15
Hình 1. 4. Cấu trúc phân vùng quan hệ .................................................................. 16
Hình 1. 5. Quan hệ và Thiết kế chỉ mục ................................................................. 19
Hình 1. 6. Ví dụ liên kết ....................................................................................... 21

Hình 2. 1. Các chỉ mục được cấu trúc cây ............................................................... 27
Hình 2. 2. Hàm băm dựa trên các chỉ mục ............................................................. 29
Hình 2. 3. T- Tree .................................................................................................. 31
Hình 2. 4. Giá trị giới hạn của Nút A ..................................................................... 32
Hình 2. 5. Các phép tái cân bằng T- Tree ............................................................... 36
Hình 2. 6. Các phép tái cân bằng T Tree đặc biệt ................................................... 37
Hình 2. 7. Cấu trúc khối kiểm soát khóa quan hệ ................................................... 44

Hình 2. 8. Cấu trúc khối kiểm soát khóa giao dịch ................................................. 49

Hình 3. 1. Mô hình CC trước và sau khi áp dụng TimesTen .................................. 63
Hình 3. 2. Mô hình Rating trước và sau khi áp dụng TimesTen ............................ 65


v
DANH SÁCH BẢNG

Bảng 1. 1. Bảng thống kê thời gian xử lý một bản ghi cước ................................... 59
Bảng 1. 2. Bảng lựa chọn TimesTen ...................................................................... 60
Bảng 1. 3. Bảng lựa chọn tính năng TimesTen ...................................................... 61
Bảng 1. 4. Bảng so sánh response time giữa TimesTen và Oracle .......................... 63
Bảng 1. 5. Bảng so sánh thời gian xử lý khi dùng Oracle và TimesTen.................. 65

BẢNG DANH MỤC CÁC CHỮ VIẾT TẮT

Thuật ngữ

Chi tiết

Ý nghĩa

ACID

Atomicity, Consistency, Isolation,

Tính nguyên tố, tính nhất quán,
tính tách biệt và tính bền vững.


CSDL

và Durability.
Cơ sở dữ liệu

DBMS

Database Management System

Hệ quản trị cơ sở dữ liệu

IMDB

In-Memory Database

Cơ sở dữ liệu trong bộ nhớ

MMDB

Main Memory Database

Cơ sở dữ liệu trong bộ nhớ

RDBMS

Relational Database Management

Hệ(thống) quản lý cơ sở dữ liệu
quan hệ



1
MỞ ĐẦU
1. Đặt vấn đề
Ngày nay, xu thế công nghệ thông tin toàn cầu cũng như sự phát triển mạng
internet, cả thế giới đã được kết nối không khoảng cách. Như một tất yếu, chính phủ
và các doanh nghiệp cần có những hệ thống, ứng dụng và Cơ sở dữ liệu (CSDL)
trực tuyến (online) phục vụ tức thời (real time) có thể đáp ứng hàng triệu người
dùng cuối ở khắp mọi nơi. Ðể đáp ứng xu thế này, điện toán đám mây (cloud
mputing) đang là mô hình công nghệ thông tin hứa hẹn nhất.
Khác với mô hình tính toán lưới (Grid computing) trong đó yêu cầu thực thi có
được phép “đợi lúc CPU rảnh” thì Mô hình tính toán trong Clouds hoàn toàn khác,
nhiều người dùng được sử dụng tài nguyên để giao dịch đồng thời và đảm bảo chất
lượng dịch vụ tức thời nhưng lại phải đúng thứ tự. Hay nói cách khác, bắt buộc hệ
thống phải xử lý tuần tự và đáp ứng thời gian thực cho hàng triệu giao dịch. Vì vậy,
vấn đề này đang là nỗi lo lắng nhất cho các hệ thống trực tuyến đang phát triển
nhanh chóng, khi mà các giải pháp xử lý song song không còn nhiều tác dụng. Ví
như giao dịch ngân hàng trực tuyến, giao dịch chứng khoán, hệ thống chăm sóc
khách hàng, hệ thống tính cước, mua hàng trực tuyến, kiểm soát các phương tiện
giao thông…
Vì vậy, với hệ thống phải xử lý nhiều giao dịch với số lượng vô cùng lớn mà vẫn
đảm bảo thời gian thực thì có 4 xu hướng cải tiến kỹ thuật cho CSDL là xử lý song
song, thay đổi kiến trúc CSDL, thay đổi cơ chế hoạt động, và sử dụng bộ nhớ
trong(In Memory).
Trong luận văn này tôi tập trung nghiên cứu, tìm hiểu CSDL trong bộ nhớ đảm
giải quyết bài toán cho các hệ thống có số lượng giao dịch lớn đáp ứng truy vấn thời
gian thực. Thử nghiệm với hệ thống Oracle TimesTen để đưa ra đánh giá đối với
CSDL trong bộ nhớ.
Vì vậy, “Một số kỹ thuật truy cập trong cơ sở dữ liệu trên bộ nhớ” được em
chọn làm đề tài.



2
2. Đối tượng và phạm vi nghiên cứu
-

Đối tượng nghiên cứu: Một số kỹ thuật truy cập cơ sở dữ liệu trên bộ nhớ.

-

Phạm vi nghiên cứu:
 Khái quát về xử lý dữ liệu trong thời gian thực, vấn đề về truy cập và xử
lý nhanh trong hệ thống cơ sở dữ liệu, giải pháp xử dụng cơ sở dữ liệu
trong bộ nhớ.
 Các tổ chức chỉ mục trong cơ sở dữ liệu trên bộ nhớ và kỹ thuật khôi
phục, kiểm soát đồng thời trong cơ sở dữ liệu trên bộ nhớ.
 Mô hình áp dụng và kết quả thực nghiệm.

3. Hướng nghiên cứu của đề tài
-

Tìm hiểu xu hướng, tình hình nghiên cứu cơ sở dữ liệu trong bộ nhớ,

-

Nghiên cứu các kỹ thuật được áp dụng trên Cơ sở dữ liệu trong bộ nhớ

-

Nghiên cứu ưu nhược điểm của Cơ sở dữ liệu trên bộ nhớ.


-

Tổng quát hóa lớp bài toán áp dụng, kiến trúc có thể áp dụng Cơ sở dữ liệu
trên bộ nhớ; Kết quả thử nghiệm.

-

Đưa ra những đề xuất, ý tưởng ứng dụng, cải tiến với CSDL trên bộ nhớ.

4. Bố cục của luận văn
-

Mở đầu.

-

Chương 1. Khái quát về cơ sở dữ liệu thời gian thực và vấn đề truy cập

-

Chương 2. Một số kỹ thuật truy cập trong CSDL trên bộ nhớ

-

Chương 3. Thử nghiệm cơ sở dữ liệu trên bộ nhớ

-

Kết luận.


5. 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 báo, 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ả.


3

6. Ý nghĩa khoa học của đề tài
-

Ý nghĩa khoa học:
 Khái quá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 các kỹ thuật truy cập trong 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


4
Chương 1. KHÁI QUÁT VỀ CƠ SỞ DỮ LIỆU THỜI GIAN THỰC VÀ VẤN
ĐỀ TRUY CẬP
1.1. Khái quát về xử lý dữ liệu trong cơ sở dữ liệu thời gian thực
Cơ sở dữ liệu (CSDL) truyền thống đã hình thành từ rất sớm có một vai trò
quan trọng trong các ứng dựng trên thực tế. Đặc điểm của các giao dịch
trong CSDL truyền thống là yêu cầu về tính nhất quán. Điều này thể hiện ở trong
việc lưu trữ dữ liệu thống nhất, nghĩa là tránh được tình trạng trùng lặp thông tin
và có cơ chế điều khiển truy xuất dữ liệu hợp lý, đó là tránh được việc tranh chấp
dữ liệu và bảo đảm dữ liệu luôn đúng đắn tại mọi thời điểm. Thông thường các
thực hiện giao dịch và xử lý truy vấn trong CSDL là cố gắng nhằm đạt được một số
lượng lớn giao dịch được thực thi và thời gian đáp ứng nhanh nhất có thể.
Ngày nay, với sự phát triển của công nghệ, ngoài việc đảm bảo các tính chất
của giao dịch, giao dịch với số lượng lớn thì phải đảm bảo được thời gian đáp ứng
của các giao dịch, đó là đảm bảo tính thời gian thực cho hệ thống. Các lĩnh vực
cần đáp ứng thời gian thực bao gồm cơ sở hạ tầng mạng, viễn thông, thị
trường tài chính, chứng khoán, hàng không, thương mại điện tử, doanh nghiệp...
với các ứng dụng điển hình như hệ thống điều khiển không lưu, giao dịch cổ
phiếu chứng khoán, đặt chỗ máy bay, du lịch, hệ thống điều khiển robot, thi trực
tuyến, hội họp trực tuyến... Dưới đây là một số lĩnh vực có xu hướng giao dịch
CSDL thời gian thực.
Trong lĩnh vực hoạt động doanh nghiệp, việc ứng dụng một hệ quản trị CSDL
(Database Management System - DBMS) là rất quan trọng. DBMS là một hệ
thống phần mềm tạo điều kiện cho quá trình xác định, xây dựng, thao tác, và
chia sẻ CSDL giữa các người dùng khác nhau và các ứng dụng. Nó củng cố tất cả
các hoạt động trong một ứng dụng doanh nghiệp và hiệu suất của các ứng
dụng doanh nghiệp phụ thuộc nhiều vào hiệu suất của các DBMS. Khi hệ quản

trị CSDL quan hệ ra đời đã hỗ trợ giao dịch một các hiệu quả và rất tin cậy. Nhưng
khi khối lượng dữ liệu lớn hơn, hệ quản trị CSDL quan hệ không còn có thể hiệu
quả phục vụ các yêu cầu của các ứng dụng doanh nghiệp. Đặc biệt nó thể xử lý


5
giao dịch trên toàn bộ CSDL một cách kịp thời. Lý do chính mà hệ quản trị CSDL
quan hệ hiện tại không thể thực hiện các truy vấn yêu cầu đủ nhanh là dữ liệu phải
được lấy ra từ đĩa cứng. Hệ thống hiện đại sử dụng rộng rãi của bộ nhớ đệm để lưu
trữ dữ liệu thường xuyên truy cập trong bộ nhớ chính nhưng đối với các truy vấn
xử lý lượng lớn dữ liệu, đọc ổ đĩa vẫn được yêu cầu. Đơn giản chỉ cần truy cập
và đọc dữ liệu từ đĩa cứng có thể mất một số lượng đáng kể thời gian. Vì vậy đối
với doanh nghiệp đòi hỏi phải có phương án thay thế để giảm các chi phí và thời
gian xử lý của hệ thống quản lý dữ liệu trên đĩa là rất cần thiết.
Hình 1.1 là một ví dụ về đề xuất của Bill Gates vào năm 1994, Information
at the fingertips, khi đó ông hình dung ra một tương lai mà trong đó bất kỳ thông
tin nào đều có sẵn ở bất cứ đâu. Việc tham gia cuộc họp có thể ở nhiều địa điểm
khác nhau, tất cả các trình duyệt, truy vấn, thao tác cùng thông tin đều trong
thời

gian thực.( />
Plattner-on-In-Memory-Computing-OLAP-and-OLTP).

Hình 1. 1. Hội họp trong tương lai
Trong lĩnh vực tài chính, những cán bộ kiểm soát tài chính là những người đặc
biệt gặp khó khăn với khối lượng dữ liệu ngày càng gia tăng . Do thời gian trả lời dữ
liệu chậm, họ bị buộc phải giới hạn khung thời gian phân tích trong vài ngày thay vì
vài thang hay vài quý . Điều này dẫn tới một loạt chậm trễ, bao gồm cả việc đóng



6
sổ cuối mỗi kỳ tài chính. Vì vậy việc phân tích dữ liệu khối lượng lớn và môi
trường mô hình linh động đồng nghĩa với việc quyết toán tài chính nhanh hơn và
hiểu biết sâu sắc hơn về những dữ liệu tài chính chi tiết ở các khung thời gian rộng
hơn cần một phương án thay thế thích hợp so với hệ thống CSDL thông thường.
Trong lĩnh vực đào tạo và thi trực tuyến, việc tham gia của hàng trăm, hàng
nghìn thí sinh tham gia trong cả nước đòi hỏi hệ thống phải xử lý lượng giao dịch
rất lớn. Ngay sau khi thi xong, thí sinh có thể biết ngay điểm và thứ hạng của
mình trên hệ thống. Điều này đòi hỏi thời gian xử lý phải nhanh, đáp ứng được thời
gian thực.( )

Hình 1. 2. Hệ thống thi trực tuyến
Qua các xu hướng này, chúng ta có thể nhận thấy rằng giao dịch CSDL thời
gian thực đang là một xu hướng tất yếu, cần được tìm hiểu và áp dụng. Tiếp theo,
chúng ta tìm hiểu giao dịch CSDL hoạt động như thế nào?
1.2. Vấn đề truy cập và xử lý nhanh trong hệ thống cơ sở dữ liệu
Một trong những vấn đề gây ảnh hưởng nhất đến tốc độ hồi đáp truy vấn trực
tuyến thời gian thực là hệ thống CSDL cho các ứng dụng (trực tuyến) thời gian


7
thực (Real-time application). Ứng dụng thời gian thực có thể chia ra làm hai loại,
ứng dụng giao dịch thời gian thực và ứng dụng phân tích thời gian thực. Có 4 xu
hướng cải tiến kỹ thuật cho CSDL là:
 Xử lý song song,
 Thay đổi kiến trúc CSDL,
 Thay đổi cơ chế hoạt động,
 Sử dụng bộ nhớ (in-Memory).
Trong những năm gần đây, CSDL trong bộ nhớ đang được các tổ chức và
công ty nghiên cứu trên thế giới tập trung để giải quyết các bài toán xử lý dữ

liệu lớn và phân tán áp dụng cho các ứng dụng trực tuyến trong mô hình điện toán
đám mây. Khác với mô hình tính toán lưới (Grid computing) trong đó yêu cầu
thực thi có thể được phép “đợi lúc CPU rảnh” thì mô hình tính toán trong đám
mây hoàn toàn khác, rất nhiều người dùng được sử dụng tài nguyên để truy vấn
đồng thời vì vậy cần đảm bảo chất lượng dịch vụ tức thời nhưng tôn trọng trình
tự người truy vấn. Hay nói cách khác, bắt buộc hệ thống phải xử lý trình tự và đáp
ứng thời gian thực cho có thể đến hàng triệu người truy vấn. Vấn đề này đang là
nỗi lo lắng nhất cho các hệ thống trực tuyến đang phát triển nhanh chóng, khi mà
các giải pháp xử lý song song không còn nhiều tác dụng. Các công ty thương mại
như Oracle cũng như các công ty mã nguồn mở cũng đã nghiên cứu và triển khai.
Thực trạng là hệ thống thi trực tuyến Violypic bị treo khi có 3000 kết nối
cùng một thời điểm, do đó đã phải cải tiến CSDL tạm thời, hay các sàn
chứng khoán xử lý hàng triệu giao dịch trong mỗi giây, và đã bắt đầu sử dụng
IMDB (In- Memory Database). IMDB chính là giải pháp cho những hệ thống có
đa giao dịch hay rất nhiều giao dịch xảy ra đồng thời và cần xử lý thời gian thực.
Ở Việt Nam, các nghiên cứu về CSDL đáp ứng thời gian thực còn rất ít trong
khi nền kinh tế thì phát triển rất nhanh để kịp ngang bằng với thế giới. Vì vậy, sớm
bắt đầu nghiên cứu và áp dụng công nghệ này là cần thiết.


8
1.3. Giải pháp sử dụng cơ sở dữ liệu trong bộ nhớ
1.3.1. Giải pháp
Người dùng ngày nay luôn muốn truy cập thông tin nhanh để đưa ra những
quyết định chính xác ở bất kỳ thời điểm nào, vì vậy CSDL là nguồn tài nguyên hết
sức cần thiết và quan trọng.
Một Chương trình máy tính chuyên biệt phổ biến dành cho CSDL chính là hệ
quản trị CSDL DBMS. Đó là nơi cung cấp phương pháp chuẩn hóa về tính toàn
vẹn dữ liệu, thiết lập các mối quan hệ dữ liệu phức tạp, đảm bảo truy nhập thông
tin nhanh và hiệu quả. Nhưng điểm hạn chế của các hệ thống DBMS là thường kết

hợp với thao tác nhập/xuất (I/O) trên ổ đĩa, một tiến trình cơ học có thể làm giảm
hiệu năng của máy tính.
Tuy nhiên, trong những thập niên trở lại đây, các nhà cung cấp phần mềm đã
tập trung phát triển CSDL bên trong bộ nhớ (In-Memory database – IMDB
hoặc còn gọi là CSDL bộ nhớ chính MMDB - Main Memory Database) nhiều
hơn. IMDB được mô tả như là một mô hình DBMS mới giúp tăng tốc độ lưu trữ,
truy xuất và phân loại thông tin bằng cách lưu giữ tất cả dữ liệu trong bộ nhớ chính.
Khi IMDB chưa xuất hiện, DBMS đã dùng bộ nhớ đệm để giữ các bản ghi
được cập nhật thường xuyên trong RAM giúp truy xuất nhanh. Ngoài ra, một số
DBMS truyền thống khác có bảng bộ nhớ để giữ các tập dữ liệu trong bộ nhớ. Đôi
khi, DBMS được triển khai trên đĩa RAM (RAM disk - bộ nhớ RAM giả lập thành
ổ đĩa cứng, khi mất nguồn điện, toàn bộ dữ liệu trên RAM disk sẽ mất) và gần
đây là ổ đĩa SSD.
IMDB là hệ quản trị CSDL lưu trữ toàn bộ dữ liệu trong bộ nhớ chính nên
giúp cho việc ghi/đọc trong hệ thống tập tin nhanh hơn nhiều. Quan điểm trong
thiết kế của IMDB là bộ nhớ ngang bằng với không gian lưu trữ vì hiệu quả sử
dụng bộ nhớ là tối quan trọng.
Ưu điểm của IMDB:
Nhiều người dùng có thể truy cập dữ liệu đồng thời với thời gian phản hồi
xác định và các giao dịch diễn ra nhanh theo thời gian thực.


9
Tổ chức hợp lý hóa việc quản lý dữ liệu, gỡ bỏ các lớp dữ thừa đặc thù
trong các hệ quản trị dữ liệu DBMS trên ổ đĩa.
Các giải thuật tìm kiếm trong truy cập vào bộ nhớ được tối ưu hóa.
Trong biên dịch tìm kiếm, IMDB trỏ trực tiếp vào vùng bộ nhớ của các
yếu tố dữ liệu.
Đảm bảo việc truy nhập trực tiếp đến dữ liệu.
Điểm mạnh của IMDB loại bỏ cách quản lý bộ nhớ đệm (cache) cũng

như thiết bị I/O, giúp tăng hiệu năng hệ thống so với DBMS trên ổ đĩa với bộ nhớ
đệm. Cache là nơi lưu trữ sẵn các dữ liệu được dự đoán là sẽ phục vụ yêu cầu
của các ứng dụng hay hệ thống nhằm tăng tốc độ xử lý (không phải tốn thời gian
tìm kiếm). Bộ nhớ đệm chỉ tăng tốc khi trích xuất/đọc thông tin. Trong trường
hợp cập nhật hay tạo ra bản ghi mới trong CSDL, thông tin phải được ghi vào
cache, sau đó vào đĩa. Tuy nhiên, có lúc cache thiếu tính linh hoạt vì trong lúc
người dùng thực hiện nhiều thao tác ghi/đọc liên tục có thể kích thước cache
không đủ lớn để đáp ứng. Lúc đó người dùng không thể tác động vào những bản
ghi quan trọng, vì dữ liệu đã được lưu trữ tự động bởi các thuật toán. Khi cache
đầy, một số dữ liệu sẽ được ghi vào hệ thống tập tin với tốc độ được tính bằng
micro giây.
Ưu điểm nữa của IMDB là không cần "gánh" thêm vai trò nhập/xuất tập tin.
Ngay từ đầu, tiêu chí của IMDB là tối Ưu hóa để giảm thiểu việc chiếm nhiều
bộ nhớ và rút ngắn chu kỳ xử lý trong CPU, vì vậy CSDL bên trong bộ nhớ chỉ
Dưới 100KB, thay vì từ 100KB cho đến hàng megabyte so với các kiến trúc CSDL
khác.
Việc này là do:
Loại bỏ những phần "thừa" và không còn phù hợp trong CSDL trên ổ
đĩa,chẳng hạn như tất cả tiến trình cache và nhập/xuất tập tin.
Xóa bỏ những tính năng không cần thiết trong các ứng dụng. Ví dụ, bộ
định tuyến không cần tách riêng giữa máy khách/chủ để quản lý dữ liệu định tuyến.
Trong lúc đó, đối với CSDL trên ổ đĩa thì thao tác đọc/ghi là mối đe dọa


10
lớn nhất về mặt hiệu năng, vì vậy các hệ thống này đã dùng phương pháp ghi đè
để hạn chế ảnh hưởng
Hạn chế của IMDB:
Điểm hạn chế của IMDB chính là nội dung lưu trữ trong bộ nhớ chính
không ổn định (volatile memory), nghĩa là cần phải cấp nguồn liên tục để lưu

trữ nội dung thông tin đó - mất điện là mất hết. Do đó, IMDB đã thêm vào một
số cơ chế để tăng tính ổn định và có thể duy trì nội dung nhớ khi không có điện:
Lưu nhanh tập tin (snapshot file), lưu kịp thời tình trạng lúc đó. Cách
này sẽ lưu theo định kỳ. Nếu hệ thống máy tính hỏng và phải khởi động
lại thì cùng lúc đó CSDL cũng phải hoàn tất việc lưu lại thông tin được cập
nhật gần nhất.
Thực hiện lưu nhật ký (log) để khi có bất kỳ sự thay đổi nào trong CSDL
cũng có thể tự động phục hồi trong IMDB.
Trong IMDB cũng có thể giữ nội dung nhớ bằng cách duy trì một hay
nhiều bản sao của CSDL. Giải pháp này được gọi là bản sao CSDL. Các
CSDL bản chính và bản sao có thể được duy trì bởi nhiều tiến trình hay
tiểu trình trong cùng phần cứng và chúng có thể nằm trên 2 hay nhiều
bo mạch trong cùng máy chủ với “bus” truyền dữ liệu tốc độ cao hay chạy
trên từng máy tính trong mạng LAN và có thể tồn tại ở các cấu hình khác.
Khác với RAM, NVRAM (non-volatile RAM) không bị mất dữ liệu khi
tắt nguồn. Tính năng này được tận dụng để chạy chung với pin của
CMOS, lưu các thông số của hệ thống như: số serial, hãng sản xuất, ngày
sản xuất, địa chỉ MAC của card mạng... Một kiểu mới hơn của NVRAM
gồm có FeRAM (Ferroelectric RAM), MRAM (Magnetoresistive RAM)
và PRAM (Phase change RAM) được thiết kế để bộ nhớ không bị mất
dữ liệu khi không có điện.
Ứng dụng của IMDB:
IMDB được xem là mô hình CSDL nhúng hay hệ thống CSDL máy
khách/chủ thời gian thực. IMDB chạy trên hệ điều hành cung cấp các phản hồi


11
trong các ứng dụng như định tuyến, chuyển mạch trong viễn thông.
Ngoài ra, IMDB có thể kiểm soát CSDL trong thiết bị nghe nhạc MP3 và
xử lý trình dữ liệu trong bộ giải mã (set-top box). Bên cạnh đó, IMDB cũng

hướng đến các ứng dụng không nhúng, ví dụ, các số liệu tính toán hay các ứng
dụng khác trong thị trường tài chính. Thêm vào đó, IMDB còn có thể sử dụng
để truy xuất dữ liệu tức thời hay một số ứng web như thương mại điện tử, mạng
xã hội hay để lưu trữ dữ liệu vào các hệ thống CSDL dùng ổ đĩa. Đôi khi, các
ứng dụng dành cho doanh nghiệp cũng cần lưu trữ dữ liệu lớn bên trong bộ nhớ.
Theo báo cáo của McObject, IMDB 64 bit đã triển khai trên máy chủ
SGI Altix 4700 160 nhân chạy phiên bản SUSE Linux Enterprise Server 9 từ
Novell. CSDL đã tăng đến 1,17 terabyte và có thể đạt đến 15,54 triệu bản ghi.
Đối với câu lệnh SELECT đơn giản, IMDB xử lý được 87,78 triệu giao dịch
truy vấn trên một giây thông qua giao diện trình ứng dụng (API) và đạt 28,14
triệu giao dịch/giây qua API SQL ODBC.( )
Sybase đã giới thiệu phiên bản đầu tiên về phần mềm hệ thống CSDL hoạt
động toàn bộ trên bộ nhớ, đó là Adaptive Server Enterprise 15.5. Theo
Sybase, trong lĩnh vực tài chính, có từ 300.000 đến 400.000 phiên giao dịch
diễn ra trong một giây và IMDB thích hợp dùng để phân tích nhanh lượng thông
tin lên đến hàng terabyte. Công ty cũng hy vọng rằng IMDB sẽ giúp tốc độ giao
dịch nói trên sẽ đạt mức một triệu lượt giao dịch trong một giây. Ngoài ra, một
số nhà cung cấp phần mềm hàng đầu đã giới thiệu những gói sản phẩm dựa trên
IMDB, ví dụ Oracle cũng giới thiệu gói Oracle TimesTen In-Memory Database
11G kể từ lúc Oracle mua lại Công ty TimesTen năm 2005; IBM đã tung ra
sản phẩm solidDB sử dụng công nghệ IMDB .
Khi bộ nhớ chính ngày càng trở nên rẻ hơn và dung lượng lớn hơn, nó trở
lên khả thi để lưu trữ CSDL, làm cho MMDB trở lên thực tế. Bởi vì dữ liệu có
thể truy cập trực tiếp trong bộ nhớ, MMDB có thể cung cấp thời gian đáp ứng
và thông lượng giao dịch tốt hơn nhiều so với CSDL thông thường. Điều này là
đặc biệt quan trọng đối với các ứng dụng thời gian thực mà các giao dịch phải


12
được hoàn thành đúng thời hạn được quy định nên trong luận văn này tôi đi

sâu tìm hiểu về CSDL trong bộ nhớ để có thể giải quyết được các hệ thống có
giao dịch lớn đòi hỏi đáp ứng thời gian thực.
1.3.2. Kiến trúc hệ thống cơ sở dữ liệu trong bộ nhớ
Hệ thống CSDL thường trú bộ nhớ chính không yêu cầu quản lý bộ nhớ
đệm, do đó các quan hệ trong hệ thống CSDL thường trú bộ nhớ chính có thể
được neo đậu tại các vị trí cố định ở bộ nhớ trong suốt thời gian tồn tại của
chúng. Ngoại trừ trong các trường hợp mà các quan hệ trải qua sự phát triển liên
tục và sự giảm sút trong một số lượng lớn, các bản ghi dữ liệu sẽ ở lại trong
các vị trí xác định bên trong các quan hệ của chúng trong các giai đoạn dài,
cho phép tham chiếu trực tiếp bởi địa chỉ bộ nhớ. Cách đánh địa chỉ trực tiếp
này ảnh hưởng đến các hoạt động CSDL mà tham chiếu đến các thực thể CSDL
riêng lẻ. Chi phí của tham chiếu một bản ghi thông qua một con trỏ bản ghi là
không cao trong bộ nhớ chính, nó chỉ là chi phí chuyển tiếp bộ nhớ, vì vậy các
con trỏ bản ghi có thể được sử dụng ở bất kỳ bản sao nào của các bản ghi hoặc
các giá trị trường bản ghi nào đó được sử dụng. Với bản chất kích thước cố định,
nhỏ của các con trỏ bản ghi và khả năng tham chiếu các bản ghi ngẫu nhiên ảnh
hưởng đến nhiều vùng trong kiến trúc CSDL thường trú bộ nhớ.
1.3.2.1. Lợi thế của đánh địa chỉ trực tiếp và thường trú bộ nhớ
Việc sử dụng các con trỏ bản ghi trong vị trí của các giá trị trường thực
tế mang lại một số lợi ích cho các cấu trúc chỉ mục. Thứ nhất, một con trỏ bản
ghi đơn cho phép một chỉ mục với khả năng truy cập đến cả giá trị thuộc tính
của một bản ghi và bản thân bản ghi đó, do đó làm giảm kích thước chỉ mục.
Thứ hai, điều này giúp loại bỏ sự phức tạp trong việc xử lý các trường dài, các
trường có độ dài thay đổi, các kỹ thuật nén, và các nhu cầu tính toán mức độ lưu
trữ cho chỉ mục. Thứ ba, di chuyển các con trỏ có xu hướng nhẹ nhàng hơn so
với di chuyển (thường là dài hơn) các giá trị thuộc tính khi cập nhật chỉ mục.
Cuối cùng, vì một con trỏ bản ghi đơn cho phép truy xuất tới bất kỳ trường
nào trong bản ghi nên các chỉ mục đa thuộc tính cần các cơ chế đơn giản hơn.



13
Sử dụng các con trỏ bản ghi cũng có lợi cho các quan hệ tạm (Temporary
relation). Các quan hệ tạm chứa các kết quả truy vấn không cần giữ các bản sao
của các bản ghi tham gia trong tập trả lời truy vấn; đơn giản chúng có thể chứa
các con trỏ tới chúng. Các trường bản ghi khi có trong tập câu trả lời truy
vấn thì có thể được xác định bởi một mô tả (descriptor) nhờ đó mà có thể trích
xuất được dữ liệu để thể hiện kết quả của truy vấn (ví dụ: tên trường dữ liệu). Vì
vậy các quan hệ tạm yêu cầu ít không gian hơn bởi vì chúng lưu trữ các các con
trỏ bản ghi thay vì toàn bộ dữ liệu và dễ tính toán không gian lưu trữ của
chúng; tất nhiên, số kết quả các bản ghi trong một tập câu trả lời truy vấn
không thể được biết trước, nhưng các yêu cầu không gian cho các bản ghi kết
quả riêng lẻ có thể biết, bởi vì chúng có chứa các con trỏ bản ghi có kích
thước cố định. Hơn nữa các quan hệ tạm chứa các con trỏ bản ghi tạo ra ít tốn
kém vì ít dữ liệu cần được sao chép.
Cũng giống như các kết quả truy vấn có thể được lưu trữ như các con trỏ
bản ghi trong một quan hệ tạm, chúng có thể cũng được lưu trữ như các con trỏ
bản ghi trong một quan hệ bình thường. Khi một phép toán join phức tạp có
thể phải thực hiện thường xuyên sẽ thích hợp hơn nếu thực hiện phép toán join
một lần và lưu trữ các kết quả (như các con trỏ bản ghi) vào một trong các quan
hệ mà liên quan đến phép toán join đó. Con trỏ bản ghi được lưu trữ thể hiện cho
một liên kết giữa bản ghi mà chứa con trỏ bản ghi và bản ghi đang được trỏ
tới. Một khi các liên kết đã được lưu trong một quan hệ, các kết quả join
tương ứng có thể được lấy ra bằng cách đơn giản là quét quan hệ chứa các liên
kết.
Một lợi thế khác của bộ nhớ thường trú là liên quan tới lập lịch. Vì các ổ
đĩa không được dùng để đọc thông tin CSDL trong quá trình xử lý giao dịch
thông thường và các giao dịch không bao giờ bị ngắt bởi I/O ổ đĩa, các giao
dịch có thể được kiểm soát một phần đưa ra khi chúng rời CPU. Đó là khả
năng cho một giao dịch báo CPU rằng không nên được Ưu tiên trong một hoạt
động cụ thể, chẳng hạn như trong quá trình chỉnh sửa tới một cấu trúc dữ liệu hệ



14
thống trong khi giao dịch đó đang thực thi trong một phiên cụ thể.
1.3.2.2. Các vấn đề với đánh địa chỉ trực tiếp
Địa chỉ trực tiếp của các bản ghi mang lại nhiều lợi ích nhưng nó cũng tạo
nên một số vấn đề. Càng có nhiều thực thể CSDL tham chiếu tới một bản ghi
trực tiếp thì chi phí cập nhật càng lớn khi bản ghi đó di chuyển, trong trường
hợp đó tất cả các con trỏ trỏ tới bản ghi đó phải được cập nhật vị trí mới của bản
ghi. May thay là sự thay đổi vị trí bản ghi là hiếm, chỉ gây ra khi tái tổ chức lại
quan hệ vì một số lượng lớn bị xóa hoặc khi trường có độ dài thay đổi của bản
ghi tràn không gian sẵn có của một phân vùng. Có thể là trong tình huống mọi
bản ghi trong một quan hệ đang được định vị lại do tổ chức lại quan hệ, các chỉ
mục của quan hệ nên đơn giản là xây dựng lại.
1.3.2.3. Tổ chức dữ liệu thường trú bộ nhớ
Trong phần này giới thiệu cấu trúc của các phân đoạn và các phân
vùng, chúng là các đơn vị cơ bản của địa chỉ và phân bổ bộ nhớ dùng để quản lý
tất cả các đối tượng CSDL; cấu trúc của các quan hệ, các quan hệ tạm, các chỉ
mục; các mục CSDL mà mô tả các nội dung của các quan hệ và các chỉ mục.
1.3.2.3.1. Các phân đoạn và các phân vùng
Khả năng đánh địa chỉ trực tiếp của các thực thể CSDL cho thấy rằng các
lân cận vật lý gần của các bản ghi là không quan trọng trong hiệu suất lấy dữ
liệu (thực vậy, các bản ghi của một quan hệ có thể được rải trên khắp bộ nhớ).
Tuy nhiên, các thành phần khác của CSDL yêu cầu các bản ghi (và các thành
phần chỉ mục) được tổ chức với thiết kế cụm và mô-đun. Vì lý do quản lý bộ
nhớ, các quan hệ và các chỉ mục mỗi cái có một không gian bộ nhớ riêng biệt,
cho phép chúng tạo, tổ chức lại hoặc phá hủy mà không ảnh hưởng tới các quan
hệ và các chỉ mục khác. Các hoạt động checkpoint ghi vào các phần đĩa của các
quan hệ hoặc các chỉ mục; có các bản ghi dữ liệu sắp xếp trong một tổ chức phi
cụm sẽ làm cho thủ tục checkpoint quá phức tạp.

Mọi đối tượng CSDL (quan hệ, chỉ mục, hoặc cấu trúc dữ liệu hệ thống)
được lưu trữ trong phân đoạn logic của chúng. Các phân đoạn bao gồm các phân


15
vùng có kích thước cố định, đó là cấp phát đơn vị bộ nhớ cho bộ nhớ cơ sở
ánh xạ phần cứng. Các phân vùng đại diện cho một đơn vị đầy đủ của bộ
nhớ; các thực thể CSDL được lưu trữ trong các phân vùng và không vượt qua
ranh giới phân vùng. Các phân vùng cũng được sử dụng như đơn vị truyền dữ
liệu vào ổ cứng trong các hoạt động của checkpoint. Kích thước phân vùng tối
ư u được xác định bởi nhiều yếu tố: Hiệu suất lưu trữ, hỗ trợ bảng phân vùng cơ
sở và hiệu suất checkpoint. Như vậy, chọn lựa và kích thước tối ưu liên quan
đến việc xử lý một danh sách cân đối. Một kích thước phân vùng lớn có thể
dẫn đến phân mảnh quá nhiều bộ nhớ trong hoặc có thể gây ra quá nhiều dữ
liệu sạch phải ghi trong một hoạt động checkpoint. Mặt khác, một kích thước
phân vùng nhỏ có thể gây nên một số lượng lớn của phân vùng cần cho một đối
tượng, do đó tạo ra nhiều không gian không cần thiết cho các
mục mà giữ thông tin phân vùng và cho bộ nhớ cơ sở ánh xạ phần
cứng.

a) Phân đoạn mới được chèn

b) Phân đoạn sau hoạt động cập nhật

Hình 1. 3. Cấu trúc phân đoạn
Các phân vùng được đánh địa chỉ offset logic từ điểm bắt đầu phân đoạn
của chúng (Hình 1.3). Sau khi tạo ra, một phân đoạn sẽ bao gồm một tập các
phân vùng tiếp giáp (Hình 1.3a). Khi các thực thể trong phân đoạn bị xóa và có
thể tổ chức lại, một vài phân vùng có thể được loại bỏ, do đó tạo ra “các lỗ



16
hổng” trong phân đoạn. Các phân vùng lân cận logic không làm ảnh hưởng đến
việc phát hiện ra các địa chỉ bộ nhớ không hợp lệ, vì chúng được giữ bởi phần
cứng ánh xạ bộ nhớ cơ sở sử dụng một bảng phân vùng của phân đoạn. Tạo ra
một phân vùng mới cho một phân đoạn liên quan tới tạo ra một phần tử mới
trong bảng phân vùng của phân đoạn và phân phối bộ nhớ vật lý cho phân vùng
mới. Danh mục quan hệ duy trì một phần tử cho mỗi phân vùng trong một quan
hệ, vì vậy các địa chỉ phân vùng hợp lệ mới có thể được tạo ra sử dụng danh
sách này.
1.3.2.3.2. Các quan hệ
Các phân vùng quan hệ là các đơn vị độc lập của bộ nhớ mà chứa các bản
ghi của các quan hệ và các bản ghi không vượt qua ranh giới phân vùng.
Một phân vùng quan hệ chứa thông tin kiểm soát, một danh sách bản ghi mà
phát triển từ Dưới lên và String Space Heap được phát triển từ trên xuống
(Hình 1.4). Bộ kiểm soát thông tin mô tả trạng thái của phân vùng, bao gồm
tính toán số lượng không gian trống của String Space Heap, một con trỏ trỏ vào
một danh sách các khe bản ghi tự do, tính toán các khe bản ghi sử dụng, tính
toán số byte String Space Heap sử dụng và một chốt kiểm soát khối mà hạn chế
truy cập tới phân vùng trong quá trình các hoạt động cập nhật.

Hình 1. 4. Cấu trúc phân vùng quan hệ
Vì các địa chỉ bộ nhớ được sử dụng định danh bản ghi nên các bản ghi


17
thay đổi vị chí càng ít càng tốt. Do đó, các bản ghi được tạo độ dài cố định vì
vậy mà các bản ghi mới được chèn vào có thể dễ dàng điền đầy các lỗ hổng bị
bỏ lại bởi các bản ghi bị xóa trước đó, như vậy tránh được sự cần thiết cho việc
tổ chức lại danh sách bản ghi để phục hồi các khối bộ nhớ. Các chuỗi có độ dài

thay đổi được lưu trữ riêng trong String Space Heap và các địa chỉ offset của
chuỗi được lưu trữ trong các bản ghi có độ dài cố định. Mặc dù tính sẵn sàng tiếp
theo của khe bản ghi dữ liệu tự do được sử dụng để giữ một bản ghi được
chèn mới trong khi đang xử lý bình thường, nó có thể là cần thiết để phân bổ
một khe cụ thể trong quá trình khôi phục; do đó danh sách các khe bản ghi tự do
được quản lý như là một danh sách liên kết kép. Các bản ghi chứa thông tin kiểm
soát mô tả trạng thái của khe bản ghi (bản ghi hợp lệ hoặc bản ghi bị xóa) và
khả năng các giá trị của trường là rỗng. Khi đó phải có chỗ cho một cờ trạng
thái và hai con trỏ để duy trì danh sách kép rỗng. Các bản ghi có một yêu cầu
kích thước tối thiểu bằng với kích thước của cờ cộng với kích thước của hai
danh sách con trỏ. Độ dài của bản ghi và thông tin địa chỉ offset của trường
không cần được lưu trữ với các bản ghi riêng biệt, vì thông tin này là không đổi
đối với một quan hệ. Do đó nó chỉ được lưu trữ một lần trong phần tử mục của
quan hệ.
Vì rằng các lỗ hổng gây ra bởi việc xóa được cho phép có trong không
gian bản ghi của các phân vùng quan hệ, di chuyển trực tiếp cần yêu cầu cấu
trúc bổ sung để liên kết bản ghi hợp lệ trong một chuỗi. Thay vì, di chuyển
trực tiếp của một phân vùng quan hệ không được phép, tất cả các truy cập tới
quan hệ được thực hiện thông qua một chỉ mục và tất cả các quan hệ được yêu
cầu phải có ít nhất một chỉ mục.
1.3.2.3.3. Các quan hệ tạm
Các quan hệ tạm chứa các kết quả truy vấn trung gian và cuối cùng. Hầu
hết các kết quả truy vấn bao gồm thông tin mà thực sự tồn tại trong CSDL,
nhưng một vài truy vấn tính toán các giá trị mới (ví dụ: các truy vấn chứa các
phép toán tổng hợp). Khi không có các giá trị tính toán, các quan hệ tạm gồm có


18
một danh sách các con trỏ bản ghi và một bộ mô tả kết quả mà thể hiện tên các
trường thuộc quan hệ tạm. (Mỗi bản ghi kết quả có thể chứa vài con trỏ bản

ghi, mỗi con trỏ bản ghi tương ứng với một bản ghi riêng biệt với các trường
tham gia trong bản ghi kết quả cuối cùng). Bộ mô tả đóng vai trò vị trí của
phép chiếu (projection), sự trích trọn trường là không cần thiết.
Khi một quan hệ tạm thực hiện chứa các giá trị tính toán, cấu trúc của nó
hầu như đồng nhất với một quan hệ thông thường trừ trường hợp đối với bộ
mô tả bổ sung. Chỉ trong các trường hợp hiếm hoi thì các phân vùng quan hệ
tạm sẽ chứa các không gian chuỗi, vì là sẽ yêu cầu một truy vấn mà sử dụng
một phép tổng hợp để tạo ra các chuỗi có độ dài thay đổi mới. Không như các
quan hệ thông thường, một quan hệ tạm có thể được viếng thăm trực tiếp bởi
vì không có các lỗ hổng trong danh sách bản ghi, tuy nhiên cũng có khả năng
có các chỉ mục trong một quan hệ tạm.
Một ví dụ điển hình của quan hệ tạm đó là giả sử có quan hệ Nhan_vien
và quan hệ Phong (Hình 1.5) được liên kết trên các trường Ma_Phong của
chúng. Với truy vấn: Lấy tên nhân viên, tuổi nhân viên và tên phòng cho tất cả
các nhân viên có tuổi dưới 65. Mỗi kết bản ghi kết quả trong danh sách tạm sẽ
chứa một cặp con trỏ bản ghi, một con trỏ trỏ tới bản ghi Nhan_vien và một con
trỏ trỏ tới bản ghi Phong, và bảng mô tả kết quả liệt kê các trường trong mỗi
quan hệ xuất hiện trong bảng kết quả.


19

Hình 1. 5. Quan hệ và Thiết kế chỉ mục
1.3.2.3.4. Các chỉ mục
Không giống như các phân vùng quan hệ, các phân vùng chỉ mục không
có các thực thể CSDL mà được tham chiếu từ bên ngoài phân đoạn của
chúng. Các phân vùng chỉ mục đơn giản là các khối nhớ từ các nút chỉ mục,
các bảng chỉ mục và các thành phần chỉ mục hỗn hợp khác được cấp phát. Do
vậy, tổ chức lại một phân đoạn chỉ mục chỉ ảnh hưởng tới chính nó. Điều này
đặt ra ràng buộc trên thiết kế cấu trúc chỉ mục vì với mỗi thành phần cấu trúc

chỉ mục phải thích hợp trong một phân vùng đơn. May mắn điều này không
phải là vấn đề cho bất kỳ các cấu trúc chỉ mục bộ nhớ chính nào.
Nhớ rằng các chỉ mục chỉ chứa các con trỏ bản ghi, vì các con trỏ bản
ghi cung cấp truy cập tới các điểm đầu và các trường của của các bản ghi. Hình
1.5 đưa ra một ví dụ về hai chỉ mục được dựng lên cho quan hệ Nhan_vien.
(Các chỉ mục này được thể hiện như các bảng được sắp xếp cho đơn giản). Nếu
các con trỏ bản ghi sử dụng trong các cấu trúc chỉ mục thực sự trỏ tới điểm bắt
đầu của các bản ghi, sau đó mỗi phép toán so sánh trong các lộ trình chỉ mục sẽ
yêu cầu một tính toán địa chỉ offset để xác định vị trí trường khóa (key field).
Thay vì các con trỏ bản ghi sử dụng trong các chỉ mục trỏ trực tiếp tới trường


20
khóa (hoặc tới trường khóa thứ nhất trong trường hợp một chỉ mục đa thuộc
tính), do đó loại bỏ phần tính địa chỉ offset này để xác định trường khóa, trong
khi cần phải một tính toán địa chỉ offset phủ định để xác định tiêu đề của mỗi
bản ghi nhận được trong quá trình tìm kiếm. Tuy nhiên giả định rằng tính trung
bình số bản ghi tham chiếu trong phép tìm kiếm sẽ lớn hơn số các bản ghi
nhận được. Thậm chí trong trường hợp các chỉ mục đa thuộc tính tránh được chi
phí tính toán địa chỉ offset của trường thứ nhất là một tiết kiệm đáng kể, như
hầu hết các so sánh liên quan chỉ trường thứ nhất - các trường khác được so
sánh duy chỉ khi giá trị trường thứ nhất bằng với giá trị tìm kiếm.
Các chỉ mục có thể được khóa trên nhiều kiểu và định dạng khác nhau của
dữ liệu. Ví dụ các con trỏ bản ghi của một chỉ mục có thể tham chiếu trực tiếp
các số nguyên, số thực, bit có đọ dài cố định hoặc chuỗi ký tự hoặc các giá trị
do người dùng định nghĩa có độ dài cố định. Chúng có thể tham chiếu các
trường bản ghi mà chứa các địa chỉ offset với chuỗi bit có độ dài thay đổi,
chuỗi ký tự có độ dài thay đổi hoặc các giá trị do người dùng định nghĩa có độ
dài thay đổi. Chúng có thể tham chiếu các trường chứa các con trỏ bản ghi mà
trong một lần tham chiếu của các kiểu dữ liệu đã đề cập trên đây hoặc ngay cả

các con trỏ bản ghi dữ liệu khác. Nếu một lộ trình so sánh phải được xác định
phương pháp so sánh để sử dụng cho mỗi so sánh thì nó có thể dễ dàng dành
nhiều thời gian quyết định cho phương pháp so sánh riêng hơn là thực hiện so
sánh. Thay vì sử dụng một lộ trình so sánh mục đính chung, mỗi chỉ mục có lộ
trình so sánh liên quan tới nó mà được liên kết động với code chỉ mục chung
khi chỉ mục được sử dụng. Lộ trình so sánh cho một chỉ mục được biên dịch và
được lưu trữ trong phần tử mục của chỉ mục khi chỉ mục được tạo và code chỉ
mục chung chứa một bước nhảy tới một lộ trình so sánh chỉ mục cụ thể thay vì
lộ trình so sánh chung. Lộ trình so sánh biên dịch này cũng cho phép người
dùng cung cấp các kiểu riêng của chúng và các lộ trình so sánh, nhờ đó tạo kiểu
cấu trúc của CSDL có khả năng mở rộng, lộ trình so sánh tương tự có thể được
sinh ra cho các phép toán join và project.


×