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 Quang
Trung tâm Công nghệ Thông tin
Tóm tắt:
Cơ sở dữ liệu trong 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ọng trong 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 ứng thời gian thự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ăm sóc khá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 để ứ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 độ 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ời gian thự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ệu trong 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ệu trong 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
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. ứng dụng cập nhật dữ liệu và 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àn trong bộ nhớ. Các bớc này trong thự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ản trong 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ính toà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 ứng dụ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
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 ứng dụ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 ứng dụ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 ứng dụng chứ không cho phép nhiều ứng dụng cùng truy cập.
CSDL loại này đợc dùng nhiều trong các ứng dụ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ăm sóc khách hàng
Sau khi thiết kế hệ thống Tính cớc và Chăm sóc khá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ời gian 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,