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

  • Số trang: 76 |
  • Loại file: PDF |
  • Lượt xem: 24 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN HOÀNG TRÍ NHÂ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 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội, 2013 ĐẠI HỌC QUỐC GIA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN HOÀNG TRÍ NHÂ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 Ngành: Công nghệ thông tin Chuyên ngành: Quản lý hệ thống thông tin Mã số: Chuyên ngành đào tạo thí điểm LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN HƢỚNG DẪN KHOA HỌC: TS. ĐINH VĂN DŨNG Hà Nội, 2013 1 LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Các số liệu đã nêu trong luận văn có nguồn gốc rõ ràng, kết quả của luận văn là trung thực và chưa được ai công bố trong bất kỳ công trình nào khác. Tác giả Luận văn Hoàng Trí Nhân 2 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 Tiến sĩ Đinh Văn Dũng – Viện CNTT – ĐHQG HN, 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 các thầy cô giáo Viện Công nghệ thông tin – ĐH Quốc Gia Hà Nội 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! Hà Nội, tháng 12 năm 2013 3 MỤC LỤC LỜI CAM ĐOAN................................................................................................................ 1 LỜI CẢM ƠN ..................................................................................................................... 2 MỤC LỤC ........................................................................................................................... 3 DANH MỤC CÁC TỪ VIẾT TẮT ................................................................................... 4 DANH MỤC BẢNG, BIỂU ............................................................................................... 5 DANH MỤC HÌNH VẼ...................................................................................................... 6 MỞ ĐẦU .............................................................................................................................. 7 Chƣơng 1: CƠ SỞ LÝ LUẬN VỀ CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ ...................... 10 I.1. Tình hình nghiên cứu IMDB ............................................................................... 10 I.2. Nhu cầu thực tế và khả năng áp dụng .................................................................. 14 I.3. Kết luận chương 1 ............................................................................................... 15 Chƣơng 2: CƠ SỞ KHOA HỌC VỀ CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ ................. 16 II.1. Khái niệm IMDB ................................................................................................ 16 II.2. Các vấn đề kỹ thuật của IMDB .......................................................................... 16 II.3. So sánh với các công nghệ cạnh tranh ............................................................... 25 II.4. Ưu nhược điểm của IMDB ................................................................................. 29 II.5. Kết luận chương 2 .............................................................................................. 30 Chƣơng 3: CÁC SẢN PHẨM CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ ............................. 31 III.1. Các sản phẩm thương mại ................................................................................. 31 III.2. Các sản phẩm mã nguồn mở ............................................................................. 41 III.3. So sánh các sản phẩm ....................................................................................... 43 III.4. Kết luận chương 3 ............................................................................................. 45 Chƣơng 4: THỬ NGHIỆM CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ................................. 46 IV.1. Tổng quát lớp bài toán áp dụng ........................................................................ 46 IV.2. Mô hình áp dụng ............................................................................................... 47 IV.3. Thử nghiệm và kết quả ..................................................................................... 50 IV.4. Kết luận chương 4............................................................................................. 58 KẾT LUẬN VÀ HƢỚNG NGHIÊN CỨU TIẾP THEO .............................................. 59 1. Kết luận .................................................................................................................. 59 2. Hướng nghiên cứu tiếp theo................................................................................... 59 TÀI LIỆU THAM KHẢO ................................................................................................ 60 PHỤ LỤC .........................................................................................................................P-1 1. Phụ lục 1 – Cài đặt cấu hình Oracle TimesTen ................................................... P-1 2. Phụ lục 2 – Một số lệnh quản trị TimesTen cơ bản ........................................... P-13 3. Phụ lục 3 – Kết nối tới TimesTen bằng Java ..................................................... P-14 4 DANH MỤC CÁC TỪ VIẾT TẮT Viết tắt Viết đầy đủ Ý nghĩa IMDB In-memory database Cơ sở dữ liệu trên bộ nhớ DB Database Cơ sở dữ liệu DBMS Database Management System Hệ quản trị cơ sở dữ liệu CNTT Công nghệ thông tin Công nghệ thông tin CSDL Cơ sở dữ liệu Cơ sở dữ liệu 5 DANH MỤC BẢNG, BIỂU Bảng II.1 – Bảng so sánh CSDL dựa trên ổ cứng và IMDB ......................................... 16 Bảng III.1 – Bảng so sánh đặc điểm chức năng các phần mềm IMDB......................... 43 Bảng III.2 – Bảng so sánh hiệu năng các phần mềm IMDB ......................................... 45 Bảng IV.1 – Bảng thống kê thời gian xử lý một bản ghi cước...................................... 55 Bảng IV.2 – Lựa chọn TimesTen .................................................................................. 55 Bảng IV.3 – Lựa chọn tính năng TimesTen .................................................................. 56 Bảng IV.4 – So sánh response time giữa TimesTen và Oracle của CC ........................ 57 Bảng IV.5 – So sánh response time giữa TimesTen và Oracle của Rating ................... 58 6 DANH MỤC HÌNH VẼ Hình II.1 – Kiến trúc disk-based RDB ..........................................................................18 Hình II.2 – Kiến trúc IMDB ..........................................................................................20 Hình II.3 – So sánh mô hình xử lý SQL của disk-based DB và IMDB ........................21 Hình II.4 – Mô hình chung tính năng Replication ........................................................25 Hình II.5 – Luồng dữ liệu luân chuyển trong DBMS truyền thống ..............................26 Hình II.6 – Hadoop và Hbase ........................................................................................28 Hình III.1 – Ví dụ cache grid.........................................................................................32 Hình III.2 – Ví dụ cache group ......................................................................................33 Hình III.3 – Kiến trúc TimesTen IMDB .......................................................................34 Hình III.4 – Kiến trúc IBM solidDB .............................................................................36 Hình III.5 – Kiến trúc mức cao của SQLServer 2014 ...................................................40 Hình III.6 – Hiệu năng Oracle TimesTen ......................................................................44 Hình III.7 – Hiệu năng IBM solidDB ............................................................................45 Hình IV.1 – Mô hình hệ thống phần mềm thông thường ..............................................47 Hình IV.2 – Mô hình hệ thống phần mềm sử dụng IMDB ...........................................49 Hình IV.3 – Kết hợp CSDL truyền thống và IMDB Cache .........................................49 Hình IV.4 – Mô hình CC trước và sau khi áp dụng TimesTen .....................................57 Hình IV.5 – Mô hình Rating trước và sau khi áp dụng TimesTen ................................58 7 MỞ ĐẦU 1. Sự cấp thiết của đề tài Sự phát triển với tốc độ rất nhanh của công nghệ thông tin bao gồm cả phần cứng, phần mềm và hạ tầng mạng (Internet, LAN, WAN…) đã làm thay đổi bộ mặt và hình thức kinh doanh trên quy mô toàn thế giới. Giờ đây hầu hết các quy trình kinh doanh đều được tự động hóa, công nghệ thông tin hóa một cách tối đa. Các hệ thống công nghệ thông tin đang là xương sống của những tập đoàn, tổ chức kinh doanh từ nhỏ đến lớn, và khi việc kinh doanh phát triển hơn (nhiều khách hàng hơn, nhiều lĩnh vực hơn, tinh vi hơn) nhưng cũng nhiều cạnh tranh hơn, những công ty tổ chức này yêu cầu xây dựng những hệ thống phần mềm ngày càng lớn và phức tạp, nhưng vẫn phải đáp ứng những yêu cầu về hiệu năng. Để đáp ứng yêu cầu này, ngành công nghệ thông tin cũng đã có những bước phát triển nhanh chóng: phần cứng rẻ hơn, nhanh hơn, băng thông mạng lớn hơn, các công cụ lập trình tiện dụng hơn, hiệu quả hơn,… Nhưng thật không may có một thành phần quan trọng của các hệ thống công nghệ thông tin là Cơ sở dữ liệu truyền thống lại không có được những phát triển ấn tượng như vậy. Khi xây dựng những hệ thống lớn với số lượng dữ liệu cũng như số giao dịch lớn, Cơ sở dữ liệu truyền thống (dựa trên ổ đĩa cứng) trở thành điểm nghẽn ảnh hưởng không nhỏ đến hiệu năng của toàn bộ hệ thống. Thực trạng này đặt ra những yêu cầu cần tìm ra những phương pháp, hướng đi mới cho hệ thống Cơ sở dữ liệu. Tại Việt Nam, yêu cầu này càng trở nên cấp thiết hơn bao giờ hết khi hệ thống công nghệ thông tin ngày càng đóng vai trò quan trọng trong quy trình hoạt động kinh doanh và thành công của doanh nghiệp, số lượng các doanh nghiệp tổ chức ra đời ngày càng nhiều trong môi trường kinh doanh cạnh tranh hơn, và chủ trương của Nhà nước về phát triển khoa học công nghệ phục vụ sự phát triển chung của đất nước. Để giải quyết vấn đề này, hiện cũng đã có các nghiên cứu thử nghiệm nhằm làm tăng tốc độ truy vấn dữ liệu. Từ cơ sở tốc độ truy vấn của ổ cứng chậm hơn chip nhớ flash, chip nhớ chậm hơn bộ nhớ chính (RAM), một hướng đi là đổi phương tiện lưu trữ dữ liệu của CSDL từ ổ cứng sang SSD (chíp nhớ flash) hoặc RAM disk (giả lập ổ cứng thành RAM), tốc độ truy vấn đã được cải thiện. Một hướng đi khác là In-memory database (IMDB), lưu toàn bộ dữ liệu trong bộ nhớ chính. Kết quả so sánh giữa cơ sở dữ liệu trên ổ cứng, trên SSD, trên bộ nhớ chính đã cho thấy sử dụng cơ sở dữ liệu trên bộ nhớ là một hướng đi đúng đắn. Cơ sở dữ liệu trên bộ nhớ (In-memory database) là cơ sở dữ liệu quan hệ dựa trên bộ nhớ, bỏ qua các thao tác truy cập ổ đĩa cứng bằng cách lưu trữ và xử lý dữ liệu ngay trên bộ nhớ chính. Nó còn được gọi với các tên khác như Main memory database (cơ sở dữ liệu bộ nhớ chính) hoặc real-time database (cơ sở dữ liệu thời gian thực). Khác biệt cơ bản giữa Cơ sở dữ liệu trên bộ nhớ với cơ sở dữ liệu truyền thống là nó sử dụng bộ nhớ chính (RAM) để lưu trữ dữ liệu. Khi đó tốc độ truy cập không chỉ được cải thiện vì tốc độ đọc/ghi của RAM nhanh hơn mà còn vì kiến trúc của hệ thống CSDL đơn giản hơn rất nhiều, cũng như không cần các cơ chế 8 buffer, không cần liên tục copy dữ liệu cache từ ổ cứng lên RAM, đồng thời các thuật toán tối ưu câu truy vấn, tổ chức dữ liệu, chỉ mục cũng được tối ưu hơn. Hiện nay, các nhà cung cấp giải pháp lưu trữ dữ liệu hàng đầu thế giới cũng đang hướng về giải pháp Cơ sở dữ liệu trên bộ nhớ để cải thiện tốc độ truy cập dữ liệu. Điển hình phải kể đến Oracle với sản phẩm Oracle TimesTen, IBM với sản phẩm IBM solidDB. Ngoài ra, các công ty nhỏ và cộng đồng mã nguồn mở cũng tham gia mạnh mẽ vào việc nghiên cứu phát triển và sử dụng cơ sở dữ liệu trên bộ nhớ. Tại Việt Nam, chưa có nhiều nghiên cứu, bài viết chính thống về Cơ sở dữ liệu trên bộ nhớ, chủ yếu là các thông tin trên một số diễn đàn công nghệ thông tin, các nghiên cứu toàn diện và chuyên sâu lại càng hiếm. Từ đó đặt ra yêu cầu cấp thiết và thực tế là cần có một nghiên cứu chuyên sâu và toàn diện về Cơ sở dữ liệu trên bộ nhớ: kiến trúc, đặc điểm chức năng, ưu nhược điểm, cũng như cách sử dụng chúng sao cho hiệu quả. 2. Mục tiêu nghiên cứu - Tìm hiểu hiện trạng, tình hình nghiên cứu Cơ sở dữ liệu trên bộ nhớ - Nghiên cứu kiến thức cơ sở của Cơ sở dữ liệu trên bộ nhớ: khái niệm, kiến trúc, đặc điểm tính năng - Nghiên cứu ưu nhược điểm của Cơ sở dữ liệu trên bộ nhớ, các sản phẩm Cơ sở dữ liệu trên bộ nhớ, so sánh với các công nghệ, sản phẩm cạnh tranh - Tổng quát hóa các bài toán nghiệp vụ, kiến trúc có thể áp dụng Cơ sở dữ liệu trên bộ nhớ; Cài đặt thử nghiệm. - Đưa ra những đề xuất, ý tưởng ứng dụng, cải tiến với Cơ sở dữ liệu trên bộ nhớ 3. Đối tƣợng, phạm vi và phƣơng pháp nghiên cứu - Đối tượng nghiên cứu: Cơ sở dữ liệu trên bộ nhớ - Phạm vi nghiên cứu:  Cơ sở lý luận, kiến thức cơ sở khoa học về Cơ sở dữ liệu trên bộ nhớ  Điểm khác biệt, lợi thế cạnh tranh của Cơ sở dữ liệu trên bộ nhớ, ưu nhược điểm  Các sản phẩm Cơ sở dữ liệu trên bộ nhớ  Mô hình áp dụng và kết quả thực nghiệm - 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 paper, 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ả. 9 4. Ý nghĩa khoa học và thực tiễn - Ý nghĩa khoa học:  Lý thuyế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 so sánh với các công nghệ cạnh tranh, so sánh nội tại các sản phẩm 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 5. Bố cục của luận văn - Chương 1: Cơ sở lý luận về Cơ sở dữ liệu trên bộ nhớ - Chương 2: Cơ sở khoa học về Cơ sở dữ liệu trên bộ nhớ - Chương 3: Các sản phẩm Cơ sở dữ liệu trên bộ nhớ - Chương 4: Thử nghiệm Cơ sở dữ liệu trên bộ nhớ - Kết luận và Hướng nghiên cứu tiếp theo 10 Chƣơng 1: CƠ SỞ LÝ LUẬN VỀ CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ I.1. Tình hình nghiên cứu IMDB Sự phát triển với tốc độ rất nhanh của CNTT bao gồm cả phần cứng, phần mềm và hạ tầng mạng (Internet, LAN, WAN…) đã làm thay đổi bộ mặt và hình thức kinh doanh trên quy mô toàn thế giới. Giờ đây hầu như các quy trình kinh doanh đều được tự động hóa, tin học hóa một cách tối đa. Các hệ thống CNTT đang là xương sống của những tập đoàn, tổ chức kinh doanh lớn, và khi việc kinh doanh phát triển (nhiều khách hàng hơn, nhiều lĩnh vực hơn, tinh vi hơn) những tổ chức này yêu cầu xây dựng những hệ thống CNTT ngày càng lớn và phức tạp. Để đáp ứng nhu cầu này ngành CNTT cũng đã có những bước phát triển nhanh chóng: phần cứng rẻ hơn, nhanh hơn, băng thông mạng lớn hơn, các công cụ lập trình tiện dụng hơn, hiệu quả hơn,… Nhưng thật không may có một thành phần quan trọng của các hệ thống CNTT là Cơ sở dữ liệu truyền thống lại không có được những phát triển ấn tượng như vậy. Khi xây dựng những hệ thống lớn với số lượng giao dịch lớn Cơ sở dữ liệu trên ổ cứng trở thành các điểm nghẽn ảnh hưởng đến hiệu năng của toàn bộ hệ thống. Để giải quyết vấn đề này các nhà cung cấp giải pháp lưu trữ dữ liệu hàng đầu thế giới đều đang hướng về giải pháp Cơ sở dữ liệu trên bộ nhớ (In memory Database IMDB) để cải thiện tốc độ truy cập dữ liệu. Khác biệt cơ bản là IMDB sử dụng bộ nhớ chính (RAM) để lưu trữ dữ liệu. Khi đó tốc độ truy cập không chỉ được cải thiện vì tốc độ đọc/ghi của RAM nhanh hơn mà còn vì kiến trúc của hệ thống CSDL đơn giản hơn rất nhiều, cũng như không cần các cơ chế bộ nhớ đệm, không cần liên tục sao chép dữ liệu cache từ ổ cứng lên RAM. Nghiên cứu phát triển IMDB cũng như áp dụng IMDB vào các hệ thống phần mềm là xu hướng mới nhưng đang phát triển mạnh mẽ tại các công ty phần mềm, tại nhiều quốc gia, với nhiều lĩnh vực như tài chính, viễn thông, ngân hàng,… I.1.1. Tình hình nghiên cứu phát triển Nghiên cứu phát triển hệ thống IMDB thành các sản phẩm đóng gói đang là xu hướng của một số công ty phần mềm lớn cũng như cộng đồng mã nguồn mở. Dưới đây liệt kê một số sản phẩm điển hình: - Oracle TimesTen (sản phẩm thương mại) [4]: là một bộ sản phẩm của Oracle gồm CSDL TimesTen IMDB, và IMDB Cache để đồng bộ dữ liệu 2 chiều giữa CSDL Oracle truyền thống và TimesTen IMDB. TimesTen IMDB là một cơ sở dữ liệu tối ưu hóa dựa trên bộ nhớ, giúp các ứng dụng ở các lĩnh vực khác nhau đạt được hiệu năng cao với thời gian đáp ứng (response time) rất nhỏ và thông lượng (throughput) rất lớn. Được triển khai ở tầng ứng dụng, TimesTen nằm hoàn toàn trong bộ nhớ chính, nhưng vẫn có các cơ chế lưu trữ dữ liệu ra ổ đĩa cứng nhằm đảm bảo an toàn dữ liệu. Ứng dụng truy cập dữ liệu trong CSDL TimesTen thông qua giao tiếp SQL chuẩn. TimesTen cũng có cơ chế đảm bảo tính sẵn sàng cao bằng tính năng Replication. 11 - IBM SolidDB (sản phẩm thương mại) [10], [11]: là một bộ sản phẩm của IBM, gồm solidDB IMDB và solidDB Universal Cache. IBM solidDB IMDB là một cơ sở dữ liệu quan hệ trên bộ nhớ với đầy đủ tính năng, cung cấp tốc độ và tính sẵn sàng cao, giúp thỏa mãn yêu cầu về hiệu năng và độ tin cậy cho các ứng dụng thời gian thực. Ứng dụng kết nối để truy cập dữ liệu trong solidDB IMDB thông qua giao tiếp SQL chuẩn. solidDB cũng có cơ chế hot-standby để đảm bảo tính sẵn sàng cao. SolidDB universal cache giúp đồng bộ dữ liệu từ một CSDL truyền thống tới solidDB IMDB. - McObject eXtremeDB (sản phẩm thương mại) [13]: là một bộ sản phẩm của McObject, gồm eXtremeDB IMDB là một cơ sở dữ liệu trên bộ nhớ dùng cho các ứng dụng thời gian thực và cho các ứng dụng nhúng như set-top box, thiết bị viễn thông, thiết bị điện tử,… Ngoài ra, bộ sản phẩm còn gồm các sản phẩm khác như eXtremeDB fusion, Cluster, HA, Transaction Logging. - H2 IMDB (sản phẩm nguồn mở) [14]: một CSDL trên bộ nhớ gọn nhẹ, hỗ trợ JDBC API, cho phép chạy ở chế độ embeded hoặc server, hỗ trợ SQL chuẩn. - HyperSQL (sản phẩm nguồn mở) [15]: là một CSDL được viết bằng java. Nó cung cấp một database engine nhỏ gọn, nhanh, đa luồng, hỗ trợ cơ chế kết nối embeded và server. Nó cũng có các công cụ dòng lệnh SQL mạnh mẽ, và các công cụ có giao diện. Tại Việt Nam, việc nghiên cứu phát triển một sản phẩm CSDL trên bộ nhớ chưa được công ty, doanh nghiệp nào thực hiện. Việc sử dụng một hệ thống IMDB cũng còn rất ít. Các giải pháp tăng cường hiệu năng hệ thống vẫn chỉ dừng lại ở mức tối ưu hóa CSDL hiện tại (chỉ mục, quy hoạch bảng biểu,…), hoặc cao hơn là cache dữ liệu cần thiết lên bộ nhớ, bằng cách sử dụng hashmap chẳng hạn. I.1.2. Tình hình sử dụng Việc lựa chọn sử dụng IMDB cũng ngày càng được các công ty ở các lĩnh vực quan tâm sử dụng nhằm tăng hiệu năng hệ thống. Dưới đây là một số ví dụ: - Công ty Dell với hệ thống Sale, CustomerCare và Hỗ trợ kỹ thuật rất lớn, lượng truy cập CSDL để lấy thông tin mặt hàng, tình trạng,… là rất lớn. Dell đã sử dụng Oracle TimesTen IMDB để làm giảm thời gian truy vấn dữ liệu, tăng hiệu năng và khả năng đáp ứng cho hệ thống. - Công ty tài chính China Finance Online có hai website với khoảng 11 triệu người dùng. Các website này cung cấp các thông tin về chứng khoán, cổ phiếu, tài chính,…mới nhất, độ trễ dưới ba giây. Nó đòi hỏi phải đáp ứng lượng lớn truy cập với thời gian đáp ứng nhanh. China finance online đã sử dụng Oracle TimesTen và hoàn toàn đáp ứng được những yêu cầu trên. - Iskratel là một công ty hoạt động trong lĩnh vực viễn thông, chuyên nghiên cứu và cung cấp các giải pháp liên quan đến mạng lưới. Công ty có một sản 12 phẩm SI3000 cho phép gọi điện, sử dụng data, cũng như các dịch vụ tích hợp rất hữu ích cho người dùng và doanh nhân. Nhưng hiệu năng CSDL như tra cứu thông tin khách hàng, cấu hình,… không như mong đợi. Iskratel đã thay thế CSDL truyền thống bằng IBM solidDB, giúp tăng số lượng cuộc gọi cũng như giảm thời gian xử lý xuống ba lần. Tiến sĩ Elliot King [12], một nhà nghiên cứu của Loyola University, đã có whitepaper đưa ra số liệu thống kê liên quan đến việc sử dụng IMDB. Tháng 04/2011, Elliot King cùng nhóm cộng sự đã thực hiện mời các chuyên gia CNTT uy tín, cùng các nhóm phù hợp trên LinkedIn.com tham gia khảo sát. Những người được mời làm việc ở nhiều lĩnh vực, vai trò khác nhau. Kết quả, có 237 người tham gia khảo sát, trong số đó 30% đang sử dụng IMDB, 70% còn lại thì có đến hơn một nửa quen thuộc với công nghệ IMDB. Chi tiết một số kết quả khảo sát như sau: - Loại ứng dụng sử dụng IMDB: Phân tích kinh doanh Giao dịch web Báo cáo Tài chính Billing & provisioning Ứng dụng nhúng, di động - Lượng dữ liệu trong IMDB: Dưới 10 GB 11 – 25 GB 26 – 100 GB Trên 100 GB Không biết - Có ý định bắt đầu/mở rộng việc sử dụng IMDB trong tương lai: 13 không biết không - Nguyên nhân thúc đẩy sự mở rộng việc sử dụng IMDB: Nhiều ứng dụng hơn Cần độ trễ thấp Nhiều người dùng hơn Tăng kích thước data Tăng dung lượng data Khác - Các lợi ích quan trọng nhất của IMDB: Hiệu năng cao Độ trễ rất thấp Tăng TPS Giảm lưu trữ dữ liệu tạm thời Khác - có Các hạn chế lớn nhất của IMDB: Kích thước CSDL Tính sẵn sàng Loại dữ liệu hỗ trợ Khả năng hỗ trợ tính ACID Khác 14 - Tiêu chí khi lựa chọn sản phẩm IMDB: Có hỗ trợ Cam kết lộ trình Platform hỗ trợ Giá cả Tương thích đối tác Khác Nghiên cứu của Tiến sĩ Elliot King đã cho thấy sự quan tâm ngày càng lớn trong việc sử dụng IMDB với các ứng dụng trong nhiều lĩnh vực, nhằm đạt được các yêu cầu về hiệu năng, giải quyết thách thức về sự tăng trưởng dữ liệu, cũng như đạt được các mục tiêu dài hạn của công ty. I.2. Nhu cầu thực tế và khả năng áp dụng I.2.1. Nhu cầu Đi cùng với sự phát triển kinh doanh, khách hàng của mỗi công ty, doanh nghiệp sẽ là những thách thức về hiệu năng, số lượng truy cập dữ liệu, cũng như những đòi hỏi ngày càng cao của khách hàng. Nếu không đủ nhanh và đáp ứng yêu cầu thị trường, yêu cầu khách hàng, công ty khó có thể cạnh tranh với các công ty khác. Các hệ thống liên quan trực tiếp cần cải thiện hiệu năng gồm các ứng dụng viễn thông, tài chính ngân hàng, hàng không, quân sự, game, các hệ thống chăm sóc khách hàng. Trong lĩnh vực Viễn thông nói riêng, Viettel đang là một trong ba nhà cung cấp dịch vụ viễn thông lớn nhất Việt Nam. Các sản phẩm phần mềm hỗ trợ kinh doanh chủ yếu do Trung tâm Phần mềm Viettel tự xây dựng. Hiện tại, Trung tâm đã và đang phát triển những hệ thống rất lớn như Tính cước và chăm sóc khách hàng (Billing & Customer Care System – BCCS), kho tàng tài sản, v-office,… đến khi đưa vào sử dụng, vận hành mới phát hiện ra nhiều điểm nghẽn liên quan đến CSDL và đang phải khắc phục rất vất vả. Việc treo nghẽn của hệ thống BCCS ảnh hưởng nghiêm trọng đến việc sản xuất kinh doanh và mức độ hài lòng của khách hàng. Các điểm treo nghẽn của hệ thống BCCS hầu như đều liên quan đến việc truy cập CSDL. Các ví dụ điển hình là: - Vào các thời điểm cuối tháng các chi nhánh, phòng ban, đơn vị đồng thời vào lấy báo cáo kết quả sản xuất kinh doanh trong tháng. Số lượng truy vấn đến CSDL tăng đột biến nên việc lấy báo cáo này rất chậm, thậm chí không lấy được. Ngoài ra điều nguy hiểm hơn là khi CSDL bị quá tải thì các nghiệp vụ khác cũng không thể thực hiện được. Việc sản xuất kinh doanh bị đình trệ, ảnh hưởng vô cùng lớn. 15 - Để cải tiến nghiệp vụ chăm sóc khách hàng, đội dự án BCCS đã bổ sung tính năng khi khách hàng gọi điện đến Trung tâm chăm sóc khách hàng thì trên màn hình của giao dịch viên sẽ hiện lên luôn thông tin về khách hàng này. Tuy nhiên việc này cũng làm tăng đột biến tải của CSDL và ảnh hưởng nghiêm trọng đến các chức năng khác của BCCS. - Hiện nay khi xử lý các yêu cầu gửi lên, nhiều phân hệ của BCCS đang dùng các hàng đợi để chứa các yêu cầu và xử lý dần dần. Các hàng đợi hiện nay đều được chứa trong CSDL. Khi xử lý liên tục phải truy vấn vào CSDL, việc này làm tăng thời gian đáp ứng (response time) của hệ thống và làm giảm tính real-time của việc xử lý. Số lượng những vấn đề tương tự như trên rất phổ biến, làm giảm hiệu năng, chất lượng và độ ổn định của hệ thống, làm tăng chi phí giám sát vận hành và gây thiệt hại lớn cho sản xuất kinh doanh. Việc áp dụng các giải pháp như IMDB sẽ là cứu cánh cho phần mềm nói riêng và sự phát triển của công ty nói chung, không chỉ để khắc phục các nhược điểm hiện tại, mà còn chuẩn bị cho sự phát triển trong tương lai. I.2.2. Khả năng áp dụng Việc áp dụng các sản phẩm IMDB vào các hệ thống phần mềm hiện tại là hoàn toàn khả thi và có căn cứ khoa học: - Việc đưa dữ liệu lên bộ nhớ chính giúp tăng tốc độ truy cập thì tốc độ truy cập của bộ nhớ chính là nhanh hơn so với ổ đĩa cứng. - Các sản phẩm IMDB vẫn dựa trên nguyên tắc đưa dữ liệu lên bộ nhớ, và chúng được quy hoạch như một CSDL quan hệ thông thường, truy cập bằng SQL chuẩn, giúp thuận tiện cho việc đồng bộ dữ liệu giữa CSDL truyền thống và IMDB, cũng như ứng dụng dễ dàng truy cập dữ liệu từ IMDB. - Giá thành của bộ nhớ chính ngày càng giảm, gần với giá ổ đĩa cứng. - Nhu cầu của các ứng dụng là có thật và ngày càng trở nên cấp thiết, khi số lượng truy cập ngày càng lớn với đòi hỏi thời gian đáp ứng tức thời:  Viễn thông: đăng nhập, xác thực, tính cước, mediation, call centers.  Tài chính: online banking, fraud detection, stock exchanges,…  Các ứng dụng khác: chăm sóc khách hàng, gaming, đặt vé máy bay,… I.3. Kết luận chƣơng 1 Từ những thông tin trên cho thấy việc nghiên cứu phát triển cũng như tìm hiểu sử dụng IMDB đang nở rộ trên thế giới với sự tham gia của các công ty phần mềm lớn cũng như của cộng đồng mã nguồn mở, trên nhiều lĩnh vực Tài chính, Viễn thông, ngân hàng, thương mại điện tử, quân sự, trò chơi,… Hiện trạng các hệ thống phần mềm, ứng dụng trong các lĩnh vực đang đặt ra nhu cầu cấp thiết phải áp dụng các giải pháp nhằm tăng hiệu năng, đáp ứng nhiều hơn số lượng truy cập với thời gian nhỏ hơn. Sử dụng IMDB là một giải pháp tốt, có thể dễ dàng áp dụng cho nhiều loại ứng dụng, mới xây dựng hoặc đã có, trên nhiều lĩnh vực khác nhau. 16 Chƣơng 2: CƠ SỞ KHOA HỌC VỀ IN-MEMORY DATABASE II.1. Khái niệm IMDB Sự phát triển nhanh chóng của kỹ thuật chế tạo ổ cứng và RAM cho phép lưu trữ ngày càng nhiều dữ liệu, lên đến terabyte hoặc petabyte. Tuy nhiên, độ trễ đọc/ghi dữ liệu cũng như băng thông lại không có được tốc độ phát triển như vậy. Hiện nay, thời gian quét RAM cỡ terabyte tính bằng phút và quét ổ cứng cỡ terabyte phải tính bằng giờ. Chúng ta nên giữ toàn bộ dữ liệu trên bộ nhớ và thiết kế lại cấu trúc dữ liệu và thuật toán, cũng như sử dụng đa tiến trình để tận dụng hết tài nguyên bộ nhớ chính. IMDB ra đời nhằm đáp ứng cho các hệ thống cần thời gian truy vấn dữ liệu từ CSDL rất nhỏ và số lượng truy cập đồng thời cao. In-memory database (Cơ sở dữ liệu trên bộ nhớ) là cơ sở dữ liệu quan hệ dựa trên bộ nhớ, bỏ qua các thao tác truy cập ổ đĩa cứng bằng cách lưu trữ và xử lý dữ liệu ngay trên bộ nhớ chính. Nó còn có các tên khác như Main memory database (cơ sở dữ liệu bộ nhớ chính) hoặc real-time database (cơ sở dữ liệu thời gian thực). II.2. Các vấn đề kỹ thuật của IMDB II.2.1. So sánh IMDB với disk-based DB IMDB không chỉ đơn thuần khác CSDL truyền thống ở việc dữ liệu được đặt trên bộ nhớ chính thay vì trên ổ đĩa cứng, mà các yếu tố khác cũng được thay đổi để tối ưu hơn. Các yếu tố đó bao gồm: Tối ưu truy vấn, quản lý bộ nhớ đệm (buffer pool), và cấu trúc chỉ mục (index). Trong khi CSDL dựa trên ổ cứng thực hiện các công việc đó với quan niệm dữ liệu được đặt trên ổ cứng (dù dữ liệu có được cache trên bộ nhớ), IMDB biết chắc dữ liệu được đặt trên bộ nhớ nên nó làm đơn giản hóa các thuật toán và cấu trúc. Dưới đây là so sánh cụ thể giữa IMDB và CSDL dựa trên ổ cứng (gồm cả trường hợp dữ liệu có được cache toàn bộ lên bộ nhớ): Bảng II.1 – Bảng so sánh CSDL dựa trên ổ cứng và IMDB Tiêu chí Disk-based DB IMDB Lưu trữ dữ - Dữ liệu được lưu trữ trên ổ cứng - Dữ liệu được lưu trũ trên bộ nhớ liệu - Dữ liệu có thể được cache vào chính để truy vấn và xử lý. bộ nhớ để truy cập nhanh hơn - Dữ liệu có thể được ghi xuống ổ cứng để sao lưu và phục hồi. Tối ưu hóa - Thuật toán tối ưu hóa truy vấn - IMDB biết chắc dữ liệu lưu trữ truy vấn thực hiện với quan niệm dữ liệu trên bộ nhớ, nên thuật toán tối ưu đặt trên ổ đĩa. Do đó, tại thời truy vấn đơn giản hơn và chính điểm tối ưu truy vấn, dù dữ liệu xác hơn. được đặt một phần hay toàn bộ trong bộ nhớ, thời gian thực hiện gần như không khác nhau. Quản lý bộ - Buffer pool phải quản lý dữ liệu - IMDB không sử dụng buffer nhớ đệm được cache trong bộ nhớ. Khi có pool, không phải sao chép dữ liệu 17 (buffer pool) yêu cầu truy vấn dữ liệu, CSDL sẽ tìm kiếm trong buffer pool trước. Nếu không có, sẽ tìm trong các file ở ổ cứng. - Thậm chí, nếu dữ liệu được tìm thấy trong buffer, nó cũng phải sao chép trước khi trả lại kết quả, vì còn phải phục vụ các xử lý tiếp theo. Cấu trúc chỉ - Sử dụng B+ tree cho index. B+ mục (index) tree gồm nhiều node, mỗi node ứng với một data page, và chỉ số của page tiếp theo. Mỗi node gồm nhiều entry, mỗi entry chứa cặp data key-value và con trỏ tới entry tiếp theo.  Cấu trúc này là lý tưởng để giảm disk I/O, nhưng nó không còn nhiều hữu dụng khi dữ liệu đặt trong bộ nhớ. Khi dữ liệu đặt trong bộ nhớ, mục tiêu là giảm CPU cycle, không phải I/O. Nếu dùng cấu trúc này, CPU cycle tăng vì phải mở rộng và so sánh giá trị index trong B+ tree. II.2.2. Kiến trúc hệ thống IMDB II.2.2.1. Kiến trúc disk-based RDB trước khi trả lại cho ứng dụng. Do đó, thuật toán đơn giản hơn, thời gian đáp ứng truy vẫn nhanh hơn. - Sử dụng T-tree cho index. Vì tất cả data row được đặt trong bộ nhớ, T-tree không cần cặp keyvalue, chỉ đơn thuần gồm các con trỏ tới các dòng dữ liệu thực. Thời gian tìm kiêm dữ liệu như thuật toán tìm kiếm nhị phân. 18 Nguồn: wikipedia - - Hình II.1 – Kiến trúc disk-based RDB Driver interfaces: Người dùng hoặc chương trình ứng dụng có thể tác động đến dữ liệu, thông qua DDL (ngôn ngữ định nghĩa dữ liệu), DML (ngôn ngữ xử lý dữ liệu), DCL (ngôn ngữ điều khiển dữ liệu). Chương trình ứng dụng viết bằng ngôn ngữ lập trình nào, sử dụng CSDL nào phải có driver tương ứng. Những driver này được xây dựng dựa trên SQL. Chúng cung cấp các phương thức để chuẩn bị câu truy vấn, thực thi câu truy vấn và lấy kết quả trả về. SQL Engine: biên dịch và thực thi các truy vấn, gồm:  Compiler: xây dựng cấu trúc dữ liệu từ câu SQL và kiểm tra cú pháp, ngữ nghĩa.  Optimizer: chuyển câu SQL gốc thành các nhóm operation sao cho thực thi hiệu quả nhất  Execution engine: thực thi câu SQL sau tối ưu, liên kết với Relational engine để lấy và lưu trữ kết quả.
- Xem thêm -