TÓM LƯỢC ---o0o--- Mặc dù các cơ sở dữ liệu quan hệ truyền thống vẫn được sử dụng trong một phạm vi lớn các ứng dụng, gần đây chúng tôi đã chứng kiến sự bùng nổ về số lượng các cơ sở dữ
Trang 3Đại học Khoa học Tự nhiên TP Hồ Chí Minh, đặc biệt là các Thầy/cô Khoa Công Nghệ Thông tin và phòng Sau Đại học đã tạo điều kiện cho tôi được học môn “Cơ Sở Dữ Liệu Nâng Cao” và tôi cũng xin chân thành cảm ơn Cô TS Nguyễn Trần Minh Thư đã tận tâm truyền đạt những kiến thức quý báu về cơ sở dữ liệu nâng cao
Trong quá trình học tập, cũng như là trong quá trình làm bài đồ án, khó tránh khỏi sai sót, rất mong Thầy/cô bỏ qua Đồng thời do trình độ lý luận cũng như kinh nghiệm thực tiễn còn hạn chế nên bài đồ án không thể tránh khỏi những thiếu sót, tôi rất mong nhận được ý kiến đóng góp Thầy/cô để tôi học thêm được nhiều kinh nghiệm và sẽ hoàn thành tốt hơn các bài đồ án sắp tới
Trang 4MỤC LỤC
-o0o -
TÓM LƯỢC 1
CHƯƠNG 1 GIỚI THIỆU 2
CHƯƠNG 2 LỊCH SỬ NGẮN GỌN CỦA DBMS VÀ ĐỘNG LỰC CỦA NEWSQL 3 CHƯƠNG 3 PHÂN LOẠI 6
3.1 Định nghĩa 6
3.2 New Architectures 8
3.3 Transparent Sharding Middleware 10
3.4 Database as a Service 11
CHƯƠNG 4 TÍNH NĂNG CỦA NEWSQL 13
4.1 Khả năng truy vấn 14
4.2 Kiểm soát đồng thời 16
4.3 Bản sao 17
4.4 Phân vùng 19
4.5 Tính nhất quán 22
4.6 Lưu trữ bộ nhớ chính 23
4.7 Phục hồi lỗi 25
CHƯƠNG 5 KẾT LUẬN 29
TÀI LIỆU THAM KHẢO 31
Trang 5TÓM LƯỢC -o0o -
Mặc dù các cơ sở dữ liệu quan hệ truyền thống vẫn được sử dụng trong một phạm
vi lớn các ứng dụng, gần đây chúng tôi đã chứng kiến sự bùng nổ về số lượng các cơ sở
dữ liệu mới được phát triển đặc biệt cho việc phục vụ dữ liệu lớn Hiện nay các giải pháp thay thế chính cho RDMBS là cơ sở dữ liệu NoSQL và NewSQL
Trọng tâm chính của bài đồ án này khảo sát, so sánh và đánh giá một số cơ sở dữ liệu NewSQL Các cơ sở dữ liệu NoSQL được tạo ra như một phương tiện để cung cấp tính sẳn sàng cao với giá phải trả là mất đặc điểm ACID cuả cơ sỡ dữ liệu quan hệ Để giải quyết vấn để này chúng tôi khảo sát và đánh giá NewSQL là hệ thống quản lý nhằm cung cấp hiệu năng có thể mở rộng của NoSQL của các hệ thống xử lý giao dịch trực tuyến OLTP trong khi vẫn duy trì đặc điểm ACID
Trang 6CHƯƠNG 1 GIỚI THIỆU
Trong thập kỷ qua, chúng ta đã chứng kiến một sự gia tăng nhanh chóng trong một
số loại khác nhau cơ sở dữ liệu Nó liên quan đến sự phát triển của Internet, thiết bị di động và điện toán đám mây Tất cả các môi trường này áp đặt các yêu cầu mới cho việc lưu trữ có hiệu quả và xử lý dữ liệu
Để đối phó với những thách thức này, một số công ty duy trì các trung tâm dữ liệu trong đó có các cụm với hàng ngàn máy móc thiết bị Các cơ sở dữ liệu quan hệ cũ không cung cấp một giải pháp tốt trong tình huống này, do đến mô hình dữ liệu được chuẩn hóa
và hỗ trợ đầy đủ ACID Ngoài ra nó chỉ ra rằng cách tiếp cận phổ biến "một kích thước phù hợp với tất cả" không còn giá trị cho kịch bản ứng dụng hiện tại Ngược lại, trong thực tế mới là thích hợp nhiều hơn để thiết kế các hệ thống dựa trên tính chất của các ứng dụng và dữ liệu Do đó, nhiều giải pháp cơ sở dữ liệu thay thế đã được thiết kế đặc biệt để đáp ứng các nhu cầu đa dạng Thuật ngữ NewSQL lần đầu tiên được sử dụng bởi một tác giả trong một bài báo cáo phân tích kinh doanh năm 2011 thảo luận về sự nổi lên của các hệ thống cơ sở dữ liệu mới như những thách thức các nhà cung cấp (Oracle, IBM, Microsoft) Một câu hỏi đặt ra là liệu NewSQL là thật sự tốt hay không? Hay chỉ
là quảng cáo tiếp thị cho những dự án mà các công ty đang nghiên cứu về nó Trong khi
đó cơ sở dữ liệu quan hệ (RDBMS) đã tồn tại hơn 4 thập kỉ và hiện đang còn rất nhiều công ty đang sử dụng nó NewSQL có đem lại lợi ích hay chỉ là phần cứng nâng cao rất nhiều lần mà bây giờ các tắc nghẽn từ những năm trước không còn vấn đề Để làm điều này, trước tiên chúng ta thảo luận về lịch sử của RDBMS để hiểu hệ thống NewSQL đã xuất hiện như thế nào Sau đó tôi cung cấp một giải thích chi tiết về thuật ngữ NewSQL
là gì và các loại hệ thống khác nhau nằm ở định nghĩa này
Trang 7CHƯƠNG 2 LỊCH SỬ NGẮN GỌN CỦA DBMS VÀ ĐỘNG LỰC CỦA
Cuối năm 1980 và đầu năm 1990 đã tạo ra một DBMS mới được thiết kế để vượt qua sự không phù hợp giữa mô hình quan hệ hướng đối tượng và các ngôn ngữ lập trình Tuy nhiên, những DBMS này không nhìn thấy sự chấp nhận rộng rãi của thị trường vì thiếu một giao diện chuẩn như SQL Nhưng nhiều ý tưởng từ họ cuối cùng đã được kết hợp trong các DBMS quan hệ khi các nhà cung cấp chính thêm đối tượng và XML hỗ trợ một thập niên sau đó, và một lần nữa trong tài liệu theo định hướng NoSQL trong hơn hai thập kỷ sau đó
Sự kiện nổi bật khác trong năm 1990 là sự khởi đầu của hai dự án DBMS mã nguồn mở MySQL bắt đầu ở Thụy Điển vào năm 1995 dựa trên hệ thống mSQL dựa trên ISAM
Trang 8trước đó PostgreSQL bắt đầu vào năm 1994 khi hai sinh viên tốt nghiệp của Berkeley
đã gỡ bỏ mã Postgres gốc dựa trên QUEL từ những năm 1980 để hỗ trợ SQL
Từ năm 2000 sự xuất hiện các ứng dụng internet có nhiều yêu cầu về nguồn tài nguyên hơn các ứng dụng từ những năm trước Họ cần quy mô lớn để hỗ trợ số lượng lớn người dùng đồng thời và thời gian thực Những cơ sở dữ liệu cho các ứng dụng mới này luôn luôn tồn tại nút thắt cổ chai bởi vì nhu cầu về tài nguyên lớn hơn nhiều so với những gì DBMS và phần cứng có thể hỗ trợ vào thời điểm đó Nhiều người đã cố gắng mở rộng DBMS theo chiều dọc bằng cách di chuyển cơ sở dữ liệu đến một máy mới với phần cứng tốt hơn Điều này chỉ cải thiện hiệu suất rất nhiều và có giảm dần lợi nhuận Hơn nữa, di chuyển cơ sở dữ liệu từ máy này sang máy khác là một quá trình phức tạp và thường đòi hỏi thời gian chết đáng kể không thể chấp nhận cho các ứng dụng trên nền Web Vượt qua vấn đề này, một số công ty tạo ra tùy chỉnh middleware để shader single-node DBMSs trong một nhóm các máy tính ít tốn kém hơn Các middleware này trình bày một cơ sở dữ liệu hợp lý duy nhất để ứng dụng được lưu trữ trên nhiều nodes vật lý Khi ứng dụng phát các câu truy vấn đối với cơ sỡ dữ liệu này, middleware sẽ chuyển hướng hoặc viết lại để phân phối thực hiện trên một hoặc nhiều nodes trong cluster Các node thực hiện các câu truy vấn này và sẽ gửi kết quả trở lại cho middleware, sau đó kết hợp chúng tại thành một kết quả hoàn chỉnh duy nhất cho ứng dụng Hai ứng dụng nổi bật của cách tiếp cận middleware này là cụm dựa trên Oracle của eBay và cluster dựa trên MySQL của Microsoft Cách tiếp cận này sau đó đã được Facebook chấp nhận cho cụm MySQL của họ mà vẫn được sử dụng ngày nay
Sharding middleware hoạt động tốt cho các hoạt động đơn giản như đọc hoặc cập nhật một bản ghi Tuy nhiên, nó sẽ khó khăn hơn khi phải thực hiện các truy vấn cập nhật nhiều bản ghi trong một phiên giao dịch hoặc kết nối nhiều bảng Như vậy, những hệ thống middleware này không hỗ trợ các hoạt động này Ví dụ, middleware của eBay vào năm 2002 đã yêu cầu các nhà phát triển của họ thực hiện tất cả các hoạt động liên kết
Trang 9trong mã các ứng dụng Cuối cùng, một số công ty đã chuyển từ sử dụng middleware và phát triển các DBMS của họ Có 3 động lực cho việc này: Đầu tiên là các hệ thống RDBMS vào thời điểm đó tập trung vào tính nhất quán và hiệu suất Nhưng phiên bản này được đánh giá là không phù hợp với các ứng dụng dựa trên Web cần hỗ trợ số lượng lớn và các hoạt động đồng thời Thứ hai, người ta cho rằng có quá nhiều chi phí trong việc sử dụng một DBMS đầy đủ MySQL như một kho dữ liệu “dumb” Tương tự, người cũng ta cho rằng mô hình quan hệ không phải là cách tốt nhất để đại diện cho một dữ liệu của ứng dụng và sử dụng SQL là quá mức cần thiết cho các truy vấn tìm kiếm đơn giản Những vấn đề này hóa ra là nguồn gốc của sự thúc đẩy cho phong trào NoSQL vào giữa đến cuối năm 2000 Khía cạnh quan trọng của các hệ thống NoSQL này là họ bỏ qua đảm bảo giao dịch mạnh mẽ và mô hình quan hệ của các DBMS truyền thống để tạo
ra sự nhất quán cuối cùng và các mô hình dữ liệu thay thế (ví dụ: key/value, graphs, documents) Bởi vì người ta tin rằng những khía cạnh này của các DBMS hiện có khả năng mở rộng và đạt được sự sẵn sàng cao cần thiết để hỗ trợ các ứng dụng dựa trên Web Hai hệ thống nổi tiếng nhất theo sau tin tưởng này là BigTable của Google và Dynamo của Amazon Cả hai hệ thống này đều có sẵn bên ngoài công ty của họ lúc đầu (mặc dù bây giờ là dịch vụ cloud), do đó các tổ chức khác tạo ra nguồn mở riêng của họ nhân bản của chúng Chúng bao gồm Facebook's Cassandra (dựa trên BigTable và Dynamo) và Hbase của PowerSet (dựa trên BigTable) Những doanh nghiệp mới thành lập đã tạo ra các hệ thống riêng của họ không nhất thiết phải là bản sao của hệ thống của Google hoặc Amazon nhưng vẫn theo nguyên lý của NoSQL; nhiều nhất nổi tiếng trong
số này là MongoDB Vào cuối những năm 2000, giờ đây đã có một bộ DBMS phân phối
có thể mở rộng và có thể mở rộng Lợi thế của việc sử dụng một hệ thống NoSQL (hay những người nghĩ) là các nhà phát triển có thể tập trung vào các khía cạnh của ứng dụng
có lợi cho kinh doanh hoặc tổ chức hơn là phải lo lắng về việc làm thế nào để mở rộng
hệ thống DBMS Tuy nhiên, nhiều ứng dụng không thể sử dụng các hệ thống NoSQL bởi vì họ không thể từ bỏ các yêu cầu giao dịch về tính nhất quán mạnh mẽ Điều này
Trang 10phổ biến đối với các hệ thống doanh nghiệp xử lý dữ liệu cao cấp (ví dụ: hệ thống xử lý đơn hàng và tài chính) Một số tổ chức, đặc biệt là Google, đã phát hiện ra rằng các DBMS của NoSQL khiến cho các nhà phát triển mất quá nhiều thời gian để viết mã để
xử lý dữ liệu không nhất quán và sử dụng các giao dịch làm cho chúng hiệu quả hơn Vì vậy, các lựa chọn duy nhất có sẵn cho các tổ chức này là mua một máy đơn node mạnh hơn và để mở rộng quy mô DBMS theo chiều dọc, hoặc để phát triển middleware tùy chỉnh riêng của họ để hỗ trợ giao dịch Cả hai cách tiếp cận đều tốn kém và do đó không phải là lựa chọn cho nhiều người Đó là trong môi trường và động lực để phát triển một
hệ thống cơ sở dữ liệu NewSQL
CHƯƠNG 3 PHÂN LOẠI 3.1 Định nghĩa
Thuật ngữ NewSQL có nhiều định nghĩa nhưng phổ biến nhất có 3 định nghĩa sau:
Matt Asslet – 451 Group (April 4th, 2011)
NewSQL là các hệ thống cung cấp khả năng mở rộng và tính linh hoạt của NoSQL trong khi vẫn giữ được hỗ trợ cho các truy vấn SQL và ACID hoặc để cải thiện hiệu suất cho khối lượng công việc thích hợp
Michael stonebraker – blog@cacm (june 16th, 2011)
Một định nghĩa hẹp hơn cho việc triển khai hệ thống của NewSQL:
• Sử dụng lock-free kiểm soát truy cập đồng thời của lược đồ
• Sử dụng shared-nothing kiến trúc phân tán
• Hỗ trợ truy vấn SQL
• Hỗ trợ ACID cho các giao dịch
• Hiệu năng cao cho mỗi node
• Khả năng mở rộng cao
Trang 11 Wikipedia article
NewSQL là một hệ thống quản lý cơ sở dữ liệu quan hệ hiện đại nhằm cung cấp hiệu năng khả thi tương tự như các hệ thống NoSQL để xử lý giao dịch trực tuyến (OLTP) trong khi vẫn đảm bảo duy trì ACID của một hệ thống cơ sở dữ liệu truyền thống
Từ những định nghĩa trên ta có thể rút ra một nhận xét chung, các hệ thống này muốn đạt được khả năng mở rộng của NoSQL nhưng vẫn giữ được mô hình quan hệ và hỗ trợ giao dịch các DBMS kế thừa từ những năm 1970-1980 Điều này cho phép các ứng dụng thực hiện một số lượng lớn các giao dịch đồng thời để nhập thông tin mới và sửa đổi trạng thái của cơ sở dữ liệu bằng cách sử dụng SQL Nếu một ứng dụng sử dụng cơ sở
dữ liệu NewSQL thì các lập trình viên phát triển ứng dụng không cần phải viết các bản cập nhật tính nhất quán như họ đã làm với NoSQL Các ứng dụng được nhắm mục tiêu bởi các DBMS của NewSQL được mô tả như là thực hiện các giao dịch đọc-ghi rằng là short-lived, chạm vào một tập con nhỏ của dữ liệu bằng cách sử dụng các tra cứu chỉ mục và lặp đi lặp lại (tức là, thực hiện các truy vấn tương tự với các đầu vào khác nhau) Tất cả các DBMS mà tôi phân loại là NewSQL trong phần tiếp theo thực sự chia sẻ các thuộc tính này
Với định nghĩa trên, bây giờ ta kiểm tra bối cảnh của các cơ sở dữ liệu NewSQL ngày nay Để đơn giản hóa phân tích này, tôi sẽ dựa trên các khía cạnh nổi bật của chúng Ba loại mà tôi coi rằng là đại diện tốt nhất cho các hệ thống NewSQL Một là các hệ thống mới được xây dựng từ nền tảng sử dụng một kiến trúc mới (New Architectures) Hai là middleware thực hiện lại cơ sở hạ tầng sharding tương tự đã được google phát triển trong những năm 2000 (Transparent Sharding Middleware) và dịch vụ cơ sở dữ liệu (Database
as a serive) từ các nhà cung cấp điện toán đám mây cũng dựa trên nền tảng kiến trúc mới Các ví dụ phổ biến nhất trong số này là thay thế công cụ lưu trữ InnoDB mặc định của MySQL (ví dụ: TokuDB, ScaleDB, Akiban, deepSQL) Lợi ích của việc sử dụng công cụ mới là tổ chức có thể đạt được hiệu suất tốt hơn mà không thể thay đổi bất kỳ
Trang 12điều gì trong ứng dụng của họ mà vẫn tận dụng được môi trường của DBMS (ví dụ: tools, APIs) Chúng tôi thừa nhận rằng những lợi ích từ việc chuyển đổi từ công cụ InnoDB định hướng lưu trữ dạng hàng sang lưu trữ dạng cột cho khối lượng công việc OLAP là đáng kể hơn (ví dụ: Infobright, InfiniDB)
3.2 New Architectures
Trong phần này chứa các hệ thống DBMS thú vị nhất vì chúng là các DBMS được xây dựng từ đầu Tức là thay vì mở rộng của một hệ thống hiện có (ví dụ như Hekaton của Microsoft cho SQL Server), chúng được thiết kế từ một mã mới mà không có bất kỳ hệ thống kế thừa nào Tất cả các DBMS trong phần này dựa trên kiến trúc phân tán hoạt động trên các tài nguyên chia sẽ sharding-nothing và chứa các thành phần hổ trợ kiểm soát đồng thời nhiều nodes, khả năng chịu lỗi, điều khiển luồng và xử lý truy vấn phân tán Ưu điểm của việc sử dụng một DBMS mới được xây dựng để thực hiện phân phối
là tất cả các bộ phận của hệ thống có thể được tối ưu hóa cho môi trường đa node Điều này bao gồm những thứ như trình tối ưu hóa truy vấn và giao thức truyền thông giữa các node Ví dụ: hầu hết các DBMS của NewSQL đều có thể gửi dữ liệu truy vấn nội bộ trực tiếp giữa các node chứ không phải định tuyến chúng tới vị trí trung tâm như với một hệ thống trung gian Các DBMS trong loại này đều quản lý bộ nhớ chính của nó có thể trên đĩa hoặc trong bộ nhớ Điều này có nghĩa là DBMS chịu trách nhiệm phân phối cơ sở dữ liệu trên các tài nguyên của nó bằng một công cụ tùy chỉnh thay vì dựa vào hệ thống tệp phân phối để lưu trữ (ví dụ: HDFS) hoặc tổ chức lưu trữ (ví dụ: Apache Ignite) Đây là một khía cạnh quan trọng của chúng vì nó cho phép DBMS "gửi truy vấn tới dữ liệu" chứ không phải là "đưa dữ liệu vào truy vấn", dẫn đến lưu lượng truy cập mạng ít hơn đáng kể kể từ khi truyền truy vấn thường ít lưu lượng truy cập mạng hơn là có để truyền
dữ liệu Quản lý lưu trữ riêng của họ cũng cho phép một DBMS sử dụng các chương trình sao chép tinh vi hơn những gì có thể với lược đồ nhân rộng dựa trên khối được sử dụng trong HDFS Nói chung, nó cho phép những DBMS này đạt được hiệu năng tốt hơn so với các hệ thống khác được xếp lớp trên các công nghệ hiện có khác; ví dụ này
Trang 13bao gồm các hệ thống "SQL on Hadoop" như Trafodion và Splice Machine cung cấp các giao dịch trên đầu trang của Hbase Do đó, tôi tin rằng các hệ thống như vậy không nên được coi là NewSQL Nhưng có những nhược điểm để sử dụng một DBMS dựa trên một kiến trúc mới Quan trọng nhất là nhiều tổ chức đang thận trọng áp dụng các công nghệ quá mới và không được kiểm tra với một cơ sở lắp đặt lớn Điều này có nghĩa là số người
có kinh nghiệm trong hệ thống nhỏ hơn nhiều so với tổ chức sẽ có thể mất quyền truy cập vào các công cụ báo cáo và quản lý hiện hành Một số DBMS, như Clustrix và MemSQL, tránh vấn đề này bằng cách duy trì khả năng tương thích với giao thức MySQL
Ví dụ một vài hệ thống cơ sở dữ liệu NewSQL trong loại này:
• VoltDB - một RDBMS mới được thiết kế cho hiệu suất cao (mỗi node) cũng như khả năng mở rộng VoltDB là một hệ thống mã nguồn mở (giấy phép AGPL v3.0) được viết bằng Java và C + +
• NuoDB - một cơ sở dữ liệu phân tán tương thích SQL Nó được định nghĩa như
là "client / cơ sở dữ liệu quan hệ đám mây" NuoDB là một hệ thống "nguồn đóng" Nó là có sẵn trong thị trường dịch vụ Web Amazon (AWS) như một dịch
vụ, như một thiết bị và như là một phần mềm độc lập
• ClustrixDB là một cơ sở dữ liệu SQL được xây dựng cho các ứng dụng quy mô lớn và phát triển nhanh, đây là cơ sở dữ liệu NewSQL mở rộng cho đám mây ClustrixDB duy nhất cho phép phân tích thời gian thực trên dữ liệu hoạt động trực tiếp của bạn với các xử lý song song
• MemSQL là một nền phân tích thời gian thực giúp các công ty truy vấn dữ liệu lớn một cách nhanh chóng và thích ứng với các điều kiện kinh doanh thay đổi
• CockroachDB, Google Spanner, H-Store, HyPer,…
Trang 143.3 Transparent Sharding Middleware
Hiện nay có các sản phẩm cung cấp cùng loại sharding middleware mà eBay, Google hay Facebook và các công ty khác phát triển trong năm 2000 Chúng cho phép một tổ chức chia tách một cơ sở dữ liệu thành nhiều mảnh được lưu trữ trong một nhóm các DBMS Sharding khác với công nghệ liên kết cơ sở dữ liệu của những năm 1990 Vì mỗi node chạy cùng một DBMS, chỉ có một phần của cơ sở dữ liệu tổng thể và không được truy cập và cập nhật một cách độc lập bởi các ứng dụng riêng biệt Thành phần middleware tập trung các truy vấn, điều phối các giao dịch, cũng như quản lý việc sắp xếp dữ liệu, sao chép và phân vùng trên các node Có một lớp thêm vào được cài đặt trên mỗi node DBMS liên lạc với middleware Thành phần này có trách nhiệm thực hiện các truy vấn thay mặt cho middleware tại các node cục bộ của nó và trả về kết quả Ưu điểm chính của việc sử dụng một middleware sharing chúng thường là một sự thay thế cho một ứng dụng đang sử dụng một DBMS Các nhà phát triển không cần phải thực hiện bất kỳ thay đổi nào đối với ứng dụng của họ để sử dụng cơ sở dữ liệu single-node DBMS Mặc dù middleware làm cho một tổ chức dễ dàng mở rộng cơ sở dữ liệu của họ trên nhiều node, các hệ thống như vậy vẫn phải sử dụng một DBMS truyền thống trên mỗi node (ví dụ như MySQL, Postgres, Oracle)
Ví dụ một vài hệ thống trong loại này:
• ScaleArc – là hệ thống nằm giữa các ứng dụng và cơ sở dữ liệu, đơn giản hóa quá trình kích hoạt các hoạt động bởi vì nó định hướng lưu lượng truy cập vào các cụm cơ sở dữ liệu phân tán thay cho các ứng dụng, không thay đổi code, đảm bảo tính sẳn sàng cho các ứng dụng
• ScaleBase có thể là một phần quan trọng đối với các dữ liệu có hiệu suất cao, đàn hồi và ứng dụng nhiều quá trình trong public cloud ScaleBase có nhiều cải tiến
về cơ sở dữ liệu MySQL đã được chứng minh và trưởng thành cao và cung cấp
Trang 15các lợi ích cho dữ liệu lớn và nhanh Tính năng mở rộng theo chiều ngang rất cần thiết (scale-out) được kết hợp ngầm trong ScaleBase với kỹ thuật sharding
• AgilData Scalable Cluster cho MySQL là một giải pháp sharding dựa trên agent tạo cho ứng dụng thấy nhiều cơ sở dữ liệu như một cơ sở dữ liệu Đây là sản phẩm phần mềm đầu tiên của ngành công nghiệp cho phép áp dụng cơ sở dữ liệu sharding vào các ứng dụng và cơ sở dữ liệu hiện có ít hoặc không có sự sửa đổi đối với mã ứng dụng hiện có
• MariaDB MaxScale là một proxy cơ sở dữ liệu mở rộng tính khả dụng, khả năng
mở rộng và bảo mật cao của MariaDB Server đồng thời đơn giản hóa việc phát triển ứng dụng bằng cách tách nó ra khỏi hạ tầng cơ sở dữ liệu MariaDB MaxScale được thiết kế với kiến trúc mở rộng để hỗ trợ các trình cắm thêm, mở rộng chức năng của nó ngoài cân bằng tải trong suốt để trở thành ví dụ như một bức tường lửa cơ sở dữ liệu MariaDB MaxScale có thể được cấu hình để chuyển tiếp các yêu cầu về cơ sở dữ liệu và sửa đổi các phản hồi về cơ sở dữ liệu dựa trên các yêu cầu về kinh doanh và kỹ thuật - ví dụ như để che dấu các dữ liệu nhạy cảm hoặc các lần đọc quy mô
3.4 Database as a Service
Các nhà cung cấp điện toán đám mây cung cấp các sản phẩm Database-as-a-service (DBaaS) của NewSQL Với các dịch vụ này, các tổ chức không phải duy trì DBMS trên phần cứng riêng của họ hoặc trên máy ảo cloud-hosted(VM) Thay vào đó, nhà cung cấp DBaaS chịu trách nhiệm duy trì cấu hình vật lý của cơ sở dữ liệu, bao gồm điều chỉnh
hệ thống (ví dụ kích thước vùng đệm), sao chép và sao lưu Khách hàng được cung cấp một URL kết nối tới DBMS, cùng với dashboard hoặc API để điều khiển hệ thống Khách hàng của DbaaS trả tiền theo cách sử dụng tài nguyên mà ứng dụng của họ yêu cầu Trong phần này tôi xét các sản phẩm DBaaS dựa trên kiến trúc mới như NewSQL Ví
dụ đáng chú ý nhất là Aurora của Amazon cho MySQL RDS Tính năng phân biệt của
nó trên InnoDB là nó sử dụng một trình quản lý lưu trữ có cấu trúc để cải tiến song song
Trang 16quá trình I/O Amazon Aurora là một cơ sở dữ liệu quan hệ tương đương MySQL và PostgreSQL được xây dựng cho đám mây, kết hợp hiệu suất và tính sẵn sàng của các cơ
sở dữ liệu thương mại cao cấp với tính đơn giản và hiệu quả về chi phí của các cơ sở dữ liệu mã nguồn mở Ngoài ra còn có các công ty không duy trì trung tâm dữ liệu riêng mà chỉ bán phần mềm DBaaS chạy trên nền tảng public cloud ClearDB cung cấp DBaaS tùy chỉnh có riêng họ có thể được triển khai trên tất cả nền tảng đám mây lớn Loại này còn có tên gọi là SQL engines[2] Nó là động cơ lưu trữ được tối ưu hóa cao cho SQL Các hệ thống này cung cấp giao diện lập trình tương tự như SQL, nhưng có quy mô tốt hơn các công cụ được xây dựng sẵn như InnoDB
Hình 1 ClearDB
Trang 17CHƯƠNG 4 TÍNH NĂNG CỦA NEWSQL
số này nên được xem như là một sự liên tục trong cả hai hướng, với bất kỳ ứng dụng nhất định nào đó ở giữa Các công cụ thương mại chính và triển khai mã nguồn mở của
Trang 18mô hình quan hệ được định vị là các hệ thống "một kích cỡ phù hợp với tất cả"; nghĩa là việc triển khai của chúng được cho là phù hợp với tất cả các vị trí trong hình
Tiếp theo, chúng ta sẽ thảo luận về các tính năng của hệ thống cơ sở dữ liệu NewSQL
để hiểu những gì là mới lạ trong các hệ thống này
4.1 Khả năng truy vấn
Hầu hết các cơ sở dữ liệu NewSQL đều hổ trợ ngôn ngữ SQL như là một trong những tính năng chính của nó Tuy nhiên NuoDB được xem là tương thích với SQL, trong khi VoltDB có nhiều hạn chế Ví dụ: nó không thể sử dụng mệnh đề “having”, các bảng không thể kết nối với chính nó và bảng tham gia phải được phân vùng trên cùng một giá trị Trong bối cảnh khả năng truy vấn, bên cạnh hỗ trợ SQL điều quan trọng là phải phân tích hỗ trợ Rest API và MapReduce
API REST là một API tuân thủ các các nguyên tắc của REST REST là một kiểu kiến
trúc sử dụng các cuộc gọi HTTP đơn giản để liên lạc giữa các máy với nhau Sử dụng REST nghĩa là các cuộc gọi API sẽ dựa trên tin nhắn và dựa vào tiêu chuẩn HTTP
MapReduce là một mô hình lập trình song song cho bộ xử lý bộ dữ liệu lớn được giới
thiệu bởi Google, thường được sử dụng để phân phối máy tính trên các cụm máy tính Trong mô hình MapReduce, người dùng xác định tính toán bằng hai giai đoạn là Map và Reduce:
Giai đoạn Map: Trong giai đoạn map, MapReduce lấy dữ liệu đầu vào và cấp dữ liệu cho mapper
Giai đoạn Reduce: Trong giai đoạn reduce, reduce sẽ xữ lý tất cả các dữ liệu đầu
ra từ mapper và đạt đến kết quả cuối cùng Nói một cách đơn giản, mapper có nghĩa là lọc và biến đổi đầu vào thành cái gì đó mà reduce có thể tổng hợp