Tải bản đầy đủ (.doc) (8 trang)

TIỂU LUẬN MÔN CƠ SƠ DỮ LIỆU NÂNG CAO CƠ SỞ DỮ LIỆU THỜI GIAN THỰC ỨNG DỤNG TRONG BÀI TOÁN TÍNH CƯỚC ĐIỆN THOẠI VÀ CHĂM SÓC KHÁC

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 (139.94 KB, 8 trang )

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
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. Ở đây chúng tôi xin giới thiệ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.
I. 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, lưu 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 CSG, các giải pháp của Amdocs
II. So sánh DBMS và IMDS


Các DBMS truyền thống lưu 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 lưu trữ dữ liệu hoàn toàn trên bộ nhớ và
chỉ truy xuất đĩa cứng trong trườ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
II.1. Lưu 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 lưu 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 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 lưu 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
II.2. Chuyển giao dữ liệu
Chúng ta hãy xem xét điều gì sẽ xẩy ra khi ứng dụ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. Ứng dụ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ị lưu 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 lưu 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ị lưu 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
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
II.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 chưa 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 cung 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 lưu 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 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 ứng dụ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ệu trong 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ệu có 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 ứng
dụng đòi hỏi truy xuất dữ liệu với tốc độ thời gian 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
lưu và Hồi phục dữ liệu. Có thể kể đến các IMDS phổ biến là: FastDB,
GigaBase, Goods
III. Các mô hình IMDS
Hiện tại, các IMDS chưa 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 ứng dụ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ệ.
III.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 trong số
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 nhưng 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ụng trong các ứng dụ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ệu có thể đặt
trên nhiều node trong mạng.
II.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ụ lưu 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 lưu 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 lưu 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ụ.
III.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 lưu 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ẽ lưu trữ
được nhiều dữ liệu hơn nhưng 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ời gian đáp ứng ngắn và phải xử lý rất nhiều
dữ liệu cuộc gọi.
Sau đây chúng tôi xin giới thiệu về FastDB:
FastDB là một IMDS hướng ứng dụng và 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 lưu 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ọng trong hệ thống Tính cước và Chăm sóc khách hàng trong thời gian tới.

×