ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Mạnh Thắng ỨNG DỤNG FOUNDATIONDB TRONG VIỆC NÂNG CAO HIỆU NĂNG XỬ LÝ TRUY VẤN TRỰC TUYẾN LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Mạnh Thắng
ỨNG DỤNG FOUNDATIONDB TRONG VIỆC NÂNG CAO
HIỆU NĂNG XỬ LÝ TRUY VẤN TRỰC TUYẾN
LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN
HÀ NỘI - 2014
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Mạnh Thắng
ỨNG DỤNG FOUNDATIONDB TRONG VIỆC NÂNG CAO HIỆU NĂNG XỬ LÝ TRUY VẤN TRỰC TUYẾN
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60480104
LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: Tiến sĩ Nguyễn Ngọc Hóa
HÀ NỘI - 2014
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan bản luận văn “Ứng dụng FoundationDB trong việc nâng cao
hiệu năng xử lý truy vấn trực tuyến” là công trình nghiên cứu và thử nghiệm của tôi,
tại đơn vị công tác, tham khảo các nguồn tài liệu đã được chỉ rõ trong trích dẫn và danh mục tài liệu tham khảo Các nội dung công bố và kết quả trình bày trong luận văn này là trung thực và chưa từng được ai công bố trong bất cứ công trình nào
Trang 4LỜI CẢM ƠN
Tôi xin gửi lời cảm ơn tới các thầy, cô Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội đã tận tình giảng dạy và truyền đạt kiến thức trong suốt khóa học cao học vừa qua Xin chân thành cảm ơn TS.Nguyễn Ngọc Hóa, người đã định hướng đề tài, trực tiếp hướng dẫn và tận tình chỉ bảo tôi trong suốt quá trình thiết kế, xây dựng và hoàn thiện luận văn này
Tôi xin chân thành cảm ơn các anh chị, các bạn đồng nghiệp trong phòng Phát triển phần mềm - Trung tâm Công nghệ thông tin BIDV đã tạo điều kiện cho tôi tìm hiểu hệ thống và tạo môi trường thử nghiệm
Tôi xin bày tỏ lòng biết ơn sâu sắc tới gia đình, vợ, con… những người đã luôn ở bên cạnh, động viên, chia sẻ cùng tôi trong quãng thời gian học cao học cũng như quá trình thực hiện luận văn cao học
Trang 5MỤC LỤC
LỜI CAM ĐOAN 3
LỜI CẢM ƠN 4
MỤC LỤC 5
DANH MỤC CÁC KÝ HIỆU CÁC TỪ VIẾT TẮT 8
DANH MỤC CÁC HÌNH VẼ 9
MỞ ĐẦU 11 CHƯƠNG 1: TỔNG QUAN FOUNDATIONDB Error! Bookmark not defined
1.1 Tổng quan hệ thống xử lý giao tác trực tuyến - OLTPError! Bookmark not defined.
1.1.1 Hệ thống OLTP Error! Bookmark not defined
1.1.2 Nguyên tắc thiết kế, xây dựng hệ thống OLTPError! Bookmark not defined.
1.2 FoundationDB[4] Error! Bookmark not defined
1.2.1 NewSQL[5] Error! Bookmark not defined
1.2.2 Key-value store Error! Bookmark not defined
1.2.2.1 Chống chịu lỗi Error! Bookmark not defined
1.2.2.2 Mở rộng theo hướng tuyến tính Error! Bookmark not defined
1.2.2.3 Hỗ trợ mạnh giao tác ACID Error! Bookmark not defined
1.2.2.4 Đa dạng mô hình dữ liệu Error! Bookmark not defined
1.2.3 Sql Layer Error! Bookmark not defined
1.2.3.1 Kiến trúc vật lý Error! Bookmark not defined
1.2.3.2 Các tính năng chính Error! Bookmark not defined
1.2.3.3 Tích hợp ORM Error! Bookmark not defined
1.3 Quản trị FoundationDB[4] Error! Bookmark not defined
1.3.1 Khởi động và dừng Error! Bookmark not defined
Trang 61.3.2 Tập tin Cluster Error! Bookmark not defined
1.3.3 Thêm node vào cluster Error! Bookmark not defined
1.3.4 Loại bỏ node từ cluster Error! Bookmark not defined
1.3.5 Xem thông tin trạng thái cluster Error! Bookmark not defined
1.3.6 Quản lý tập tin trace Error! Bookmark not defined
1.3.7 Gỡ bỏ Error! Bookmark not defined
1.3.8 Nâng cấp Error! Bookmark not defined
1.4 Kết luận Error! Bookmark not defined
CHƯƠNG 2: PHÁT TRIỂN ỨNG DỤNG XỬ LÝ GIAO TÁC TRỰC TUYẾN VỚI
FOUNDATIONDB Error! Bookmark not defined
2.1 Xây dựng ứng dụng với API của FoundationDB[4]Error! Bookmark not defined.
2.1.1 Mô hình dữ liệu Error! Bookmark not defined
2.1.2 Quản lý không gian tên Error! Bookmark not defined
2.1.3 Làm việc với các hàm APIs Error! Bookmark not defined
2.1.4 Cơ bản về giao tác trong FoundationDB Error! Bookmark not defined
2.2 Quản trị SQL Layer[4] Error! Bookmark not defined
2.2.1 Cài đặt SQL layer Error! Bookmark not defined
2.2.2 Khởi động và dừng dịch vụ trên môi trường windowsError! Bookmark not
defined.
2.2.3 Công cụ client Error! Bookmark not defined
2.2.4 JVM warmup Error! Bookmark not defined
2.2.5 Quản lý phiên người dùng (Managing User Sessions)Error! Bookmark not
defined.
2.2.6 Sử dụng tệp tin LOG Error! Bookmark not defined
2.2.7 Gỡ bỏ SQL Layer Error! Bookmark not defined
Trang 72.2.8 Nâng cấp Error! Bookmark not defined
2.3 Xây dựng ứng dụng tích hợp với SQL Layer[4]Error! Bookmark not defined
2.3.1 Kiểu dữ liệu Error! Bookmark not defined
2.3.2 Truy cập với SQL Error! Bookmark not defined
2.3.2.1 Tạo bảng và truy vấn dữ liệu Error! Bookmark not defined
2.3.2.2 Tạo chỉ mục(index) Error! Bookmark not defined
2.3.3 Thủ tục và hàm Error! Bookmark not defined
2.3.3.1 Functions được xây dựng sẵn của SQL layerError! Bookmark not
defined.
2.3.3.2 Lập trình thủ tục và hàm Error! Bookmark not defined
2.4 Kết luận Error! Bookmark not defined
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG THỰC NGHIỆMError! Bookmark not
defined.
3.1 Bài toán đặt ra Error! Bookmark not defined
3.2 Thiết kế và cài đặt hệ thống thử nghiệm Error! Bookmark not defined
3.2.1 Các mô hình kiến trúc Error! Bookmark not defined
3.2.1.1 Mô hình hoạt động hiện tại Error! Bookmark not defined
3.2.1.2 Mô hình vật lý hiện tại của hệ thống BIBError! Bookmark not defined.
3.2.1.3 Mô hình giải pháp BIDV Online Error! Bookmark not defined
3.2.2 Thiết kế cơ sở dữ liệu Error! Bookmark not defined
3.2.2.1 Thiết kế bảng, khóa, chỉ mục Error! Bookmark not defined
3.2.2.2 Khối lượng dữ liệu Error! Bookmark not defined
3.2.3 Thiết kế chức năng và giao diện Error! Bookmark not defined
3.2.4 Thiết kế máy chủ vật lý-cluster Error! Bookmark not defined
3.2.5 Cài đặt chương trình Error! Bookmark not defined
Trang 83.3 Đánh giá so sánh FoundationDB và Oracle Error! Bookmark not defined KẾT LUẬN Error! Bookmark not defined
TÀI LIỆU THAM KHẢO 14
Trang 9DANH MỤC CÁC KÝ HIỆU CÁC TỪ VIẾT TẮT
ACID Atomicity, Consistency, Isolation, và Durability BIB BIDV Internet Banking
JDBC Java Database Connectivity
ORM Object-Relational Mapping
OLTP Online Transaction Processing
RDBMS Relational database management system
TPS Transactions Processed per Second
Trang 10DANH MỤC CÁC HÌNH VẼ Chương 1 : Hình 1: Chức năng của CSDL OLTP Error! Bookmark not defined Chương 1 : Hình 2: mô hình cluster và các bị lỗi Error! Bookmark not defined Chương 1 : Hình 3: minh họa về khả năng mở rộng của KVSError! Bookmark not defined.
Chương 1 : Hình 4: Đa dạng mô hình dữ liệu Error! Bookmark not defined Chương 1 : Hình 5: mô hình tích hợp ứng dụng với FDBError! Bookmark not defined Chương 1 : Hình 6: Mô hình logic của KVS Error! Bookmark not defined Chương 1 : Hình 7: Kiến trúc vật lý đơn giản của SQL layerError! Bookmark not defined.
Chương 1 : Hình 8: Kiến trúc SQL layer được khuyến nghịError! Bookmark not defined.
Chương 1 : Hình 9: Cấu hình cluster cơ bản bao gồm hai nodesError! Bookmark not
defined.
Chương 1 : Hình 10: trạng thái của cluster Error! Bookmark not defined
Chương 2: Hình 1: dịch vụ SQL layer trên window Error! Bookmark not defined Chương 2: Hình 2: ví dụ đánh chỉ mục nhóm Error! Bookmark not defined
Chương 3: Hình 1: Các chức năng chính của hệ thông BIDV Internet Banking Error!
Bookmark not defined.
Chương 3: Hình 2: Mô hình hoạt động của BIB Error! Bookmark not defined Chương 3: Hình 3: Mô hình vật lý của BIB Error! Bookmark not defined Chương 3: Hình 4: Mô hình BIDV online Error! Bookmark not defined Chương 3: Hình 5: Mô hình vật lý hệ thống BIDV OnlineError! Bookmark not defined.
Chương 3: Hình 6: thiết kế bảng BIDV Online Error! Bookmark not defined
Trang 11Chương 3: Hình 7: biểu đồ Usecase BIDV Online Error! Bookmark not defined Chương 3: Hình 8: Màn hình giao diện đăng nhập Error! Bookmark not defined Chương 3: Hình 9: Màn hình chức năng quản lý chi nhánhError! Bookmark not defined.
Chương 3: Hình 10: Thêm mới người dùng Error! Bookmark not defined Chương 3: Hình 11: sửa thông tin người dùng Error! Bookmark not defined Chương 3: Hình 12: Thêm mới tài khoản cho khách hàngError! Bookmark not defined Chương 3: Hình 13: chức năng kiểm tra tải hệ thống Error! Bookmark not defined Chương 3: Hình 14: chức năng chuyển khoản Error! Bookmark not defined Chương 3: Hình 15: Chức năng vấn tin tài khoản Error! Bookmark not defined Chương 3: Hình 16: mô hình cluster FDB của BIDV OnlineError! Bookmark not defined.
Chương 3: Hình 17: kết quả cấu hình cluster Error! Bookmark not defined Chương 3: Hình 18: cấu hình connection pool tomcat Error! Bookmark not defined
Trang 12MỞ ĐẦU
Giới thiệu
Trong các hệ thống lớn tài chính – ngân hàng – chứng khoán một ngày phải giải quyết số lượng truy vấn và giao dịch rất lớn phát sinh trong quá trình tác nghiệp nên việc đảm bảo tải cho hệ thống là rất quan trọng Đồng thời các truy vấn và giao dịch phải đáp ứng tính chính xác và phần lớn trong đó phải đảm bảo về mặt thời gian xử lý cho kết quả đầu ra gần như trực tuyến hoặc có thể coi là trực tuyến
Hiện nay, các hệ quản trị CSDL truyền thống như Oracle, MS SQL Server… không đáp ứng được những dịch vụ có số lượng truy vấn đồng thời lớn [1-2] Hơn nữa, các mô hình quản trị CSDL truyền thống này ban đầu đều được xây dựng trên các hệ thống máy tính đơn vi xử lý (CPU) Vì thế, việc tận dụng các bộ vi xử lý đa nhân hay đa vi xử lý mới chỉ được quan tâm ở mức hệ điều hành Có rất nhiều cách tiếp cận mới theo hướng NoSQL để giải quyết những vấn đề đặt ra ở trên [2-3] Hệ quản trị CSDL NoSQL có khả năng tận dụng rất tốt phần cứng kèm theo khả năng mở rộng, tăng cường năng lực xử lý đơn giản nhưng lại vấp phải một số khiếm khuyết như: khó tiếp cận đối với những nhà phát triển chưa có kinh nghiệm, một số hệ quản trị CSDL NoSQL không hỗ trợ thực thi các giao tác Do đó từ đầu năm 2011 một lớp hệ quản trị CSDL mới ra đời kết hợp các điểm mạnh của các hệ quản trị NoSQL và SQL truyền thống Lớp hệ quản trị CSDL này được gọi là NewSQL, đều hỗ trợ mô hình dữ liệu quan hệ và sử dụng ngôn ngữ truy vấn SQL Một trong số đó là FoundationDB được thiết kế để hoạt động trên cluster, nhà phát triển có thể truy vấn, tương tác với FoundationDB thông qua ngôn ngữ SQL nhằm tăng khả năng tận dụng phần cứng tối đa và tăng khả năng tương thích với các ứng dụng đã xây dựng trước đây có truy vấn CSDL thông qua SQL do đó cải thiện hiệu năng xử lý giao tác trực tuyến
Mục tiêu của luận văn
Với vấn đề đã được đặt ra như ở phần mở đầu, mục tiêu của luận văn này bao gồm:
- Nghiên cứu, tìm hiểu được cách thiết kế hệ thống OLTP trong việc tối ưu xử lý các giao tác trên những hệ thống đa vi xử lý
Trang 13- Nghiên cứu, tìm hiểu hệ quản trị CSDL FoundationDB áp dụng vào bài toán cụ thể Quản lý giao dịch chuyển tiền BIDV online Với mục đích khắc phục toàn diện thực trạng của hệ thống phần mềm “BIDV internet banking” như :
Khó khăn khi đáp ứng yêu cầu nhiều giao dịch trên giây (TPS)
Hệ thống không ổn định và thường xuyên quá tải khi lượng giao dịch đồng thời lớn
Chưa tận dụng được lợi thế phần cứng máy chủ đa nhân, cluster
- Phát triển thử nghiệm ứng dụng và so sánh đánh giá hiệu năng với một số hệ quản trị truyền thống
Bố cục của luận văn
Mở đầu: Giới thiệu về đề tài luận văn, tính thiết thực của đề tài và tổ chức của luận văn
Chương 1 Tổng quan về FoundationDB
- Các yêu cầu về thiết kế hệ thống OLTP
- Giới thiệu về FoundationDB
o Key-Value Store
o SQL Layer
- Quản trị FoundationDB
o Cài đặt cấu hình FoundationDB trên cluster
o Sao lưu và khôi phục
Chương 2 Phát triển ứng dụng xử lý giao tác trực tuyến với FoundationDB
- Xây dựng ứng dụng với API của FoundationDB
- Xây dựng ứng dụng tích hợp với SQL Layer
- Quản trị ứng dụng với SQL Layer
Chương 3 Thực nghiệm
- Bài toán đặt ra: Quản lý giao dịch chuyển tiền-BIDV Online
- Thiết kế và cài đặt hệ thống website
- Kết quả thu được của hệ thống
Trang 14- Xây dựng công cụ đánh giá hiệu năng xử lý so với các hệ cơ sở dữ liệu truyền thống
Kết luận chung và những hướng phát triển tiếp theo: Tổng kết những kết quả đạt được qua quá trình hoàn thành đề tài luận văn; đề ra hướng phát triển, hoàn thiện cho đề tài nghiên cứu
Trang 15TÀI LIỆU THAM KHẢO
[1]E P C Jones, D J Abadi, and S Madden, "Low overhead concurrency control for
partitioned main memory databases," in SIGMOD ’10: Proceedings of the 2010
international conference on Management of data, New York, NY, USA, 2010, pp
603-614
[2]Dionysios Logothetis, Kenneth Yocum Data Indexing for Stateful, Large-scale Data Processing Loo, B and Saroiu, S 2010 5th international workshop on networking meets databases (NetDB 2009) SIGOPS Oper Syst Rev 43, 4 (Jan 2010), 17-18
[3]Miceli, C., Miceli, M., Jha, S., Kaiser, H., and Merzky, A 2009 Programming Abstractions for Data Intensive Computing on Clouds and Grids In Proceedings of the
2009 9th IEEE/ACM international Symposium on Cluster Computing and the Grid (May
18 - 21, 2009) CCGRID IEEE Computer Society, Washington, DC, 478-483
[4] https://foundationdb.com/
[5]Aslett, Matthew (2011) "How Will The Database Incumbents Respond To NoSQL And NewSQL?" 451 Group (published 2011-04-04) Retrieved 2012-07-06