IV.3. Thử nghiệm và kết quả

Một phần của tài liệu 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 (Trang 50)

Chƣơng 4: THỬ NGHIỆM CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ

IV.3. Thử nghiệm và kết quả

config.x ml file.prop erties H ib e rn a te P e rs is te n ce F ra m e w o rk Disk-based DB

Việc phân tách hệ thống thành 3 lớp khác nhau sẽ đảm bảo cho việc sử dụng nhiều hình thức giao tiếp với người sử dụng như thông qua chương trình nghiệp vụ, truy cập bằng Web,... tuỳ theo thói quen, trình độ và chức năng của các nhóm người sử dụng.

 Mô hình phân lớp chức năng tiến trình:

M&M Client Intranet TCP/IP DAL JDBC Connection Business Class Process Thread Disk-based DB

Ứng dụng khi được Khởi chạy sẽ khởi tạo các tiến trình, các tiến trình này sẽ xử lý nghiệp vụ thông qua các lớp Business. Tiến trình và Business Class sẽ giao tiếp với CSDL thông qua lớp giao tiếp DB (Data Access Layer).

IV.2.2. Mô hình hệ thống sau khi áp dụng IMDB

IMDB trước hết vẫn là Cơ sở dữ liệu, nên nó có các chức năng và cách dùng như Cơ sở dữ liệu truyền thống. Thêm vào đó, hầu hết các sản phẩm IMDB đều có thêm phần Cache, để đồng bộ dữ liệu giữa nó và CSDL truyền thống. Khi đó, ta sẽ được mô hình sử dụng khác của IMDB. Dưới đây trình bày hai cách sử dụng IMDB.

IV.2.2.1 Sử dụng IMDB như một CSDL độc lập

IMDB mang đầy đủ các chức năng của một CSDL quan hệ, hệ thống phần mềm có thể sử dụng IMDB như một CSDL riêng, tương tự như sử dụng CSDL truyền thống dựa trên ổ đĩa cứng.

Application IMDB

Hình IV.2 – Mô hình hệ thống phần mềm sử dụng IMDB

Dữ liệu, bảng biểu được lưu trữ trên IMDB. Ứng dụng thực hiện các thao tác truy vấn, thay đổi dữ liệu trên CSDL thông qua kết nối ODBC, JDBC hoặc hibernate.

 Ưu điểm:

 Đạt tốc độ truy vấn nhanh nhất với tất cả các dữ liệu của các bảng.  Chỉ cần quản lý IMDB

 Nhược điểm: Tốn nhiều tài nguyên, đặc biệt là CPU và RAM.

 Khi nào nên dùng:

 Hệ thống cần đạt tốc độ truy vấn nhanh với tất cả các loại dữ liệu  Có đủ tài nguyên CPU và RAM để chứa toàn bộ dữ liệu, và đảm bảo cho IMDB hoạt động

IV.2.2.2 Sử dụng IMDB Cache

Sử dụng cả CSDL truyền thống kết hợp với IMDB Cache. Khi ấy, những dữ liệu hay thay đổi và được truy vấn nhiều được đưa lên IMDB cache, những dữ liệu còn lại vẫn trên CSDL hiện tại.

Application

Disk-based DB

IMDB Cache

Hình IV.3 – Kết hợp CSDL truyền thống và IMDB Cache

 Ưu điểm:

 Đạt tốc độ truy vấn nhanh với các bảng dữ liệu trên IMDB cache  Tiết kiệm tài nguyên, do chỉ cần lưu một số dữ liệu được truy vấn nhiều trên IMDB cache.

 Nhược điểm:

 Cần quản lý cả IMDB và CSDL hiện tại, và việc đồng bộ dữ liệu giữa chúng.

 Chỉ có nhu cầu đưa một số dữ liệu lên IMDB để đạt tốc độ truy vấn cao và thao tác nhanh hơn.

 Hạn chế về tài nguyên CPU và RAM.

IV.3. Thử nghiệm và kết quả

IV.3.1. Lựa chọn Sản phẩm IMDB để thử nghiệm (adsbygoogle = window.adsbygoogle || []).push({});

Qua những kiến thức và đánh giá về các sản phẩm IMDB, sản phẩm Oracle TimesTen được chọn vì những lý do sau đây:

- Oracle là nhà cung cấp giải pháp CSDL hàng đầu thế giới.

- Bản thân tác giả đã làm việc nhiều với CSDL Oracle truyền thống, môi trường công việc hiện tại của tác giả cũng sử dụng Oracle.

- Do cùng một nhà cung cấp nên giải pháp Oracle TimesTen có thể tích hợp rất dễ dàng, tương thích tốt với các CSDL Oracle hiện tại.

- Lượng tri thức hỗ trợ về Oracle TimesTen khá nhiều trên internet cũng như các diễn đàn, với cộng đồng sử dụng lớn.

- Có thể download và dùng thử hệ thống Oracle TimesTen một cách dễ dàng Sau khi chọn lựa Oracle TimesTen, dưới đây trình bày về các nguyên tắc lựa chọn các tính năng của Oracle TimesTen :

IV.3.1.1 Kết nối trực tiếp hay client/server?

- Lựa chọn 1: Kết nối client/server: Tương tự như kết nối CSDL Oracle thông thường, TimesTen cũng hỗ trợ kiểu kết nối client/server

 Ưu điểm:

 Có thể cài TimesTen trên một máy, các máy ứng dụng khác kết nối đến máy này.

 Nhược điểm:

 Không đạt được tốc độ tối ưu nhất (tốc độ truy vấn dữ liệu vẫn nhanh hơn so với Oracle truyền thống nhưng mất chi phí cho việc truyền dữ liệu qua mạng đến ứng dụng).

 Khi nào nên dùng:

 Để cải thiện tốc độ truy vấn dữ liệu, nhưng do mô hình hệ thống bất tiện trong việc dùng mô hình kết nối trực tiếp.

 Làm điểm tập hợp dữ liệu từ nhiều CSDL Oracle, ứng dụng chỉ cần kết nối đến TimesTen để lấy những dữ liệu cần thiết.

- Lựa chọn 2: TimesTen ngoài cách kết nối này còn cung cấp thêm một kiểu kết nối khác là kết nối trực tiếp. Trong một kết nối trực tiếp, ODBC driver load trực tiếp TimesTen và IMDB cache vào một vùng nhớ chia sẻ. Sau đó ứng dụng sử dụng direct driver để truy cập vào ảnh của CSDL.

 Ưu điểm:

 Là cách lý tưởng để truy cập TimesTen và IMDB cache, đạt tốc độ truy vấn và thao tác với dữ liệu trong TimesTen nhanh nhất.

 Để dùng kiểu kết nối trực tiếp, ứng dụng truy cập và TimesTen phải được cài trên cùng máy vật lý.

 Khi nào nên dùng:

 Nên dùng bất kỳ khi nào có thể, để đạt tốc độ truy vấn và thao tác dữ liệu nhanh nhất.

 Đặc biệt phù hợp khi mô hình hệ thống và tài nguyên server triển khai ứng dụng cho phép (vì mô hình này TimesTen cài đặt cùng máy vật lý với server triển khai ứng dụng).

IV.3.1.2 Lựa chọn loại cache group sử dụng

Khi sử dụng mô hình vẫn giữ lại CSDL Oracle truyền thống, ta sử dụng TimesTen IMDB Cache, chỉ một phần dữ liệu được đưa lên TimesTen. Khi đó, có các tùy chọn để sử dụng các đặc điểm của IMDB Cache cho phù hợp.

- Lựa chọn 1: Read-only cachegroup

Trong một read-only cache group, những thay đổi với dữ liệu được thực hiện trên Oracle, sau đó được cập nhật xuống TimesTen. Ứng dụng kết nối đến TimesTen chỉ để select dữ liệu.

 Ưu điểm:

 Vẫn sử dụng CSDL Oracle làm chuẩn, đồng thời những dữ liệu cần tốc độ truy vấn nhanh được đưa lên TimesTen.

 Nhược điểm:

 Có độ trễ nhất định giữa những dữ liệu đã thay đổi trên Oracle được cập nhật lên TimesTen. (adsbygoogle = window.adsbygoogle || []).push({});

 Chỉ được cập nhật dữ liệu trên Oracle

 Khi nào nên dùng:

 Khi muốn dùng Oracle làm chuẩn, đưa một số dữ liệu cần truy vấn nhanh lên TimesTen.

 Không quá quan trọng về độ trễ đồng bộ dữ liệu giữa Oracle và TimesTen.

Manual Automatic

 Chỉ một hệ thống được cập nhật dữ liệu, những hệ thống khác chỉ select dữ liệu.

- Lựa chọn 2: Asynchronous writethrough (AWT) cachegroup

Những thay đổi với dữ liệu được cập nhật trên TimesTen, sau đó dữ liệu được tự động propagate lên Oracle cached tables theo kiểu bất đồng bộ (không kiểm soát được khi nào dữ liệu từ TT sẽ được propagate lên Oracle).

 Ưu điểm:

 Lấy TimesTen làm chuẩn, dữ liệu được cập nhật trên TimesTen (sau đó có thể được select)

 TimesTen sẽ lựa chọn thời điểm thích hợp để đồng bộ những dữ liệu trên TimesTen xuống Oracle, tránh làm cao tải hệ thống

 Nhược điểm:

 Không kiểm soát được khi nào dữ liệu từ TimesTen được đồng bộ xuống Oracle.

 Khi nào nên dùng:

 Muốn thao tác và truy vấn dữ liệu trên TimesTen

 Không quá quan trọng khi nào dữ liệu trên TimesTen được cập nhật xuống Oracle.

 Không muốn việc đồng bộ dữ liệu ảnh hưởng đến hiệu năng hệ thống. - Lựa chọn 3: Synchronous writethrough (SWT) cachegroup

Những thay đổi đã được commit trong TimesTen cache table được tự động propagate tới Ocache cached tables theo kiểu đồng bộ, nghĩa là, khi có thay đổi với TT, câu lệnh ấy sẽ thực hiện trên Oracle trước, nếu thành công mới được thực hiện trên TT.

 Ưu điểm:

 Lấy TimesTen làm chuẩn, dữ liệu được cập nhật trên TimesTen (sau đó có thể được select)

 Dữ liệu thay đổi trên TimesTen ngay lập tức được cập nhật xuống CSDL Oracle.

 Nhược điểm:

 Việc đồng bộ tức thời dữ liệu từ TimesTen xuống Oracle làm giảm hiệu năng hệ thống (vì khi có một câu lệnh thay đổi dữ liệu, TimesTen sẽ gửi thực hiện câu lệnh này tại Oracle trước, nếu thành công sẽ thực hiện thay đổi trên TimesTen).

 Khi nào nên dùng:

 Muốn thao tác và truy vấn dữ liệu trên TimesTen

 Hệ thống yêu cầu dữ liệu giữa TimesTen và Oracle luôn luôn phải giống nhau.

Cho phép người dùng tùy biến cho phù hợp với yêu cầu của họ. Nếu một bảng muốn dùng kết hợp 2 cơ chế: chỉ kết hợp được autorefresh và SWT.

 Ưu điểm:

 Có thể đồng bộ hai chiều giữa TimesTen và Oracle.

 Nhược điểm: (adsbygoogle = window.adsbygoogle || []).push({});

 Khó kiểm soát hơn khi nào cập nhật trên Oracle, khi nào cập nhật trên TimesTen.

 Đồng bộ chiều từ TimesTen xuống Oracle làm ảnh hưởng đến hiệu năng do giống cơ chế SWT.

 Khi nào nên dùng:

 Cần thiết có sự tác động dữ liệu với bảng ở cả TimesTen và Oracle.

IV.3.1.3 Lựa chọn cơ chế aging

Cơ chế Data aging sẽ loại bỏ dữ liệu ở một bảng theo một cơ chế xác định. Có thể định nghĩa aging policy cho một hoặc nhiều bảng của TimesTen. Một aging policy gồm: loại aging, các thuộc tính aging và trạng thái của aging (on hoặc off).

TimesTen hỗ trợ hai loại aging policy: time-based và usage-based. Usage-based loại bỏ dữ liệu ít được sử dụng nhất (LRU). Time-based loại bỏ dữ liệu dựa trên tham số lifetime và theo một tần suất (cycle) đã cấu hình. Một data store có thể có cả 2 cơ chế này, nhưng một bảng chỉ có thể chọn một cơ chế.

- Lựa chọn 1: Usage-based data aging

 Đặc điểm:

 Cơ chế này giúp tối ưu hóa bộ nhớ lưu trữ dữ liệu bằng cách loại bỏ dữ liệu ít được sử dụng nhất.

 Một dòng của bảng được coi là không được sử dụng khi nó không được truy cập hoặc tham chiếu đến. Một dòng được truy cập hoặc tham chiếu nếu là tham số của câu lệnh SELECT, UPDATE, DELETE.

 Ưu điểm:

 Loại bỏ dữ liệu theo tài nguyên của máy cài đặt TimesTen

 Nhược điểm:

 Khó kiểm soát được dữ liệu nào sẽ bị xóa, nhất là khi có những bất thường về tài nguyên.

 Khi nào nên dùng:

 Khi muốn loại bỏ dữ liệu ít được tham chiếu nhất

 Các ứng dụng không quan tâm đến thời gian của dữ liệu - Lựa chọn 2: Time-based data aging

Cơ chế này loại bỏ dữ liệu đã quá cũ (theo định nghĩa). Khi muốn sử dụng loại aging này, bảng phải có ít nhất một cột có kiểu dữ liệu là date.

 Ưu điểm:

 Xác định được rõ ràng những dữ liệu nào sẽ được loại bỏ theo thời gian cấu hình.

 Nhược điểm:

 Không kiểm soát được lượng tài nguyên sử dụng, những dữ liệu hay được sử dụng có thể cũng bị xóa do bị “cũ” theo cấu hình.

 Khi nào nên dùng:

 Các ứng dụng truy vấn dữ liệu theo ngày, tháng

* Các thông tin về cách Cài đặt, cấu hình Oracle TimesTen xem thêm trong phần Phụ lục.

IV.3.2. Lựa chọn hệ thống phần mềm để thử nghiệm

Bản thân tác giả đang làm việc tại Trung tâm phần mềm Viettel thuộc Tập đoàn Viễn thông Quân đội. Nhiệm vụ của Trung tâm phần mềm là nghiên cứu, xây dựng các hệ thống trực tiếp phục vụ kinh doanh của Tập đoàn. Hiện nay, Tập đoàn Viettel có nhiều lĩnh vực hoạt động, nhưng cung cấp dịch vụ viễn thông vẫn là lĩnh vực chủ chốt. Để có thể thực hiện hoạt động kinh doanh này, phần mềm Tính cước và Chăm sóc khách hàng (BCCS – Billing & CustomerCare System) là tối quan trọng. Hệ thống BCCS có nhiều phân hệ, đảm bảo tính cước khi khách hàng sử dụng dịch vụ, và các hệ thống hỗ trợ chăm sóc khách hàng.

Qua đánh giá các phân hệ trong BCCS, hệ thống CustomerCare và BCCSRating là phù hợp và cần thiết sử dụng TimesTen.

Hệ thống CustomerCare: (adsbygoogle = window.adsbygoogle || []).push({});

Mục tiêu hệ thống:

Hệ thống CustomerCare giúp:

- Điện thoại viên tra cứu và giải đáp khách hàng - Hỗ trợ tiếp nhận và giải quyết khiếu nại.

Do yêu cầu của phần giải đáp khách hàng phải nhanh, giảm thời gian khách hàng chờ đợi. Do vậy, hệ thống cần đảm bảo tính thuận tiện, truy vấn và trả về thông tin nhanh, các thông tin đầy đủ cho việc tra cứu để trả lời khách hàng.

Hiện trạng và vấn đề:

- Số lượt truy cập hàng ngày vào hệ thống (tương ứng vào CSDL) lên đến hàng triệu lượt, với chức năng hiển thị thông tin khách hàng và lịch sử khiếu nại của khách hàng là nhiều nhất.

- Nghiệp vụ mong muốn hiển thị càng nhiều lịch sử khiếu nại càng tốt, nhưng do lượng dữ liệu ngày càng lớn, số truy cập nhiều, nên chỉ đáp ứng hiển thị thông tin lịch sử khiếu nại 7 ngày gần nhất.

>> Nhu cầu phải tăng lượng dữ liệu truy vấn, giảm thời gian truy vấn. Hệ thống BCCS_Rating:

Mục tiêu hệ thống:

- Tính cước được cho các dịch vụ viễn thông mà hiện tại Viettel Telecom đang cung cấp bao gồm Mobile, Homephone, ADSL, PSTN.

- Đáp ứng được các chính sách khai bao giá cước mềm dẻo, đáp ứng yêu cầu hiệu năng của nghiệp vụ tính cước, số lượng bản ghi lớn, thời gian xử lý nhanh.

Hiện trạng và vấn đề:

Hai module quan trọng và yêu cầu hiệu năng cao của hệ thống Rating là Chuẩn hóa thông tin và Tính cước. Ứng với mỗi dòng trong file CDR đầu vào, hai module này đều cần truy xuất dữ liệu từ CSDL. Dưới đây đo thời gian xử lý với mỗi bản ghi khi sử dụng CSDL Oracle:

Bảng IV.1 – Bảng thống kê thời gian xử lý một bản ghi cước

Chức năng Đầu vào Thời gian xử lý Thời gian mong muốn

Chuẩn hóa 2 file (20.000 bản ghi) 60.5 ms / bản ghi 7 ms / bản ghi Tính cước 2 file (20.000 bản ghi) 50.5 ms / bản ghi 7 ms / bản ghi >> Nhu cầu phải có giải pháp để đạt yêu cầu bài toán đặt ra.

Dưới đây là những đánh giá theo bộ tiêu chí để lựa chọn sử dụng TimesTen cũng như những tính năng tương ứng cho hai hệ thống ở trên:

Bảng IV.2 – Bảng lựa chọn TimesTen

Tiêu chí CustomerCare BCCS_Rating

Đang sử dụng CSDL Oracle

- Có - Có

Có các chức năng (có truy cập CSDL) với tần xuất sử dụng nhiều, yêu cầu thời gian phản hồi (truy vấn, thay đổi dữ liệu) nhỏ

- Chức năng popup lịch sử khiếu nại

- Chức năng tra cứu lịch sử khiếu nại

- Tra cứu thông tin thuê bao

- Tác động (cập nhật), truy vấn tài khoản (khuyến mại, tích lũy)

Số lượng dữ liệu lớn làm cho việc thao tác (truy vấn, cập nhật) dữ liệu không còn đáp ứng yêu cầu về thời gian phản hồi, yêu cầu hiệu năng

- Số lượng khiếu nại trong 1 tháng: khoảng 3 triệu khiếu nại

- Số lượng thuê bao trả sau khoảng 4 triệu

- Tương ứng số lượng tài khoản (tối đa) là 4 triệu (adsbygoogle = window.adsbygoogle || []).push({});

Có các chức năng có khả năng gây cao tải CSDL Oracle

- Chức năng popup lịch sử khiếu nại

- Chức năng tra cứu lịch sử khiếu nại

- Tra cứu thông tin thuê bao

- Tác động (cập nhật), truy vấn tài khoản (khuyến mại, tích lũy)

Việc tốc độ chậm không phải do nguyên nhân nào khác (ví dụ mã nguồn chưa tối ưu) mà do nguyên nhân CSDL

Đúng

(đã ghi log theo dõi thời gian truy vấn dữ liệu)

Đúng

(đã ghi log theo dõi thời gian truy vấn dữ liệu)

Có đủ tài nguyên để sử dụng TimesTen (tương ứng từng hệ thống)

Server 6 processor, 8 GB cho việc lưu trữ dữ liệu khiếu nại trong 15 ngày

Server 16GB, 4 processor

Bảng IV.3 – Bảng lựa chọn tính năng TimesTen

Tiêu chí CustomerCare BCCS_Rating

Sử dụng TimesTen như một CSDL riêng hay sử dụng IMDB Cache? - Sử dụng TimesTen là một

Một phần của tài liệu 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 (Trang 50)