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. Tổng quan mô hình xử lý giao tác H-Store - Kiến trúc hệ thống H-Store, các khái niệm và mô hình lược đồ triển khai, lược đồ thực thi. - Nguyên tắc thiết kế hệ thống H-Store - Cách thức thực thi giao dịch và Cơ chế điều khiển phân tranh. Phát triển ứng dụng xử lý giao tác trực tuyến với VoltDB - Giới thiệu VoltDB - Cách xây dựng ứng dụng và triển khai ứng dụng VoltDB - Các mô hình bảo mật, sẵn sàng, backup và khôi phục dữ liệu - Quản trị ứng dụng trong VoltDB Chương 3.
Thực nghiệm - Bài toán đặt ra: quản lý hệ thống khách hàng và kho số của Công ty viễn thông điện lực - Thiết kế và cài đặt hệ thống - Kết quả thu đươc (các chức năng chính của hệ thống) - Đánh giá, so sánh với một số hệ quản trị CSDL 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. z 11 CHƢƠNG 1 : TỔNG QUAN MÔ HÌNH XỬ LÝ GIAO TÁC H- STORE 1.1 Giới thiệu Nhiều hệ thống sử dụng thành phần kiến trúc từ hệ thống cơ sở dữ liệu quan hệ truyền thống, mà không quan tâm liệu ứng dụng có thực sự cần các kỹ thuật chậm chạp đó không. Với khối lượng làm việc (workloads) cho các hệ thống xử lý giao dịch trực tuyến (OLTP) có tính chất lặp đi lặp lại, liên tục và thực thi giao dịch sống với thời gian ngắn, điều này đã bị cản trợ bởi hiệu năng của thiết bị vào ra I/O trên nền tảng hệ thống quản trị cơ sở dữ liệu quan hệ (RDBMS) [4, 5, 6]. Một chiến lược để giảm thiểu vấn đề này là mở rộng hệ thống theo chiều ngang bằng cách phân vùng cho cả dữ liệu và trách nhiệm xử lý dọc theo nhiều máy chủ không chia sẻ.
Ứng dụng OLTP lớn nhất có thể đưa toàn bộ dữ liệu của nó vào bộ nhớ chính trong kiến trúc phần cứng máy chủ Cluster hiện đại với mô hình không chia sẻ. Do đó lưu trữ ổ cứng và cấu trúc chỉ số hóa (indexing) là không cần thiết. Nghiên cứu của tôi tập trung vào H-Store, một hệ thống OLTP thế hệ mới. Hệ thống này vận hành trên môi trường Cluster phân tán và không chia sẻ, với đặc tính toàn bộ dữ liệu được chứa trong bộ nhớ chính.Mô hình hệ thống dựa trên sự phối hợp của nhiều luồng đơn nhằm cung cấp thực thi giao dịch OLTP hiệu quả hơn [2].
H-Store là hệ thống có một luồng cho mỗi vùng dữ liệu riêng. Trong hệ thống này, duy nhất một luồng có thể truy cập dữ liệu và điều khiển tương tranh theo kiểu truyền thống là không cần thiết. Phân vùng dữ liệu cũng được sử dụng cùng với hệ thống không chia sẻ (Shared-nothing systems). Dữ liệu được chia dọc theo nhiều máy chủ cơ sở dữ liệu và các giao dịch được định tuyến tới các phân vùng (patitions) có dữ liệu cần thiết.
Cách tiếp cận này cải thiện hiệu năng cơ sở dữ liệu một cách đáng kể. Một vài ứng dụng có khả năng phân vùng hoàn hảo (mọi giao dịch có thể được thực thi trong toàn bộ một phân vùng), trong trường hợp đó, nếu dữ liệu được lưu trong bộ nhớ chính, mỗi giao dịch có thể chạy mà không cần điều khiển tương tranh, chạy cho đến khi hoàn thành ở phân vùng phù hợp. Tuy nhiên, nhiều ứng dụng có một vài giao dịch trải rộng nhiều phân vùng. Với những giao dịch đó, một vài mô hình điều khiển tương tranh là cần thiết [1].2 Tổng quan của hệ thống H-Store Hệ thống H-Store là cơ sở dữ liệu quan hệ với cơ chế lưu trữ dựa trên dữ liệu hàng (row) và có tính phân tán cao [7].
Hệ cơ sở dữ liệu này được chạy trên môi trường Cluster với các máy (nodes) thực thi trong bộ nhớ chính và không chia sẻ. Chúng ta định nghĩa ―một thể hiện H-Store đơn là một Cluster với 2 hoặc nhiều Nodes‖. Node là hệ thống máy tính vật lý đơn. Node có thể chứa một hoặc nhiều z 12 sites.
Site là một thực thể hoạt động độc lập trong hệ thống, nó được coi như là một tiến trình đơn mà hệ thống ứng dụng OLTP từ ngoài kết nối đến để thực thi giao dịch. Chúng ta giả sử rằng, một Node của hệ thống H-Store tiêu biểu có nhiều bộ vi xử lý và mỗi Site được gắn thực thi chính xác trên một vi xử lý đó. Mỗi Site độc lập với Site khác và do đó không chia sẻ bất cứ kiến trúc dữ liệu hoặc bộ nhớ với Site đồng nghiệp nào trên cùng một máy. Mọi quan hệ trong cơ sở dữ liệu được phân chia vào một hoặc nhiều phân vùng (Partitions).
Một phân vùng được nhân bản và chứa trên nhiều Site. Ứng dụng OLTP thực hiện các cuộc gọi tới hệ thống H-Store để thực thi các thủ tục lưu trữ đã được định nghĩa trước (stored procedures). Mỗi thủ tục được xác định bởi một tên duy nhất và chứa mã điều khiển có cấu trúc pha trộn với tập lệnh SQL được tham số hóa. Một thể hiện của thủ tục được khởi tạo bởi ứng dụng OLTP được gọi là một giao dịch (Transaction).
Sử dụng những định nghĩa như trên, chúng ta miêu tả lược đồ triển khai (deployment schemes) và lược đồ thực thi (execution schemes) của hệ thống H-Store như trong hình 1.1 Kiến trúc hệ thống H-Store 1.1 Lược đồ triển khai (System deployment) Lược đồ triển khai có đầu vào là một tập các thủ tục (Stored procedures), lược đồ cơ sở dữ liệu (database schema), tải trọng mẫu (Sample Workload)[9] và thông tin các sites sẵn sàng trong Cluster (Cluster information). Kiến trúc đầu ra là một danh sách các điều khiển triệu gọi duy nhất, được sử dụng như thể hiện của thủ tục ở thời gian chạy. Có thể đưa các thủ tục mới vào trong hệ thống sau khi triển khai. Lược đồ triển khai tạo ra một tập các thủ tục đã biên dịch và lớp cơ sở dữ liệu vật lý được sử dụng để khởi tạo H-store Cluster mới.2 Lược đồ thực thi (Runtime Model) Ở thời gian chạy, ứng dụng client OLTP yêu cầu một giao dịch bằng cách sử dụng trình điều khiển thủ tục được tạo ra trong lược đồ triển khai.
Nếu giao dịch yêu z 13 cầu giá trị tham số như là đầu vào thì Client phải truyền những giá trị này tới hệ thống cùng với yêu cầu. Một phân vùng bất kỳ trong H-Store cluster đều có thể thực thi bất cứ yêu cầu OLTP nào mà không cần quan tâm liệu dữ liệu cần thiết có được lưu trữ trên phân vùng này hay không. Trừ khi tất cả các giá trị tham số của truy vấn trong giao dịch đã được biết ở thời gian chạy, chúng ta sử dụng chiến lược giải thuật lười (lazy-planning strategy) để tạo giải thuật thực thi phân tán tối ưu. Nếu tất cả các giá trị tham số được biết ngay từ đầu, thì chúng ta thực thi thêm các tối ưu hóa dựa vào các thuộc tính của giao dịch.
Khi một giao dịch thực thi câu lệnh SQL, nó tạo ra một yêu cầu nội tại thông qua H-Store API. Ở khâu này, tất cả các giá trị tham số cho truy vấn đã được biết trong hệ thống và do đó giải thuật được định hướng tới các phân vùng chính xác cho mỗi thao tác con truy vấn. Kế hoạch cập nhật được truyền tới bộ quản lý giao dịch và nó có trách nhiệm phối hợp truy cập với các phân vùng khác. Bộ quản lý truyền những phân mảnh của giải thuật tới các phân vùng phù hợp thông qua Socket và kết quả trung gian sẽ được truyền ngược lại tới phân vùng khởi tạo.
H-Store sử dụng kiến trúc giao dịch phân tán để đảm bảo tính tuần tự. Kết quả cuối cùng của truy vấn được truyền ngược lại cho tiến trình giao dịch đang chờ và tiến trình này sẽ hủy bỏ giao dịch, thực thi thêm nhiều truy vấn hoặc commit giao dịch và trả lại kết quả cho ứng dụng client.3 Lớp giao dịch (Transaction Classes) Giao dịch đơn điểm (Single-sited Transactions): một giao dịch được gọi là đơn điểm nếu tất cả các truy vấn chứa trong nó được thực thi tính toán trên một phân vùng của cluster. Mặc dù giao dịch gửi tới hai hoặc nhiều phân vùng để thực thi (do dữ liệu nhân bản), nhưng nó không yêu cầu kết quả trung gian từ bất cứ điểm nào. Lớp giao dịch này là lớp mong muốn nhất và nó không cần sử dụng thông tin undo logs, cơ chế điều khiển phân tranh hoặc truyền thông với các phân vùng khác.
Khi H- Store nhận một yêu cầu giao dịch đơn điểm, phân vùng nhận yêu cầu sẽ truyền điều khiển thực thi cùng với giải thuật đã biên dịch tới phân vùng phù hợp. Phân vùng này bắt đầu xử lý giao dịch và thực thi truy vấn. Giao dịch một lần (One-shot Transactions): một giao dịch được gọi là một lần nếu nó không thể thực thi ở đơn điểm, nhưng mỗi truy vấn con riêng biệt của nó được thực thi chỉ ở đơn điểm. Không giống như giao dịch đơn điểm, chúng ta giả sử đầu ra của các truy vấn không dùng làm đầu vào cho các truy vấn con trong cùng giao dịch.
H-store thực hiện công nghệ tối ưu đơn giản nếu giao dịch được khai báo là one-shot: Yêu cầu được chuyển đến phân vùng phù hợp nhất và ở đó giao dịch được đối sử theo cách thực hiện của giao dịch đơn điểm.4 Tổ chức dữ liệu vật lý Có hai mục tiêu xung đột nhau trong bất kỳ thiết kế cơ sở dữ liệu H-Store nào : Khả năng thực thi giao dịch càng nhanh càng tốt và cần thiết để duy trì sự sẵn sàng z 14 của hệ thống. Để đạt được điều đó, một giao dịch được thực thi càng ở ít phân vùng càng tốt. Và do đó tối thiểu hóa bản tin truyền giữa các phân vùng trong bộ quản lý giao dịch. Các chiến lược hiển nhiên bao gồm tần suất nhân bản hoặc các bảng chỉ đọc (read-only) trên tất cả các phân vùng và sự sắp đặt các bảng được kết nối với nhau trên cùng phân vùng.
Nhiều thiết kế phức tạp có thể phân vùng theo chiều ngang và các vùng dữ liệu liên quan được sắp đặt cùng với nhau. Vấn đề chọn lược đồ phân lớp nào để các chính sách, thủ tục tối ưu được thực hiện tốt nhất. H-Store lưu dữ liệu trên RAM, nên hệ số K-safety được thiết kế cho khả năng sẵn sàng lỗi. Nếu K quá nhỏ thì khi chỉ cần một số lượng nhỏ các node bị lỗi sẽ dẫn tới toàn bộ hệ thống không thể hoạt động.