Lĩnh vực Công nghệ thông tin
Cơ sởdữliệuthờigianthực và ứngdụngtrong
bài toántính cớc vàchămsóckhách hàng
ThS.Đặng Hà Vinh,KS. Nguyễn Đăng Quang
Trung tâm Công nghệ Thông tin
Tóm tắt:
Cơ sởdữliệutrong bộ nhớ IMDS (In Memory Database System hoặc còn gọi là
MMDS - Main Memory Database System) có một vai trò rất quan trọngtrong sự phát triển
của ngành công nghệ thông tin hiện đại. IMDS xuất hiện trong các hệ thống cung cấp các
dịch vụ yêu cầu các đáp ứngthờigianthực nh các Tổng đài thế hệ mới, các router hoặc các
chơng trình phải xử lý số lợng rất lớn các giao dịch trong một giây nh các hệ thống xử lý cớc
nóng, hệ thống chămsóckhách hàng, hệ thống cung cấp SMS, hệ thống cung cấp các dịch vụ
trên Internet. Để nâng cao tính mềm dẻo, độ thông minh và khả năng xử lý dữliệu nhanh của
các sản phẩm phần mềm của mình, nhóm thiết kế phòng Phần mềm Viễn thông thuộc trung
tâm Công nghệ Thông tin đã nghiên cứu để ứngdụng công nghệ Cơsởdữliệu bộ nhớ vào
trong Hệ thống Tính cớc vàchămsóckháchhàng đang đợc nâng cấp.
1.Yêu cầu thực tiễn
Mức độ thông minh của các thiết bị viễn thông ngày càng tăng đi đôi với nó là khối l-
ợng dữliệu mà các hệ thống phần mềm nhúng phải xử lý ngày càng nhiều và phức tạp. Các
nhà phát triển phần mềm nhúng nhận thấy rằng các tổ chức dữliệu theo phơng pháp tiếp cận
truyền thống trở nên ngày càng khó khăn và chơng trình trở nên khó bảo dỡng và nâng cấp
mỗi khi nảy sinh yêu cầu mới. Các chơng trình cung cấp các dịch vụ thờigianthực hoặc gần
thực trở nên nặng nề khi sử dụng các flat-file hoặc cơsởdữliệu truyền thống chậm chạp.
Cùng với đó, giá RAM ngày cảng giảm và tốc độ CPU ngày càng nhanh khiến cho các nhà
phát triển nghĩ tới lối thoát là xây dựng các Cơsởdữliệutrong bộ nhớ. IMDS đã ra đời từ
nhu cầu đó. Các nhà phát triển phần mềm lúc này chỉ việc chú trọng vào việc giải quyết bài
toán của mình còn việc tổ chức, lu trữ và truy suất dữliệutrong bộ nhớ thế nào hoàn toàn do
IMDS đảm nhiệm.
Việc sử dụng IMDS đặc biệt phát huy hiệu quả trong các hệ thống nhúng nh các IP
router hiện đại, các tổng đài thế hệ mới, các phần mềm cần yêu cầu cao về hiệu xuất vàthời
gian đáp ứng. Các sản phẩm của một sốhãng lớn đều có sử dụng các IMDS nh Kenan của
CSG, các giải pháp của Amdocs
2. So sánh DBMS và IMDS
Các DBMS truyền thống lu trữ dữliệu trên đĩa cứng nên có tốc độ truy xuất dữliệu bị
hạn chế bởi tốc độ chậm chạp của các linh kiện cơ khí tạo nên đĩa cứng. Còn đúng nh tên gọi,
IMDS lu trữ dữliệu hoàn toàn trên bộ nhớ và chỉ truy xuất đĩa cứng trongtrờng hợp cần.
Phải chăng IMDS chỉ đơn giản là các DBMS đợc nạp hoàn toàn vào bộ nhớ? Câu trả
lời là không. IMDS có những khác biệt cơ bản với ngời họ hàng DBMS của nó. Do không
phải truy xuất đĩa cứng nữa nên không có phần dữliệu nào bị chuyển qua lại giữa đĩa cứng và
bộ nhớ. Điều đó dẫn tới giảm thiểu đợc tiêu tốn xung nhịp CPU vàcó đáp ứng nhanh hơn từ
hàng chục đến hàng trăm lần so với các DBMS truyền thống. Sau đây là các khác biệt cơ bản
giữa DBMS truyền thống và IMDS
2.1.Lu trữ tạm thời (Caching)
Để hạn chế số lần phải truy xuất đĩa cứng, các DBMS truyền thống đều sử dụng biện
pháp lu giữ phần dữliệu đợc truy xuất mới nhất trong bộ nhớ. Caching bao gồm cả việc đồng
Học viện Công nghệ BCVT
Hội nghị Khoa học lần thứ 5
bộ dữ liệu. Việc này đảm bảo rằng phần ảnh của dữliệu đợc cache giống với phần gốc đợc lu
trên đĩa cứng của nó. Ngoài ra caching gồm cả thủ tục tìm kiếm dữ liệu. Nếu dữliệu mà ứng
dụng yêu cầu nằm trong cache thì nó đợc lấy ra và trả về cho chơng trình, nếu không thì dữ
liệu này sẽ đợc lấy ra từ đĩa cứng và thêm vào cache để cho những lần dùng sau.
Đối với các DBMS, các thủ tục này đều đợc thực hiện cho dù nó đợc nạp vào bộ nhớ.
Còn đối với các IMDS, do loại bỏ đợc công đoạn ra vào đĩa nên caching là không cần thiết do
đó giảm bớt đợc sự phức tạp và tiêu tốn tài nguyên RAM và xung nhịp CPU
2.2. Data-Transfer Overhead
Chúng ta hãy xem xét điều gì sẽ xẩy ra khi ứngdụng truy vấn dữliệu sau đó thay đổi
nó và ghi lại trên DBMS truyền thống.
Hình 1: Luồng dữliệu luân chuyển trong một DBMS truyền thống
Màu đỏ thể hiện luồng dữ liệu
Mầu xám thể hiện luông thông điệp
1. ứngdụng truy vấn dữliệu từ CSQL thông qua các giao diện API của nó.
2. CSDL hớng dẫn hệ thống file lấy dữliệu từ thiết bị lu trữ.
3. Hệ thống file sẽ chuyển một bản copy của dữliệu vào cache của nó và chuyển một
bản copy khác trả lại cho CSDL.
4. CSDL giữ lại một bản copy cho cache của nó và chuyển một bản cho ứng dụng.
5. ứngdụng cập nhật dữliệuvà chuyển nó trở lại cho CSDL thông qua các API của nó
6. CSDL sao lại dữliệu đã thay đổi vào cache.
7. Bản sao của cache của CSDL cuối cũng cũng sẽ đợc lu vào hệ thống file, tại đó cache
của hệ thống file cũng đợc cập nhật.
8. Cuối cùng thì dữliệu lại đợc ghi vào thiết bị lu trữ vật lý
Các bớc này là trình tự cơ bản không thể bỏ qua trong bất kỳ một CSDL truyền thống
nào ngay cả khi công việc đợc thực hiện hoàn toàntrong bộ nhớ. Các bớc này trongthực tế
còn phức tạp hơn nhiều khi tính đến các công đoạn Log các thao tác và một số công đoạn
quan trọng khác
Học viện Công nghệ BCVT
Lĩnh vực Công nghệ thông tin
Ngợc lại, trong các IMDS, việc truyền dữliệu qua lại là không cần thiết. CSDL cho
cho phép ngời dùng truy cập dữliệu thông qua các con trỏ trực tiếp tới dữ liệu. Tuy nhiên dữ
liệu vẫn đợc đảm bảo an toàn do con trỏ này chỉ đợc sử dụng thông qua các API của IMDS.
Loại bỏ đợc việc phải chuyền dữliệu qua lại nhiều lần làm tăng tốc độ truy xuất dữ liệu.
Giảm đợc số lợng bản sao của dữliệu dẫn đến giảm tài nguyên chiếm dụng bởi CSDL. Sự
đơn giảntrong hoạt động khiến cho thiết kế đơn giản làm tăng độ tin cật của hệ thống
2.3. Xử lý giao dịch
Trong các trờng hợp có sự cố nghiêm trọng nh là mất điện, CSDL dựa trên đĩa cứng
sẽ đợc khôi phục bằng cách commit những giao dịch đã đợc hoàn tất và hồi phục lại dữliệu
liên quan đến những giao dịch cha hoàn tất từ log file khi hệ thống khởi động lại. Các CSDL
truyền thống xử lý các giao dịch dựa trên các log file.
IMDS cũng cup cấp các tính năng đảm bảo tínhtoàn vẹn của các giao dịch. Để làm
điều này, các IMDS lu lại các bản sao của các đối tợng đợc cập nhật hay bị xóa và một danh
sách các dữliệu đợc chèn vào CSDL trong suốt quá trình giao dịch diễn ra. Khi ứngdụng
commit giao dịch, phần bộ nhớ của các bản sao của các dữliệu đợc bỏ đi và các dữliệu đợc
chèn vào đợc chuyển tới vùng nhớ chứa dữliệu chính của CSDL, thao tác này đợc thực hiện
rất nhanh và hiệu quả. Nếu ứngdụng hủy giao dịch thì các bản sao dữliệu đợc chuyển thành
bản chính và các dữliệu đợc chèn vào trong quá trình giao dịch bị huỷ bỏ.
Nếu các sự cố nghiêm trọng xẩy ra thì dữliệutrong IMDS sẽ bị mất. Đó là điều khác
biệt lớn giữa các DBMS truyền thống và các IMDS. Khi hệ thống đợc khởi động lại, để có thể
tiếp tục sử dụng đợc thì dữliệu phải đợc nạp lại bằng cách này hay cách khác. Nguyên nhân
của sự khác biệt này là IMDS đợc tạo ra để tăng tối đa tốc độ truy xuất dữliệucó thể nên
một sốtính năng nh ghi log file và các tính năng làm ảnh hởng đến hiệu xuất khác đều bị loại
bỏ.
Đặc tính này của IMDS rõ ràng là không phù hợp với mọi loại ứng dụng. Tuy nhiên
lại rất thích hợp trong lĩnh vực phần mềm nhúng hoặc những ứngdụng đòi hỏi truy xuất dữ
liệu với tốc độ thờigian thực.
Tuy nhiên một phần lớn các IMDS hiện nay đều cung cấp tính năng Sao lu và Hồi
phục dữ liệu. Có thể kể đến các IMDS phổ biến là: FastDB, GigaBase, Goods
3. Các mô hình IMDS
Hiện tại, các IMDS cha hề có chuẩn. Các hãng phát triển hoặc là áp dụng các chuẩn
của DBMS hoặc tự định nghĩa riêng cho mình. Các cách tiếp cận và triển khai, các khái niệm
của chúng cũng khác nhau. Trên thế giới các IMDS tồn tại dới 2 mô hình chính là mô hình h-
ớng ứngdụng (Application Oriented - AO) và mô hình Client/Server. Phần lớn các IMDS
hiện nay đều là các CSDL hớng đối tợng hoặc CSDL Hớng đối tợng - Quan hệ.
3.1. Mô hình client/server
Đây là mô hình gần với các DBMS truyền thống nhất và nổi bật trongsố này là
GOODS (Generic Object Oriented Database System). Chúng hỗ trợ môi trờng phân tán vàcó
rất nhiều tính năng của một DBMS nhng có lợi điểm là truy xuất dữliệu rất nhanh so với các
sản phẩm truyền thống. Client và Server có thể nằm trên các node khác nhau.
Mô hình này thờng đợc sử dụngtrong các ứngdụng lớn với những đòi hỏi khắt khe về
thời gian đáp ứng.
GOODS là một IMDS mã nguồn mở khá mạnh với rất nhiều tính năng của một
DBMS nh Replication, quản lý các giao dịch chặt chẽ nhờ các REDO log và Global History
Log. GOODS là một CSDL phân tán, dữliệucó thể đặt trên nhiều node trong mạng.
Học viện Công nghệ BCVT
Hội nghị Khoa học lần thứ 5
3.2.Mô hình AO
Đây là một mô hình khá phổ biến của IMDS. Chúng đợc cung cấp dới dạng các th
viện nhúng vào trong chơng trình phần mềm. Thực chất chúng cung cấp các dịch vụ lu trữ,
truy vấn và cập nhật dữliệu cho các ứng dụng. Thờng thì các IMDS không thể sửa đổi cấu
trúc khi chạy chơng trình mà điều này đợc thực hiện khi viết chơng trình ví dụ của loại này là
FastDB, GigaBase, Berkeley DB.
Đa phần IMDS cũng cung cấp khả năng Sao lu và hồi phục dữ liệu. Khi ứngdụng gặp
sự cố thì dữliệu vẫn có thể khôi phục lại đợc nh trớc đó nhờ các file dữliệu đợc lu trên ổ
cứng. Các IMDS loại này mang lại cho ứngdụng khả năng truy cập dữliệu rất nhanh.
Các DBMS loại này thờng chỉ hỗ trợ việc truy cập dữliệu từ một hay nhiều tiến trình
trong cùng một ứngdụng chứ không cho phép nhiều ứngdụng cùng truy cập.
CSDL loại này đợc dùng nhiều trong các ứngdụng đòi hỏi tốc độ xử lý cao và phải
quản lý rất nhiều tham số nh hệ thống tính cớc của chúng tối là một ví dụ.
3.3. áp dụng vào Hệ thống Tính cớc vàchămsóckhách hàng
Sau khi thiết kế hệ thống Tính cớc và Chămsóckhách hàng, hệ thống đã phức tạp lên
rất nhiều, các bảng tham số đã lên tới hơn 70 và cấu trúc tham số vô cùng phức tạp. Việc
quản lý các thông số này trở nên khó khăn và dễ gây lỗi. Chúng tôi đã nghĩ ngay đến việc
ứng dụng IMDS vào chơng trình để giảm bớt công sức trong việc quản lý các tham số.
Sau một sốthờigian nghiên cứu và tìm kiếm thông tin trên mạng, chúng tôi đã tìm đ-
ợc một số IMDS phù hợp với nhu cầu và điều kiện của mình. Sau đây chúng tôi xin giới thiệu
2 IMDS nổi bật là FastDB và GigaDB.
Đây đều là 2 IMDS mã nguồn mở và đã đợc sử dụng khá phổ biến. Cả hai cùng cung
cấp tính năng sao lu và phục hồi dữliệu rất tốt. Chúng là các AO viết bằng ngôn ngữ C++
nên việc giao tiếp cũng rất thuận lợi. Và một điều đặc biệt quan trọng, chúng đều là các
CSDL hớng đối tợng nên rất thuận tiện trong việc tích hợp vào các chơng trình hiện tại của
phòng đang phát triển bằng công nghệ hớng đối tợng.
GigaBase sử dụng kỹ thuật page-pool để truy cập dữliệu nên sẽ lu trữ đợc nhiều dữ
liệu hơn nhng chậm hơn so với FastDB sử dụng kỹ thuật virtual-memory. Qua cân nhắc,
chúng tôi lựa chọn FastDB do chơng trình Tính cớc của chúng tôi đòi hỏi thờigian đáp ứng
ngắn và phải xử lý rất nhiều dữliệucuộc gọi.
Sau đây chúng tôi xin giới thiệu về FastDB:
FastDB là một IMDS hớng ứngdụngvà hớng đối tợng, mã nguồn mở. Nó có một số
tính năng mạnh nh quản lý giao dịch, tự động sao lu và hồi phục khi có sự cố. Thủ tục
commit hoạt động rất hiệu quả dựa trên thuật toán shadow root pages. Và một tính năng
rất hay nữa của FastDB là nó hỗ trợ truy vấn dữliệu thông qua một ngôn ngữ gần giốn SQL
(SQL liked language). Câu lệnh truy vấn bao gồm: điều kiện lọc dữ liệu, sắp xếp dữ liệu.
Một bản ghi trong FastDB chính là một đối tợng của chơng trình. Các thủ tục trong
đối tợng đó có thể dùng nh những từ khóa trong câu lệnh truy vấn dữ liệu.
Công nghệ sắp xếp và tìm kiếm dữliệu ở đây là T-tree, extensible hash table, GiST
khiến cho chơng trình có thể truy vấn dữliệu rất hiệu quả.
Với những tính năng u việt của mình, FastDB sẽ đóng một vai trò quan trọngtrong hệ
thống Tính cớc và Chămsóckháchhàng của chúng tôi trongthờigian tới.
Mong rằng bài tham luận của chúng tôi sẽ giúp ích đợc nhiều cho quí độc giả.
Học viện Công nghệ BCVT
. Lĩnh vực Công nghệ thông tin
Cơ sở dữ liệu thời gian thực và ứng dụng trong
bài toán tính cớc và chăm sóc khách hàng
ThS.Đặng Hà Vinh,KS. Nguyễn Đăng. đã nghiên cứu để ứng dụng công nghệ Cơ sở dữ liệu bộ nhớ vào
trong Hệ thống Tính cớc và chăm sóc khách hàng đang đợc nâng cấp.
1.Yêu cầu thực tiễn
Mức độ