Các hệ quản trị cơ sở dữ liệu quan hệ (Relational database management system – DBMSs) là một phần không thể thiếu trong hầu hết các môi trường điện toán ngày nay, và tầm quan trọng của chúng khó có thể suy giảm. Với sự ra đời của điện toán và lưu trữ đám, cơ hội để cung cấp một DBMS như là một dịch vụ bên ngoài đang trên đà đạt được, bằng chứng là RDS của Amazon và SQL Azure của Microsoft. Một DBaaS như vậy thu hút vì hai lý do. Đầu tiên, do sự mở rộng của nền kinh tế, chi phí phần cứng và năng lượng phát sinh bởi người dùng có thể sẽ thấp hơn rất nhiều khi họ trả tiền cho một dịch vụ chia sẻ so với việc tự mình tiến hành mọi thứ. Thứ hai, chi phí phát sinh trong một DBaaS được thiết kế tốt sẽ tỷ lệ thuận với việc sử dụng thực tế
55
(“pay-per-use”) – điều này áp dụng cho cả chi phí bản quyền và điều hành phần mềm. Lý do thứ hai thường có phí tổn đáng kể vì các yêu cầu chuyên môn hóa để trích xuất hiệu quả cao từ các DBaaS phục vụ người dùng. Bằng cách tập trung và tự động hóa nhiều tác vụ quản lý cơ sở dữ liệu, một DBaaS có thể làm giảm đáng kể chi phí hoạt động và thực hiện tốt hơn.
Từ quan điểm của nhà điều hành một DBaaS, bằng cách tận dụng sự thiếu tương quan giữa khối lượng công việc (workloads) của các ứng dụng khác nhau, dịch vụ có thể chạy sử dụng các máy ít hơn là khi từng khối lượng công việc được cung cấp một cách độc lập.
Dưới đây là những thách thức và yêu cầu của một DBaaS quy mô lớn, đa nút (multi-node), các nguyên tắc thiết kế và tình hình thực hiện của Relational Cloud, một DBaaS đang được xây dựng tại MIT (http://relationalcloud.com). Relational Cloud phù hợp với một tổ chức đơn lẻ với nhiều cơ sở dữ liệu cá nhân được triển khai trên một đám mây riêng, hoặc như một dịch vụ được cung cấp thông qua cơ sở hạ tầng đám mây công cộng cho nhiều tổ chức. Trong cả hai trương hợp, người dùng cần phải có quyền truy cập tới tất cả những tính năng của một hệ quản trị cơ sở dữ liệu quan hệ, mà không lo lắng về nguồn tài nguyên phần cứng, cấu hình phần mềm, đạt được an ninh mong muốn, cung cấp kiểm soát truy cập và bảo mật dữ liệu, và điều chỉnh hiệu năng. Tất cả những chức năng này được khoán ngoài (outsourced) cho DBaaS
Có ba thách thức trong việc thiết kế Relational Cloud: đa kênh thuê hiệu quả để tối giản yêu cầu về phần cứng cho một công việc (workload) đã cho, mở rộng đàn hồi để xử lý những khối lượng công việc ngày càng tăng, và sự riêng tư của cơ sở dữ liệu.
Efficient multi-tenancy – đa kênh thuê hiệu quả. Với một tập hợp các
khối lượng công việc và cơ sở dữ liệu đã cho, cách tốt nhất để phục vụ chúng từ một tập các máy đã cho là gì? Mục đích là tối giản số lượng máy cần thiết, trong khi vẫn đạt được mục tiêu hiệu suất truy vấn mức ứng dụng. Để đạt được điều này, hệ thống của chúng ta phải hiểu các yêu cầu nguồn tài nguyên của từng khối lượng công việc, cách chúng kết hợp khi cùng được bố trí trên một máy, và cách tận dụng lợi thế của các biến đổi thời gian của từng workload để tối đa hóa việc sử dụng phần cứng.
56
Một cách tiếp cận tới vấn đề này sẽ là sử dụng các máy ảo (VMs); một thiết kế điển hình sẽ đóng gói từng DB có nhân vào một VM và nhiều VM trên một máy vật lý. Tuy nhiên, các thử nghiệm cho thấy rằng một cách tiếp cận “DB-in-VM” cần 2x tới 3x máy nữa để củng cố cùng một số lượng workload và đối với một mức độ cố định của sự củng cố (consolidation) phân phối 6x tới 12x hiệu suất ít hơn các tiếp cận chúng tôi tán thành.
Lý do là mỗi VM chưa một bản sao riêng của hệ điều hành và cơ sở dữ liệu, và từng cơ sở dữ liệu có vùng đệm của riêng mình, buộc log của riêng nó vào đĩa, vv. Thay vào đó, cách tiếp cận sử dụng một máy chủ cơ sở dữ liệu duy nhất trên mỗi máy, nơi lưu trữ nhiều cơ sở dữ liệu logic. Relational Cloud xác định định kỳ các cơ sở dữ liệu nào nên được thay thế trên các máy nào sử dụng một công thức tối ưu hóa phi tuyến tính mới, được kết hợp với một mô hình chi phí mà ước tính việc sử dụng nguồn tài nguyên kết hợp của nhiều cơ sở dữ liệu đang chạy trên một máy. Việc thiết kế Relational Cloud cũng bao gồm một cơ chế để thực hiện chuyển đổi trực tiếp của các cơ sở dữ liệu giữa các máy.
Elastic scalability – khả năng mở rộng đàn hồi. Một DBaaS tốt phải hỗ
trợ các cơ sở dữ liệu và workload với các kích cỡ khác nhau. Thách thức nảy sinh khi khối lượng công việc cơ sở dữ liệu vượt quá khả năng của một máy tính. Một DBaaS do đó phải hỗ trợ mở rộng quy mô (scale-out), nơi chịu trách nhiệm cho việc xử lý truy vấn (và các dữ liệu tương ứng) được phân vùng (partitioned) giữa nhiều nút để đạt được thông lượng (throughput) cao hơn.
Nhưng cách nào là tốt nhất để phân vùng các cơ sở dữ liệu cho mở rộng quy mô? Câu trả lời phụ thuộc vào cách thức mà các giao dịch (transactions) và các mục dữ liệu liên quan đến nhau. Trong Relational Cloud, một thành phần phân vùng khối lượng công việc (workload-aware partitioner) phát triển gần đây được sử dụng, trong đó sử dụng phân vùng biểu đồ để tự động phân tích các workload truy vấn phức tạp và ánh xạ các mục dữ liệu tới các nút để giảm thiểu số lượng của các transactions/statements đa nút. Các statement và transaction trên nhiều nút phải chịu chi phí đáng kể, và là yếu tố hạn chế chính tới khả năng mở rộng tuyến tính trong thực tế. Cách tiếp cận ở đây tạo ra vài giả định trên dữ liệu hoặc các truy vấn, và làm việc tốt kể cả với các
57
workload bì sai lệch hoặc khi dữ liệu thể hiện các mỗi quan hệ nhiều-tới- nhiều phức tạp.
Privacy – sự riêng tư. Một rào cản đáng kể để triển khai các cơ sở dữ liệu
trên đám mây là thiếu nhận thức về bảo mật, do đó làm giảm mức độ sẵn sàng tin tưởng của người dùng đặt vào trong hệ thống. Nếu khách hàng đã mã hóa tất cả dữ liệu được lưu trữ trong DBaaS, thì các mối quan tâm về riêng tư sẽ chủ yếu được loại bỏ. Câu hỏi đặt ra sau đó là, làm cách nào đẻ DBaaS thực thi các truy vấn trên dữ liệu mã hóa? Trong Relational Cloud, được tích hợp CryptDB, một tập các kỹ thuật được thiết kế để cung cấp sự riêng tư ( ví dụ, để ngăn người quản trị xem dữ liệu của người dùng). Những người quản trị cơ sở dữ liệu có thể tiếp tục quản lý và điều chỉnh các cơ sở dữ liệu, và người dùng được đảm bảo dữ liệu riêng tư. Khái niệm quan trọng là an ninh có thể
điều chỉnh được: CryptDB sử dụng các mức mã hóa khác nhau cho các loại
dữ liệu khác nhau, dựa trên loại của truy vấn m người dùng chạy. Các truy vấn được tính toán trên dữ liệu mã hóa, và gửi lại cho client kể giải mã cuối cùng, không xử lý truy vấn nào chạy trên client.
Một chủ đề thống nhất trong cách tiếp cận này tới ba thách thức lớn là
workload-awareness. Nguyên tắc thiết kế chính là giám sát các mô hình truy
vấn và truy cập dữ liệu thực tế, và rồi dùng các cơ chế mà sử dụng những quan sát này để thực hiện nhiều chức năng tối ưu và bảo mật khác nhau.