angle-left null Tiến trình phát triển của hệ quản trị cơ sở dữ liệu SQL, noSQL tới NewSQL
Trang chủ

12/10/2020 14:41

(data.gov.vn) Hệ quản trị cơ sở dữ liệu là hệ thống quan trọng cần phải có trong các hệ thống thông tin. Hệ quản trị dữ liệu đóng vai trò quản lý, lưu trữ và duy trì, vận hành dữ liệu. Công nghệ phát triển kéo theo đó các mô hình hệ quản trị dữ liệu cũng biến đổi theo để phù hợp với các yêu cầu thực tế. Hiện nay, Một lớp các hệ thống quản lý cơ sở dữ liệu (DBMS) mới được gọi là NewSQL xuất hiện với khả năng mở rộng khối lượng công việc xử lý giao dịch theo cách mà các hệ thống cũ không thể thực hiện được. Nó là sự tiến hóa trên cơ sở duy trì các ưu điểm của mô hình hệ quản trị cơ sở dữ liêu quan hệ cũ và bổ sung các ưu điểm của hệ quản trị dữ liệu phi quan hệ. Cùng thảo luận về sự thay đổi và xuất hiện mô hình hệ quản trị dữ liệu có tên mới này – NewSQL.

Các Hệ quản trị cơ sở dữ liệu - DBMS đầu tiên được đưa vào hoạt động vào giữa những năm 1960. Một trong những thiết bị đầu tiên là IMS của IBM, được chế tạo để theo dõi lượng hàng tồn kho cung cấp và phụ tùng cho các dự án thám hiểm không gian Saturn V và Apollo. Cơ sở dữ liệu quan hệ được xây dựng với ý tưởng nguồn của một ứng dụng nên tách biệt với dữ liệu mà nó hoạt động. Điều này cho phép các nhà phát triển viết các ứng dụng chỉ tập trung vào việc truy cập và thao tác dữ liệu chứ không phải các hoạt động quản lý dữ liệu phức tạp và chi phí liên quan đến cách thực hiện các thao tác này. IMS sau đó được tiếp nối bởi công trình tiên phong vào đầu những năm 1970 trên các DBMS quan hệ đầu tiên, Hệ thống R của IBM và INGRES của Đại học California. INGRES đã sớm được áp dụng tại các trường đại học khác cho hệ thống thông tin của họ và sau đó đã được thương mại hóa vào cuối những năm 1970. Cùng lúc đó, Oracle đã phát hành phiên bản đầu tiên của DBMS tương tự như thiết kế của System R. Các công ty khác được thành lập vào đầu những năm 1980 đã tìm cách khai thác thành công của các DBMS thương mại đầu tiên, bao gồm Sybase và Informix. Mặc dù IBM chưa bao giờ cung cấp System R cho công chúng, nhưng sau đó IBM đã phát hành một DBMS quan hệ mới DB2 vào năm 1983 sử dụng các phần của cơ sở mã System R.

Cuối những năm 1980 và đầu những năm 1990, DBMS đã được thiết kế một phiên bản mới để khắc phục sự không phù hợp và trở ngại giữa mô hình dữ liệu quan hệ và ngôn ngữ lập trình hướng đối tượng. Tuy nhiên, các DBMS hướng đối tượng này chưa bao giờ được thị trường chấp nhận rộng rãi vì chúng thiếu giao diện chuẩn như SQL. Nhưng nhiều ý tưởng từ chúng cuối cùng đã được kết hợp trong các DBMS quan hệ khi các nhà cung cấp lớn bổ sung hỗ trợ đối tượng và XML một thập kỷ sau, và sau đó một lần nữa trong các hệ thống NoSQL hướng tài liệu xuất hiện sau hai thập kỷ.

Sự kiện đáng chú ý khác trong những năm 1990 là sự khởi đầu của hai dự án DBMS mã nguồn mở lớn ngày nay. MySQL được 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 trước đó. PostgreSQL bắt đầu vào năm 1994 khi hai sinh viên tốt nghiệp ở Berkeley tách mã Postgres dựa trên QUEL gốc từ những năm 1980 để thêm hỗ trợ cho SQL.

 

Những năm 2000 kéo theo sự xuất hiện của các ứng dụng Internet có yêu cầu tài nguyên khó khăn hơn so với các ứng dụng từ những năm trước đó. Họ cần mở rộng quy mô để hỗ trợ số lượng lớn người dùng đồng thời và luôn phải duy trì chế độ trực tuyến. Nhưng cơ sở dữ liệu cho các ứng dụng mới này liên tục bị tắc nghẽn, quá tải vì nhu cầu 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 đã thử lựa chọn rõ ràng nhất là mở rộng DBMS của họ theo chiều dọc bằng cách chuyển cơ sở dữ liệu sang một máy có phần cứng tốt hơn. Tuy nhiên, điều này cải thiện hiệu suất nhưng giá thành triển khai hệ thống tăng cao dẫn đến hiệu quả về kinh tế giảm dần. Hơn nữa, việc 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 gián đoạn đáng kể. Điều này không thể chấp nhận được đối với các ứng dụng và Website này.

Để khắc phục sự cố này, phần mềm trung gian được sử dụng để chia nhỏ các DBMS từ một nút thành một nhóm trên các máy ít tốn kém hơn. Phần mềm trung gian như vậy thiết lập một cơ sở dữ liệu logic duy nhất cho ứng dụng được lưu trữ trên nhiều nút vật lý. Khi ứng dụng yêu cầu các truy vấn đối với cơ sở dữ liệu, phần mềm trung gian sẽ chuyển hướng để phân phối việc thực thi của chúng trên một hoặc nhiều nút trong cụm. Các nút thực hiện các truy vấn này và gửi kết quả trở lại phần mềm trung gian, sau đó kết hợp chúng thành một phản hồi duy nhất cho ứng dụng. Cách tiếp cận này sau đó đã được Facebook áp dụng cho cụm MySQL của riêng họ mà vẫn được sử dụng cho đến ngày nay.

Phần mềm trung gian 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, sẽ khó hơn khi thực hiện các truy vấn cập nhật nhiều bản ghi trong một giao dịch hoặc tham gia các bảng. Do đó, các hệ thống phần mềm trung gian ban đầu không hỗ trợ các loại hoạt động này. Ví dụ, phần mềm trung gian 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 trong mã cấp ứng dụng.

Cuối cùng, một số công ty này đã không sử dụng phần mềm trung gian và phát triển các DBMS phân tán của riêng họ. Điều quan trọng nhất là các DBMS truyền thống vào thời điểm đó tập trung vào tính nhất quán và tính đúng đắn với chi phí sẵn có và hiệu suất. Nhưng sự đánh đổi này được cho là không phù hợp với các ứng dụng dựa trên Web luôn luôn phải trực tuyến và phải hỗ trợ một số lượng lớn 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 đủ tính năng như MySQL như một kho lưu trữ dữ liệu. Tương tự như vậy, người ta cũng cho rằng mô hình quan hệ không phải là cách tốt nhất để biểu diễn dữ liệu của một ứng dụng và việc sử dụng SQL là một sự quá mức cần thiết cho các truy vấn tra cứu đơn giản.

Những vấn đề này là nguồn gốc của sự phát triển NoSQL được thực hiện vào giữa đến cuối những năm 2000. Khía cạnh quan trọng của các hệ thống NoSQL này là chúng không hỗ trợ sự đảm bảo giao dịch và mô hình quan hệ của các DBMS truyền thống nhưng hỗ trợ tính nhất quán cuối cùng và các mô hình dữ liệu thay thế (như mô hình dữ liệu theo hướng: khóa/giá trị, đồ thị, tài liệu). Điều này là do người ta tin rằng các khía cạnh này của các DBMS hiện tại hạn chế khả năng mở rộng quy mô và đạt được tính 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 đầu tiên tuân theo tín điều này là BigTable của Googlevà Dynamo của Amazon. Lúc đầu, cả hai hệ thống này đều được sử dụng nội bộ và không cung cấp ra bên ngoài nhưng hiện nay, dịch vụ này được cung cấp dưới dạng dịch vụ đám mây. Tương tự, các tổ chức khác đã tạo ra các bản sao mã nguồn mở của riêng họ. Một số hệ thống có thể kể đến bao gồm Cassandra của Facebook (dựa trên BigTable và Dynamo) và Hbase của PowerSet (dựa trên BigTable). Các công ty khởi nghiệp khác cũng đã tạo ra các hệ thống của riêng mình không nhất thiết phải là bản sao của các hệ thống của Google hoặc Amazon nhưng vẫn tuân theo các nguyên lý của triết lý NoSQL; nổi tiếng nhất trong số này là MongoDB.

Vào cuối những năm 2000 đã có một tập hợp đa dạng các DBMS phân tán có thể mở rộng và giá cả hợp lý hơn. Lợi thế của việc sử dụng hệ thống NoSQL 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 hơn cho doanh nghiệp hoặc tổ chức của họ, thay vì phải lo lắng về cách mở rộng quy mô DBMS. Tuy nhiên, nhiều ứng dụng không thể sử dụng các hệ thống NoSQL này vì các hệ thống thông tin cần các yêu cầu chặt chẽ về giao dịch và tính nhất quán. Điều này phổ biến đối với các hệ thống doanh nghiệp xử lý về quản lý dữ liệu giao dịch đòi hỏi tính chính xác (ví dụ: hệ thống xử lý tài chính và đơn đặt hàng). Một số tổ chức, đáng chú như Google nhận thấy các DBMS NoSQL khiến các nhà phát triển của họ mất quá nhiều thời gian để viết mã để xử lý dữ liệu không nhất quán và việc sử dụng các giao dịch làm cho chúng hiệu quả hơn vì chúng cung cấp một sự trừu tượng hữu ích mà con người dễ dàng suy luận hơn. Do đó, các tùy chọn duy nhất có sẵn cho các tổ chức này là mua một máy đơn nút mạnh hơn và mở rộng DBMS theo chiều dọc, hoặc phát triển phần mềm trung gian tùy chỉnh của riêng họ hỗ trợ các giao dịch. Cả hai phương pháp đều rất tốn kém và do đó không phải là một lựa chọn cho nhiều người. Chính trong môi trường này đã tạo ra các hệ thống NewSQL để phát triển phần mềm trung gian tùy chỉnh của riêng mình đẻ hỗ trợ các giao dịch. Cả hai phương pháp đều rất tốn kém và do đó không phải là một lựa chọn cho nhiều người. Chính trong môi trường này đã tạo ra các hệ thống NewSQL để phát triển phần mềm trung gian tùy chỉnh của riêng họ hỗ trợ các giao dịch

NewSQL là một thế hệ DBMS mới trong đó tập trung vào việc tìm cách nâng cao hiệu suất có thể mở rộng của NoSQL cho khối lượng công việc đọc-ghi giao dịch OLTP trong khi vẫn duy trì đảm bảo ACID (tính đơn nhất, nhất quán, độc lập và độ chịu rủi ro) cho các giao dịch. Nói cách khác, các hệ thống này muốn đạt được cùng khả năng mở rộng của các DBMS NoSQL từ những năm 2000, nhưng vẫn giữ mô hình quan hệ (với SQL) và hỗ trợ giao dịch của các DBMS kế thừa từ những năm 1970–80. Đ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 để cập nhập thông tin mới và sửa đổi dữ liệu trong cơ sở dữ liệu bằng cách sử dụng các câu lệnh SQL. Nếu một ứng dụng sử dụng NewSQL DBMS, thì các nhà phát triển không phải viết mã nguồn mức cao hơn để xử lý các bản cập nhật như phải làm trong hệ thống NoSQL.

Cũng lưu ý thêm rằng, có một công nghệ DBMS kho dữ liệu ra đời vào giữa những năm 2000 cũng có thể có đặc tính tương tự. Các DBMS này nhắm mục tiêu khối lượng công việc xử lý phân tích trực tuyến (OLAP) nhưng sẽ không coi là hệ thống NewSQL. Các DBMS OLAP tập trung vào việc thực hiện các truy vấn phức tạp chỉ đọc (tức là tổng hợp, thống kê theo nhiều chiều) mất nhiều thời gian để xử lý các tập dữ liệu lớn(từ vài giây cho đến hàng phút, hàng giờ). Đối với NewSQL thì mỗi truy vấn có thể khác nhau lớn. Mặt khác, các ứng dụng được nhắm mục tiêu bởi NewSQL DBMS có đặc điểm là thực hiện các giao dịch đọc-ghi có đặc điểm: (i) tồn tại trong thời gian ngắn; (ii) thao tác trên một tập hợp dữ liệu nhỏ bằng cách sử dụng tra cứu chỉ mục và (iii) là lặp lại (tức là, thực hiện các truy vấn giống nhau với các đầu vào khác nhau). Một định nghĩa khác hẹp hơn trong đó việc triển khai hệ thống NewSQL phải sử dụng (i) một sơ đồ điều khiển đồng thời không có khóa và (ii) một kiến ​​trúc phân tán không dùng chung.

Tài liệu tham khảo:

  • AgilData Scalable Cluster MySQL.
  • http://www.agildata.com/.
  • http://altibase.com
  • https://aws.amazon.com/rds/aurora.
  • http://trafodion.apache.org.
  • ClearDB. https://www.cleardb.com.
  • Clustrix. http://www.clustrix.com.
  • https://www.cockroachlabs.com/.
  • http://hstore.cs.brown.edu.
  • http://hyper-db.de.
  • MariaDB MaxScale. https://mariadb.com/products/mariadb-maxscale.
  • MemSQL. http://www.memsql.com.
  • MySQL. https://www.mysql.com/products/ enterprise / Fabric.html.
  • MySQL Proxy http://dev.mysql.com/doc/mysql-proxy/en/.
  • NuoDB. http://www.nuodb.com. [15] ScaleArc. http://scalearc.com.
  • http://www.splicemachine.com.
  • VoltDB. http://www.voltdb.com.
  • M. Aslett. MySQL vs NoSQL, NewSQL:


Tin xem nhiều

placeholder image

Các câu hỏi để kiểm tra mức độ an toàn khi chia sẻ dữ liệu