Ứng dụng FoundationDB trong việc nâng cao hiệu năng xử lý truy vấn trực tuyến

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

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

Mô tả:

ĐẠ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 ĐẠ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 3 LỜ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. 4 LỜ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. 5 MỤ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: 1.1 TỔNG QUAN FOUNDATIONDB ................................................ 13 Tổng quan hệ thống xử lý giao tác trực tuyến - OLTP ................................. 13 1.1.1 Hệ thống OLTP..................................................................................... 13 1.1.2 Nguyên tắc thiết kế, xây dựng hệ thống OLTP ...................................... 13 1.2 FoundationDB[4] ........................................................................................ 14 1.2.1 NewSQL[5] .......................................................................................... 14 1.2.2 Key-value store ..................................................................................... 14 1.2.2.1 Chống chịu lỗi ................................................................................ 14 1.2.2.2 Mở rộng theo hướng tuyến tính ...................................................... 16 1.2.2.3 Hỗ trợ mạnh giao tác ACID ............................................................ 16 1.2.2.4 Đa dạng mô hình dữ liệu ................................................................ 18 1.2.3 1.3 Sql Layer .............................................................................................. 21 1.2.3.1 Kiến trúc vật lý ............................................................................... 21 1.2.3.2 Các tính năng chính ........................................................................ 23 1.2.3.3 Tích hợp ORM ............................................................................... 24 Quản trị FoundationDB[4] ........................................................................... 24 1.3.1 Khởi động và dừng ............................................................................... 24 1.3.2 Tập tin Cluster ...................................................................................... 24 1.3.3 Thêm node vào cluster .......................................................................... 25 1.3.4 Loại bỏ node từ cluster.......................................................................... 26 6 1.3.5 Xem thông tin trạng thái cluster ............................................................ 26 1.3.6 Quản lý tập tin trace .............................................................................. 28 1.3.7 Gỡ bỏ .................................................................................................... 28 1.3.8 Nâng cấp ............................................................................................... 28 1.4 Kết luận ....................................................................................................... 29 CHƯƠNG 2: PHÁT TRIỂN ỨNG DỤNG XỬ LÝ GIAO TÁC TRỰC TUYẾN VỚI FOUNDATIONDB........................................................................................... 30 2.1 Xây dựng ứng dụng với API của FoundationDB[4] ..................................... 30 2.1.1 Mô hình dữ liệu .................................................................................... 30 2.1.2 Quản lý không gian tên ......................................................................... 30 2.1.3 Làm việc với các hàm APIs .................................................................. 30 2.1.4 Cơ bản về giao tác trong FoundationDB ............................................... 30 2.2 Quản trị SQL Layer[4] ................................................................................ 31 2.2.1 Cài đặt SQL layer ................................................................................. 31 2.2.2 Khởi động và dừng dịch vụ trên môi trường windows ........................... 31 2.2.3 Công cụ client ....................................................................................... 33 2.2.4 JVM warmup ........................................................................................ 33 2.2.5 Quản lý phiên người dùng (Managing User Sessions) ........................... 33 2.2.6 Sử dụng tệp tin LOG ............................................................................. 34 2.2.7 Gỡ bỏ SQL Layer.................................................................................. 35 2.2.8 Nâng cấp ............................................................................................... 35 2.3 Xây dựng ứng dụng tích hợp với SQL Layer[4]........................................... 35 2.3.1 Kiểu dữ liệu .......................................................................................... 35 2.3.2 Truy cập với SQL ................................................................................. 36 2.3.2.1 Tạo bảng và truy vấn dữ liệu .......................................................... 37 2.3.2.2 Tạo chỉ mục(index) ........................................................................ 39 2.3.3 Thủ tục và hàm ..................................................................................... 41 2.3.3.1 Functions được xây dựng sẵn của SQL layer .................................. 41 7 2.3.3.2 2.4 Lập trình thủ tục và hàm ................................................................. 44 Kết luận ....................................................................................................... 46 CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG THỰC NGHIỆM ................................ 46 3.1 Bài toán đặt ra ............................................................................................. 46 3.2 Thiết kế và cài đặt hệ thống thử nghiệm ...................................................... 48 3.2.1 Các mô hình kiến trúc ........................................................................... 48 3.2.1.1 Mô hình hoạt động hiện tại ............................................................. 48 3.2.1.2 Mô hình vật lý hiện tại của hệ thống BIB ....................................... 49 3.2.1.3 Mô hình giải pháp BIDV Online..................................................... 50 3.2.2 Thiết kế cơ sở dữ liệu ............................................................................ 52 3.2.2.1 Thiết kế bảng, khóa, chỉ mục .......................................................... 52 3.2.2.2 Khối lượng dữ liệu ......................................................................... 52 3.2.3 Thiết kế chức năng và giao diện ............................................................ 53 3.2.4 Thiết kế máy chủ vật lý-cluster ............................................................. 59 3.2.5 Cài đặt chương trình ............................................................................. 60 3.3 Đánh giá so sánh FoundationDB và Oracle.................................................. 60 KẾT LUẬN .............................................................................................................. 63 TÀI LIỆU THAM KHẢO ........................................................................................ 64 8 DANH MỤC CÁC KÝ HIỆU CÁC TỪ VIẾT TẮT ACID Atomicity, Consistency, Isolation, và Durability BIB BIDV Internet Banking CSDL Cơ sở dữ liệu FDB FoundationDB JDBC Java Database Connectivity KVS Key-Value Store ORM Object-Relational Mapping OLTP Online Transaction Processing RDBMS Relational database management system TPS Transactions Processed per Second 9 DANH MỤC CÁC HÌNH VẼ Chương 1 : Hình 1: Chức năng của CSDL OLTP ..................................................... 13 Chương 1 : Hình 2: mô hình cluster và các bị lỗi ...................................................... 15 Chương 1 : Hình 3: minh họa về khả năng mở rộng của KVS ................................... 16 Chương 1 : Hình 4: Đa dạng mô hình dữ liệu ........................................................... 18 Chương 1 : Hình 5: mô hình tích hợp ứng dụng với FDB ......................................... 19 Chương 1 : Hình 6: Mô hình logic của KVS ............................................................. 20 Chương 1 : Hình 7: Kiến trúc vật lý đơn giản của SQL layer .................................... 21 Chương 1 : Hình 8: Kiến trúc SQL layer được khuyến nghị ..................................... 22 Chương 1 : Hình 9: Cấu hình cluster cơ bản bao gồm hai nodes ............................... 25 Chương 1 : Hình 10: trạng thái của cluster ................................................................ 27 Chương 2: Hình 1: dịch vụ SQL layer trên window .................................................. 32 Chương 2: Hình 2: ví dụ đánh chỉ mục nhóm ........................................................... 40 Chương 3: Hình 1: Các chức năng chính của hệ thông BIDV Internet Banking ........ 47 Chương 3: Hình 2: Mô hình hoạt động của BIB........................................................ 48 Chương 3: Hình 3: Mô hình vật lý của BIB .............................................................. 49 Chương 3: Hình 4: Mô hình BIDV online................................................................. 50 Chương 3: Hình 5: Mô hình vật lý hệ thống BIDV Online ........................................ 51 Chương 3: Hình 6: thiết kế bảng BIDV Online ......................................................... 52 Chương 3: Hình 7: biểu đồ Usecase BIDV Online .................................................... 53 Chương 3: Hình 8: Màn hình giao diện đăng nhập .................................................... 54 Chương 3: Hình 9: Màn hình chức năng quản lý chi nhánh ...................................... 55 Chương 3: Hình 10: Thêm mới người dùng .............................................................. 56 Chương 3: Hình 11: sửa thông tin người dùng .......................................................... 56 Chương 3: Hình 12: Thêm mới tài khoản cho khách hàng ........................................ 57 10 Chương 3: Hình 13: chức năng kiểm tra tải hệ thống ................................................ 57 Chương 3: Hình 14: chức năng chuyển khoản .......................................................... 58 Chương 3: Hình 15: Chức năng vấn tin tài khoản ..................................................... 58 Chương 3: Hình 16: mô hình cluster FDB của BIDV Online .................................... 60 Chương 3: Hình 17: kết quả cấu hình cluster ............................................................ 60 Chương 3: Hình 18: cấu hình connection pool tomcat .............................................. 61 11 MỞ ĐẦ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ý. - 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) . 12  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. - 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. 13 CHƯƠNG 1: TỔNG QUAN FOUNDATIONDB 1.1 Tổng quan hệ thống xử lý giao tác trực tuyến - OLTP 1.1.1 Hệ thống OLTP Online transaction processing – OLTP là một lớp hệ thống thông tin nhằm mục tiêu thuận tiện trong việc quản lý các ứng dụng hướng giao tác, thường dùng để nhập dữ liệu và xử lý các giao tác. Các ứng dụng xử lý giao tác trực tuyến có thông lượng cao, chuyên thêm và sửa vào hệ quản trị CSDL. Các ứng dụng này thường có rất nhiều người dùng đồng thời. Mục tiêu của các ứng dụng OLTP là sẵn sàng, nhanh, đồng thời và có thể phục hồi. Các hệ thống OLTP thường thấy hiện nay như đặt chỗ trực tuyến, mua hàng trực tuyến, ngân hàng điện tử, sàn giao dịch chứng khoán. Hầu hết các công ty, tổ chức này đều xây dựng một hệ quản trị CSDL hỗ trợ OLTP. Chương 1 : Hình 1: Chức năng của CSDL OLTP 1.1.2 Nguyên tắc thiết kế, xây dựng hệ thống OLTP Để xây dựng một hệ thống OLTP, nhà thiết kế phải dự đoán, đánh giá được số lượng người dùng đồng thời mà không làm ảnh hưởng đến hiệu năng chung của hệ thống. Các yếu tố sau đây có ảnh hưởng quyết định đến hiệu năng của một hệ thống OLTP. 14 1.2 FoundationDB[4] 1.2.1 NewSQL[5] NewSQL là một lớp CSDL quan hệ hướng đến việc cung cấp khả năng mở rộng hiệu năng giống như hệ CSDL NoSQL phục vụ cho nhu cầu đọc ghi lớn của hệ thống OLTP trong khi vẫn đảm bảo tính ACID của các hệ CSDL quan hệ truyền thống. Thuật ngữ này lần đầu tiên được sử dụng bởi 451 Group analyst Matthew Aslett trong một bài báo năm 2011 nghiên cứu và thảo luận về sự phát triển của hệ thống CSDL mới như một thách thức cho các nhà cung cấp. Nhiều hệ thống doanh nghiệp cần có khả năng mở rộng quy mô nhưng không thể sử dụng NoSQL do chúng không cung cấp đầy đủ các yêu cầu về quan hệ dữ liệu và giao tác. Các giải pháp trước đây thường là mua một máy chủ CSDL mạnh hơn hoặc phát triển phần mềm lớp giữa tùy chỉnh và phân phối các truy vấn trên các nút máy chủ CSDL quan hệ truyền thống. Cả hai phương pháp này đều tốn kém nên không nhiều doanh nghiệp lựa chọn. Do đó trong bài báo này Matthew Aslett đã thảo luận về cách NewSQL khởi đầu và đang sẵn sàng để thách thức các nhà cung cấp thương mại đặc biệt là Oracle. Mặc dù các hệ thống NewSQL khác nhau rất nhiều trong kiến trúc của chúng nhưng có hai đặc tính chung là tất cả đều hỗ trợ các mô hình dữ liệu quan hệ và sử dụng ngôn ngữ truy vấn SQL. Những ứng dụng mà NewSQL hướng tới có số lượng lớn giao tác có thời gian sống ngắn, tác động đến một nhóm dữ liệu nhỏ thông qua các chỉ mục (index), và có tính lặp lại giao tác với các giá trị đầu vào khác nhau. Một trong những hệ CSDL NewSQL đầu tiên là H-Store. 1.2.2 Key-value store Đây là lớp nằm ở dưới cùng trong thiết kế của FoundationDB, như một nền tảng lưu trữ. Key-value Store là một CSDL kết hợp khả năng mở rộng(scalability), chống lỗi(fault-tolerance), có hiệu năng rất tốt và hỗ trợ mạnh mẽ giao tác ACID đa khoa (multi-key ACID transactions). 1.2.2.1 Chống chịu lỗi Khả năng chịu lỗi được đặc trưng bởi số lượng, thời gian, và khả năng dữ liệu và dịch vụ bị mất có thể xảy ra. 15 Chương 1 : Hình H 2: mô hình cluster và các bị lỗi  Phân tán và nhân bản Key-Value Store đượ ợc xây dựng trên kiếnn trúc phân tán không chia sẻ(distributed shared-nothing). nothing). Ki Kiến trúc này mang lại rất nhiều ưu điểm m so với v việc hệ thống chỉ chạy trên mộtt máy tính tránh trường hợp hệ thống gặp lỗii khi máy tính vật lý xảy ra sự cố.. KVS chia dữ d liệu thành nhiều phầnn và phân tán chúng thành nhiều nhi bản sao ra các máy chủ lưu trữ ữ khác nhau, các máy chủ này kết nối mạng ng vvới nhau. KVS có thể chịu đượcc sự hỏng hóc của một máy tính với dịch vụ bị gián đoạn trong tối đa vài giây và dữ liệu u được đư bảo toàn, dù vậy thì thông lượng củaa hhệ thống sẽ bị ảnh hưởng. Mộtt máy tính b bị hỏng hóc là lỗi rất phổ biến, do đó khả năng ch chịu lỗi này là rất cần thiết.  Chiến lược phân tán dữ ữ liệu Trong trường hợp nhiềều máy tính bị hỏng hóc, KVS vẫn có thể giao ddịch với khả năng dịch vụ có thể bị mấất, gián đoạn. Tuy nhiên dữ liệu bị mấtt có th thể xảy ra do chỉ có một số lượng hữu hạn n các bản b sao của các phần dữ liệu được tạoo ra trên khu vực lưu trữ của các máy tính. Bất kỳ một hệ thống ng phân tán nào đều đ phải đối mặt với mộtt xác su suất mất mát dữ liệu. u. VD: khi chúng ta có m một hệ thống cluster bao gồm m 40 máy tính, ddữ liệu được chia ra một triệu phần và mỗii ph phần được sao chép ở bốnn máy tính, khi 4 máy tính đó cùng bị lỗi thì khả năng mấtt mát dữ d liệu là có thể xảy ra. Qua tính toán chúng ta có một con số khả năng xảy ra lỗii như vậy v rất thấp khoảng mười phần triệu.  Giả định Chúng ta có thể nhận n ra rrằng các máy tính có xu hướng xảy ra lỗỗi cùng nhau như các máy chủ chung mộtt k kết nối mạng, nguồn điện. KVS có thể chọn n các máy tính để phân tán các bản n sao các mảnh m dữ liệu sao cho khả năng xảy ra việcc các máy tính bị lỗi cùng nhau là thấp nhất. 16  Các loại lỗi khác Có rất nhiều các loại lỗ ỗi, hỏng hóc khác nhau như: đầy đĩa cứng ng lưu trữ, tr mạng kết nối lỗi, hiệu suấtt máy tính bị b suy hao, lỗi hệ điều hành…KVS đượcc xây dựng d và thử nghiệm trên môi trường ng giả gi lập các loại lỗi này để nâng cao khả năng ch chịu lỗi và đảm bảo an toàn cho dữ liệu. 1.2.2.2 Mở rộng theo hướng ng tuy tuyến tính Do sử dụng kiến n trúc phân tán không chia sẻ s nên KVS có thể mở rộộng đơn giản bằng việc thêm máy vậtt lý vào cluster chứ ch không phải chỉ mở rộng bằng ng cách tăng kh khả năng của một máy. Khả năng mở m rộng là một thuộc tính cần thiếtt cho m một ứng dụng thành công. Nó cũng là mộtt trong ba thành ph phần ảnh hưởng lẫnn nhau và ảnh hưởng đến hiệu năng chung của hệ thống th bao gồm: Hiệu năng cao, Sự mở rộng ng, Sự mềm dẻo. Chương 1 : H Hình 3: minh họa về khả năng mở rộng của KVS  Hiệu năng cao Khả năng đạt được hiệu u năng cao nhất nh cho một cấu hình.  Sự mở rộng Khả năng cung cấp dịch ch vvụ hiệu quả ở các mức độ mở rộng ng khác nhau nhau.  Sự mềm dẻo Khả năng thích ứng ng và thay đđổi quy mô đơn giản. 1.2.2.3 Hỗ trợ mạnh nh giao tác ACID @fdb @fdb.transactional def example(tr): # Read two values from the database a = tr.get('a') 17 b = tr.get('b') # Write two key-value pairs to the database tr.set('c', a+b) tr.set('d', a+b) example(db) Giao tác ACID là mô hình lập trình đơn giản và mạnh mẽ nhất để giải quyết các vấn đề liên quan đến tính đồng thời. KVS là một trong số ít CSDL phân tán cung cấp đầy đủ giao tác ACID với hiệu năng cao.  Giao tác Một giao tác được định nghĩa là một tập các thao tác đọc ghi vào CSDL được xử lý như một thao tác với một vài thuộc tính quan trọng. Thứ nhất tất cả các thao tác đọc đều đọc vào một ảnh của CSDL(không thấy được thay đổi của dữ liệu khi có các giao tác thực thi đồng thời). Thứ hai các thao tác ghi trong cùng một giao tác thì tất cả đều thành công hoặc tất cả đều thất bại. Cuối cùng khi giao tác hoàn thành(commit) những thay đổi dữ liệu do thao tác ghi đều được lưu trữ vĩnh viễn vào CSDL.Mọi ứng dụng đều có nhu cầu hỗ trợ nhiều người dùng đồng thời, nên cần được xây dựng để sử dụng các giao tác có đầy đủ tính ACID. Giao tác ngày càng đóng vai trò quan trọng trong sự phát triển của NoSQL.  Giao tác giải quyết sự đồng thời Sự đồng thời (Concurrency) xảy ra khi có nhiều người dùng, hay một phần của ứng dụng đọc và ghi vào cùng một dữ liệu cùng một lúc. Giao tác giúp cho việc quản lý sự đồng thời đơn giản hơn cho nhà phát triển. Thuộc tính chính của giao tác dễ đạt được là tính cô lập (Isolation). Khi một hệ thống đảm bảo rằng giao tác thực sự được cô lập, nhà phát triển có thể coi mỗi giao tác là thực thi tuần tự dù thực sự chúng đang thực thi đồng thời.Một vài hệ thống chỉ cung cấp các giao tác ACID cho một tập hạn chế các chế độ hoạt động, thông thường bị giới hạn bởi cấu trúc của mô hình dữ liệu. Tuy nhiên, sức mạnh thật sự của giao tác nằm ở chỗ chúng có thể được định nghĩa bởi nhà phát triển trên bất cứ tập yếu tố dữ liệu nào. Một nhà phát triển làm việc với KVS có thể định nghĩa các giao tác đọc và ghi bất cứ số lượng bộ key-value. Khi nhà phát triển có thể tự do định nghĩa các giao tác mà không gặp rào cản nào, họ có thể sử dụng giao tác như các khối cơ bản của ứng dụng.  Giao tác tăng khả năng trừu tượng Giao tác cho phép xây dựng các lớp trừu tượng một cách đơn giản và hiệu quả cung cấp khả năng mở rộng để hỗ trợ đa dạng mô hình dữ liệu. Mô hình dữ liệu được 18 tối ưu hóa cho biểu đồ, tài liệệu, dữ liệu tổ chức theo cột, hay dữ liệuu quan hhệ đều có thể được cài đặt ở các lớp p bên trên ccủa KVS. Trong hầu hết các trường ng hhợp, một đối tượng dữ liệu đơn lẻ trong m một mô hình cao cấp hơn sẽ được sắp xếpp trên nhi nhiều bộ khóa-giá trị. Giao ao tác làm cho nó đơn giản gi để thực hiện các ánh xạ này bbằng cách đóng gói các thao tác cập nhậật vào các bộ khóa –giá trị trong các đơn vvị nguyên tử (Atomic units).Những lợii ích mà giao tác mang lại l còn lớn hơn là một lự ựa chọn linh hoạt về mô hình dữ liệu cấp p cao. Chúng có thể th cho phép một đại diện dữ li liệu hiệu quả hơn trong một mô hình cụ thể.. 1.2.2.4 Đa dạng mô hình dữ li liệu Chương 1 : Hình H 4: Đa dạng mô hình dữ liệu Kiến trúc lớp độcc đáo của c KVS tách riêng công nghệ lưu trữ và mô hình dữ liệu của nó. Điều u này cho phép các nhà phát triển tri tạo ra các lớp mà họ ccần trong khi vẫn tiếp tục lưu trữ dữ liệu u trong m một hệ thống có khả năng mở rộng. 19 Chương 1 : Hình 5: mô hình tích hợp ứng dụng với FDB  Lớp ứng dụng có thể thao tác trực tiếp với KVS thông qua api.  SQL layer hoặc Your Layer mô hình dữ liệu mới có khả năng tương thích với hệ thống có sẵn hoặc phục vụ như một framework.  Lớp dưới cùng là KVS tất cả dữ liệu được lưu trữ ở đây. 20 Chương 1 : Hình 6: Mô hình logic của KVS
- Xem thêm -