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 1CƠ SỞ DỮ LIỆU QUAN HỆ HIỆN ĐẠI
DỰA TRÊN TÀI LIỆU:
NewSQL: Towards Next-Generation Scalable RDBMS for Online
Transaction Processing (OLTP) for Big Data Management
TP HỒ CHÍ MINH - 2017
Trang 2ĐỒ ÁN MÔN HỌC
CƠ SỞ DỮ LIỆU NÂNG CAO
ĐỀ TÀI:
HỆ THỐNG QUẢN LÝ
CƠ SỞ DỮ LIỆU QUAN HỆ HIỆN ĐẠI
DỰA TRÊN TÀI LIỆU:
NewSQL: Towards Next-Generation Scalable RDBMS for Online
Transaction Processing (OLTP) for Big Data Management
LÊ HỒNG DANH
MSHV: 16C12005
TP HỒ CHÍ MINH - 2017
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 4TÓM LƯỢC 1
CHƯƠNG 1 GIỚI THIỆU 2
CHƯƠNG 2 NỀN TẢNG CỦA CƠ SỞ DỮ LIỆU HIỆN ĐẠI 3
CHƯƠNG 3 TỔNG QUAN VỀ NOSQL VÀ NEWSQL 4
3.1 NoSQL 4
3.1.1 Khái niệm 4
3.1.2 Phân loại 7
3.2 NewSQL 9
3.2.1 Khái niệm 9
3.2.2 Kiến trúc NewSQL 10
3.2.3 Đặc điểm của cơ sở dữ liệu NewSQL 12
3.2.4 Phân loại 13
CHƯƠNG 4 SO SÁNH GIỮA RDBMS, NOSQL VÀ NEWSQL 15
CHƯƠNG 5 KẾT LUẬN 18
TÀI LIỆU THAM KHẢO 20
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 thảo luận về hệ thống quản lý dữ liệu NewSQL,
so sánh với NoSQL và với hệ thống cơ sở dữ liệu truyền thống Bài đồ án này bao gồm kiến trúc, đặc điểm, phân loại cơ sở dữ liệu NewSQL xử lý các giao dịch trực tuyến (OLTP) cho quản lý Big data
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 Nhiều cơ sở dữ liệu mới thuộc về các lớp NoSQL
và NewSQL của DBMS Trong đó, có một khái niệm mới về dữ liệu được nhắc đến khá nhiều trong năm 2014 đó là NewSQL 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ự cho các hệ thống NoSQL
để xử lý giao dịch trực tuyến (OLTP) trong khi vẫn duy trì được sự bảo đảm ACID của một hệ thống cơ sở dữ liệu truyền thống
Trong bài đồ án này được trình bày như sau: chương 1 giới thiệu, chương 2 tìm hiểu
về nền tảng của cơ sở dữ liệu mới Chương 3 giới thiệu tổng quan hệ thống cơ sở dữ liệu NoSQL và NewSQL Chương 4 so sánh RDBMS, NoSQL và NewSQL Và cuối cùng
là chương 5 trình bày kết luận
Trang 7CHƯƠNG 2 NỀN TẢNG CỦA CƠ SỞ DỮ LIỆU HIỆN ĐẠI
“Big Data” là thuật ngữ dùng để chỉ một tập hợp dữ liệu rất lớn và rất phức tạp đến nỗi những công cụ, ứng dụng xử lí dữ liệu truyền thống không thể nào đảm đương được Tuy nhiên, Big Data lại chứa trong mình rất nhiều thông tin quý giá mà nếu trích xuất thành công, nó sẽ giúp rất nhiều cho việc kinh doanh, nghiên cứu khoa học, dự đoán các dịch bệnh sắp phát sinh và thậm chí là cả việc xác định điều kiện giao thông theo thời gian thực Chính vì thế, những dữ liệu này phải được thu thập, tổ chức, lưu trữ, tìm kiếm, chia sẻ theo một cách khác so với bình thường
Một trong những bước tiến quan trọng trong việc giải quyết vấn đề "Big Data" là sự nổi lên của một công nghệ cơ sở dữ liệu thay thế Điều này sẽ mở rộng khác biệt đáng
kể mô hình RDBMS cổ điển và mô hình DBMS thay thế Các kho dữ liệu này có thể không yêu cầu các lược đồ cố định theo các bảng, thường là tránh các hoạt động nối và thường quy mô theo chiều ngang, nơi dữ liệu được lưu trữ theo cách phân tán, nhưng được truy cập và phân tích từ các ứng dụng
Hình 2.1 Cơ sở dữ liệu phân tán
Trang 8OTLP - viết tắt của OnLine Transaction Processing (Xử lý giao dịch trực tuyến) Gần hết các "giao dịch trực tuyến" đều dựa trên cái này Từ việc bạn vào facebook, xem blog, cho tới việc bạn mua hàng trực tuyến hay giao dịch ATM, đều được quy về chung khái niệm OLTP
Trong xử lý các giao dịch trực tuyến (OLTP), đặc trưng của khối lượng công việc là nhỏ nhưng nó đòi hỏi tốc độ phản ứng nhanh, cao về xữ lý đồng thời là yêu cầu đối với
hệ thống OLTP Xu hướng tiếp tục tăng trưởng dữ liệu và lưu lượng truy cập lớn trong các hệ thống OLTP và để đáp ứng một tỷ lệ sẵn sàng rất cao, đáp ứng cao đó là một thế
hệ mới của các giải pháp là cần thiết để phục vụ cho nó Do đó, DBMS phải được tái kiến trúc để đáp ứng nhu cầu này
CHƯƠNG 3 TỔNG QUAN VỀ NOSQL VÀ NEWSQL 3.1 NoSQL
3.1.1 Khái niệm
NoSQL viết tắt của “not only SQL” Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm tên gọi chung cho các lightweight open source relational database (cơ sở dữ liệu quan hệ nguồn mở nhỏ) nhưng không sử dụng SQL cho truy vấn Trái ngược với các giao dịch trong RDBMS phù hợp với ACID
Hình 3.1 Các thuộc tính của ACID, CAP, và BASE và DMS được hỗ trợ
Trang 9ACID là từ viết tắt các chữ cái đầu của bốn từ tiếng Anh atomicity, consistency, isolation,
và durability Chúng được coi là bốn thuộc tính quan trọng của một hệ quản trị cơ sở dữ liệu khi xử lý bất kỳ giao dịch nào Nếu thiếu một trong những thuộc tính này thì tính toàn vẹn của cơ sở dữ liệu khó có thể được đảm bảo Trong một hệ quản trị cơ sở dư liệu, một giao dịch là một đơn vị logic thao tác trên dữ liệu, có thể bao gồm nhiều thao tác Chẳng hạn việc chuyển tiền từ tài khoản này sang tài khoản khác là một giao dịch, bao gồm thao tác trừ tiền một tài khoản và cộng tiền vào tài khoản kia Các tính chất ACID trong trường hợp này sẽ đảm bảo các giao dịch được thực hiện một cách đáng tin cậy:
Tính nguyên tố (Atomicity): một giao dịch có nhiều thao tác khác biệt thì hoặc là toàn bộ các thao tác hoặc là không một thao tác nào được hoàn thành Chẳng hạn việc chuyển tiền có thể thành công hay trục trặc vì nhiều lý do nhưng tính nguyên tố bảo đảm rằng một tài khoản sẽ không bị trừ tiền nếu như tài khoản kia chưa được cộng số tiền tương ứng
Tính nhất quán (Consistency): một giao dịch hoặc là sẽ tạo ra một trạng thái mới và hợp lệ cho dữ liệu, hoặc trong trường hợp có lỗi sẽ chuyển toàn bộ dữ liệu về trạng thái trước khi thực thi giao dịch
Tính độc lập (Isolation): một giao dịch đang thực thi và chưa được xác nhận phải bảo đảm tách biệt khỏi các giao dịch khác
Tính bền vững (Durability): dữ liệu được xác nhận sẽ được hệ thống lưu lại sao cho ngay cả trong trường hợp hỏng hóc hoặc có lỗi hệ thống, dữ liệu vẫn đảm bảo trong trạng thái chuẩn xác
Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL trong một hội thảo về cơ sở dữ liệu nguồn mở phân tán Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ database mới: distributed (phân tán) + non-relational (không ràng buộc) Tuy nhiên, việc mở rộng theo chiều ngang (scale out) của các hệ thống tuân
Trang 10thủ theo ACID đã thể hiện một số vấn đề Những xung đột đang phát sinh giữa các khía cạnh khác nhau của tính sẵn sàng cao trong các hệ thống phân tán mà không thể giải quyết hoàn toàn được, điều này được biết với định lý CAP:
Strong Consistency (tính nhất quán mạnh mẽ): nghĩa là cách mà hệ thống ở trong một trạng thái thống nhất sau khi thực hiện một thao tác Một hệ thống phân tán thường được coi là nhất quán nếu sau khi cập nhật hoạt động của một vài thao tác ghi thì tất cả các thao tác đọc dữ liệu sẽ thấy được dữ liệu đã được cập nhật đó
High Availability (tính sẵn sàng cao): nghĩa là một hệ thống được thiết kế và hiện thực sao cho khi có vấn đề xảy ra với một node trong một cụm (cluster) chẳng hạn như bị hư hỏng hay được tạm ngưng để nâng cấp thì các theo tác đọc ghi dữ liệu vẫn cho phép tiếp tục thực hiện
Partition Tolerance: nghĩa là hệ thống của một cụm bất kỳ vẫn hoạt động bình thường ngay cả khi đường truyền giữa hai node bị ngắt và không liên lạc được
Các CSDL NoSQL đã nới lỏng các yêu cầu về tính nhất quán (consistency) nhằm để tính sẵn sàng (Availability) và phân vùng (Partition) được tốt hơn Điều này dẫn đến hệ thống còn được biết như là BASE:
Basically Available: về cơ bản, hệ thống đảm bảo được tính sẵn sàng ở hầu hết các trường hợp
Soft-state: trạng thái của hệ thống có thể thay đổi theo thời gian dù có đầu vào hay không
Eventually consistent: hệ thống sẽ trở nên nhất quán theo thời gian dù hệ thống có nhận đầu vào trong thời gian đó hay không
Trang 11Hình 3.2 Định lý CAP
Cấu trúc dữ liệu của NoSQL được lưu trữ dưới dạng: key-value stores, document database (or stores), Wide-Column (or Column Family) stores hoặc graph database khác với cách lưu trữ mà các RDBMS đang sử dụng hiện nay Tính chất lưu trữ đơn giản, không ràng buộc vì vậy hiệu suất hoạt động của NoSQL nhanh hơn RDBMS rất nhiều
3.1.2 Phân loại
Ngày nay có hàng trăm cơ sở dữ liệu NoSQL khác nhau, mỗi loại có một thế mạnh và phục vụ cho một mục đích riêng Tuy nhiên dựa vào đặc điểm của mỗi NoSQL mà người
ta chia NoSQL ra làm 4 loại:
Key-value stores: Mô hình lưu trữ dữ liệu dưới dạng cặp giá trị key-value trong
đó việc truy suất, xóa, cập nhật giá trị thực thông qua key tương ứng.Với sự hỗ trợ của các kĩ thuật Btree, B+Tree, Hash,… dữ liệu có thể tồn tại trên RAM hoặc ổ cứng, phân tán hoặc không phân tán Hầu hết cá NoSql Database đều là key-value store
Document database/Srore: với Document NoSQL ta có thể sử dụng các truy vấn
để truy xuất tất cả hay một phần của dữ liệu Một điển hình của cơ sở dữ liệu hướng văn bản là MongoDB Trong MongoDB mỗi cơ sở dữ liệu là tập hợp của các bộ sưu tập (collection) Định dạng các tập tin lưu trữ cơ sở dữ liệu có dạng ns, x (với x = 1, 2, 3,
Trang 124, 5,…) Mỗi bộ sưu tập bao gồm các văn bản (document), các văn bản này có thể khác nhau
Wide-Column (or Column Family) stores: hệ cơ sở dữ liệu cho phép truy xuất
ngẫu nhiên/tức thời với khả năng lưu trước một lượng lớn dữ liệu có cấu trúc Dữ liệu
có thể tồn tại dạng bảng với hàng tỷ bản ghi và mỗi bản ghi có thể chứa hàng triệu cột
Hệ thống triển khai từ vài trăm cho đến hàng nghìn thiết bị dẫn đến khả năng lưu trữ hàng petabytes nhưng vẫn đảm bảo hiệu năng cao
Graph database: bao gồm các nút, các mối quan hệ (Relationships) hay các cạnh
(edges) và các thuộc tính (properties).Một cơ sở dữ liệu hướng đồ thị đơn giản nhất chỉ
có một nút Các nút tương tự như một đối tượng trong lập trình hướng đối tượng Một nút chứa các thuộc tính dưới dạng là văn bản chứa các cặp khóa – giá trị Khóa có kiểu
dữ liệu là String và giá trị có kiểu dữ liệu tùy ý Các cặp giá trị khóa – giá trị chứa thông tin cần thiết của nút chứa nó Các mối quan hệ (hay các cạnh) là các đường kết nối và đại diện cho mối quan hệ giữa các nút hoặc giữa các nút với các thuộc tính Giống như nút, các mối quan hệ hay các cạnh cũng chứa các thuộc tính Việc thêm các thuộc tính vào các mối quan hệ (hay các cạnh) làm tăng tính ngữ nghĩa, giúp bổ sung thêm siêu dữ liệu cho các thuật toán đồ thị và hạn chế truy vấn trong khi thực thi
Một số DBMS NoSQL phổ biến được liệt kê trong bảng 01 dựa trên các loại của chúng
NoSQL Database phổ biến Key-value stores Document
database/Srore
Wide-Column (or Column Family) stores
Graph database
Redis MongoDB DynamoDB (Amazon) Neo4j
Riak ChuchDB Cassandra (Fackbook)
Trang 13BerkeleyDB
(Oracle)
Hypertable
PUNTS (Yahoo)
Bảng 1 Một số DBMS NoSQL phổ biến dựa trên các loại của chúng
Nhìn qua, có rất nhiều đóng góp đã được thực hiện bởi cơ sở dữ liệu NoSQL; vẫn còn có một số nút thắt cổ chai cho các hệ thống quản lý dữ liệu quy mô lớn Hệ thống NoSQL DBMS không hỗ trợ hiệu quả cho các ứng dụng đã được viết cho thế hệ DBMS trước đó Để di chuyển các ứng dụng hiện có để thích ứng với xu hướng mới của sự tăng trưởng của dữ liệu; để phát triển các ứng dụng mới trên các hệ thống OLTP có khả năng
mở rộng cao và dựa vào kiến thức hiện có về việc sử dụng OLTP - một hệ thống quản lý thông tin mới, được gọi là các hệ thống NewSQL Để giải quyết các kịch bản kinh doanh OLTP dữ liệu quy mô lớn mà không có hệ thống OLTP truyền thống hay hệ thống NoSQL, các hệ thống cơ sở dữ liệu thay thế đã phát triển, gọi chung là các hệ thống NewSQL
Đối với môi trường Big Data, hỗ trợ nhiều khách hàng hơn hoặc lưu lượng cao hơn yêu cầu nâng cấp một máy chủ lớn hơn Cho đến gần đây điều này có nghĩa là thực hiện một kiến trúc Scale-out hoặc yêu cầu một mô hình lập trình non-SQL hoặc dựa vào sharding và nhân rộng Không có giải pháp nào cung cấp các ngữ nghĩa ACID hoàn chỉnh Sự căn thẳng này là cảm hứng cho phong trào NewSQL
3.2 NewSQL
3.2.1 Khái niệm
NewSQL là hệ thống quản lý cơ sở dữ liệu quan hệ thế hệ tiếp theo có thể mở rộng (RDBMS) để xử lý giao dịch trực tuyến (OLTP) cung cấp khả năng mở rộng của các hệ thống NoSQL cho khối lượng công việc đọc-ghi, cũng như duy trì sự đảm bảo ACID của một hệ thống cơ sở dữ liệu truyền thống Các hệ thống này vượt qua các giới hạn hiệu suất của RDBMS thông thường bằng cách sử dụng các tính năng theo kiểu NoSQL
Trang 14như lưu trữ dữ liệu theo cột và các kiến trúc phân tán hoặc bằng cách sử dụng các công nghệ như xử lý trong bộ nhớ, xử lý đa hợp đối xứng (SMP) hoặc các tính năng tiến trình
xữ lý song song (MPP) tích hợp các thành phần NoSQL hoặc Search, được thiết kế để
xử lý các khối lượng, đa dạng, tốc độ và thách thức biến đổi của Big Data
Nói cách khác, NewSQL là sự kết hợp giữa NoSQL và SQL, nó thừa hưởng mọi tính năng ưu việt của mỗi hệ quản trị trước đó NewSQL kết hợp các khái niệm và nguyên tắc của của Structured Query Language (SQL) và các ngôn ngữ NoSQL Nó kết hợp độ tin cậy của SQL với tốc độ và hiệu suất của NoSQL NewSQL đang được sử dụng khá nhiều ở các công ty lớn trên thế giới Thuật ngữ NewSQL được gọi lần đầu tiên bởi tổ chức the 451 Group vào năm 2011
co dãn, cho phép các máy mới được đưa vào cơ sở dữ liệu đang chạy và có hiệu lực ngay lập tức Do đó, để áp dụng hiệu năng mở rộng, DBMS đã được xác định lại công nghệ
cơ sở dữ liệu quan hệ và triển khai công nghệ cơ sở dữ liệu phân tán trên nền web để giải quyết nhiều thách thức liên quan đến điện toán đám mây và sự gia tăng của các triển khai ứng dụng toàn cầu