Thứ Ba, 16 tháng 11, 2010

Cơ sở dữ liệu quan hệ sẽ chết?

Một thể nghiệm của NoSQL với Nik Search.

Trên dưới 30 năm qua, cơ sở dữ liệu quan hệ đã đóng góp rất lớn vào thành công của nghành phần mềm. Mô hình lưu trữ data dạng bảng ràng buộc bằng các cặp khóa chính-phụ nhằm đảm bảo tính toàn vẹn dường như đã quá hoàn hảo. SQL – một scripting gần gũi, đơn giản, linh hoạt,… cộng với độ trưởng thành, phức tạp của dòng phần mềm lưu trữ dữ liệu quan hệ như Oracle, MySQL, MS SQL Server, PostGreSQL,… khiến RDBMs gần như độc tôn trong các mô hình lưu trữ dữ liệu. Nhưng…

3 nhận xét:

  1. Thách thức mới

    Mọi thứ đều có thời của nó. Dịch chuyển 2.0 trên Web đã đặt ra những thách thức lớn cho lưu trữ dữ liệu. Thời kỳ số hóa dữ liệu lên Internet – Web 1.0 định hình cho người dùng thói quen sử dụng Web. Thời kỳ 2.0 lôi kéo người dùng tham gia tạo nội dung trên Internet. Các mạng dịch vụ cộng đồng, xã hội ra đời như kết nối cá nhân (social network), blog, ảnh, phim, tìm kiếm, … gầy dựng một cuộc cách mạng chưa từng có trong thế giới Web. Hàng trăm triệu người dùng, hàng petabytes dữ liệu text, image, media,… cần phải xử lý hàng ngày. Khi đó, RDBMs đã bộc lộ những yếu kém nhất định về tốc độ thực thi, khả năng lưu trữ, các nghiệp vụ phức tạp (phân trang, đánh chỉ mục,…). Thách thức lớn nhất đến từ Web.

    Song song đó, sự phát triển của ngành công nghệ đã nảy sinh những chuẩn mới, nền tảng mới liên tục ra đời kéo theo các mô hình dữ liệu được thiết kế có tính thù hơn cho từng lĩnh vực cụ thể. JSR 170 (Content Repository API for Java) là một ví dụ, chuẩn thiết kế dành riêng cho nội dung khiến các cài đặt trở nên khó xử trong việc lựa chọn một mô hình lữu trữ trích hợp. Các operation như write/read content có tính đặc thù cao trên API không giống với cái cách mà SQL đã định hình.

    Mặc khác, mô hình lập trình hướng đối tượng chiếm tới 56% mức độ phổ dụng cũng đòi hỏi những tương tác từ cài đặt (implementation) tới dữ liệu là các tương tác hướng đối tượng. Tức đòi dữ liệu xử lý cũng hướng đối tượng. Giải quyết thách thức trên, người ta đã xây dựng một tầng (layer) ánh xạ dữ liệu từ các bảng trên RDBMs tới object hoặc document. Giải pháp mang tính đối phó này đáp ứng tương đối các đòi hỏi căn bản. Một số framework như Hibernate, TopLink, JDO,… là ví dụ điển hình. Tuy nhiên, do phải qua một tầng trung gian nên tốc độ xử lý, nghiệp vụ, chi phí phát triển, bảo trì đã đội lên đáng kể trên phần mềm. Ngoài ra, một số cài đặt cần lưu trữ dữ liệu đơn giản dưới dạng cặp key-value như memory caching, session storage,… Việc ứng dụng cơ sở dữ liệu quan hệ trong trường hợp này sẽ trở nên rối rắm, nặng nề, chậm chạp.

    Trả lờiXóa
  2. Thế hệ lưu trữ dữ liệu kế tiếp đòi hỏi gì?

    Phân tán: Sự gia tăng đột biến về lượng đặt thách thức lớn cho các mô hình lưu trữ. Bài toán phân tán ra đời. Thông thường, RDBMs đã tính toán và triển khai tương đối thành công ở một mức độ nào đó. Nhưng do thiết kế RDBMs (ACID, read write liên tục) nên phân tán trên cơ sở dữ liệu quan hệ có những hạn chế nhất định như tốc độ, bottleneck (nghẽn cổ chai), mở rộng ra hàng trăm nốt (nodes - máy),… Ngoài ra, chi phí phần cứng, bảo trì cho các giải pháp phân tán của RDBMs cũng không hề nhỏ.

    Horizontal Scalable (Khả năng mở rộng ngang): Với RDBMs, việc tăng cường lưu trữ và xử lý chủ yếu bằng việc tăng năng lực phần cứng/phần mềm trên một (hoặc một cụm) máy tính đơn lẻ (scale up). Ngược lại, thế hệ database mới cho phép việc bổ sung một hoặc nhiều máy trên nền phân tán. Thiết kế đòi hỏi không cần shutdown hệ thống, hỗ trợ điều khiển từ xa, xử lý tập lệnh với tối ưu mạnh về I/O performance.

    Weak consistency/eventual consistency (Nhất quán yếu/Nhất quán cuối): Nếu như trong RDBMs, mọi cập nhật có thể ngay lập tức thấy được sự thay đổi của dữ liệu trên toàn hệ thống thì trong thế hệ database mới, không nhất thiết đòi hỏi tức thì sự nhất quán của dữ liệu. Thiết kế phân tán chấp nhận lưu trữ trùng lặp trên nhiều node (commodity machine). Mọi thay đổi sẽ được cập nhật có tính chất lan truyền trên toàn hệ thống. Sau một khoảng thời gian nhất định, dữ liệu sẽ đồng nhất, toàn vẹn – nhất quán cuối xảy ra.

    High Availability/Deployment Flexibility: Về mặt lý thuyết, lượng máy tính tham gia vào lưu trữ là vô hạn. Một node (commodity machine) bị chết cũng không ảnh hưởng tới toàn hệ thống bởi dữ liệu được lưu trữ trùng lặp trên nhiều máy tính khác nhau. Việc bổ sung/loại bỏ các node được thực hiện một cách tự động nhận biết bởi hệ thống phần mềm. Thế hệ database mới không đòi hỏi cao về cấu hình, tính đồng nhất phần cứng.

    Đa dạng hóa các mô hình lưu trữ dữ liệu: Không chỉ tổ chức dữ liệu dưới dạng bảng có ràng buộc, thế hệ database mới hỗ trợ nhiều mô hình dữ liệu như object, document, xml, key-value,… một cách tự nhiên hơn so với việc ánh xạ trên cơ sở dữ liệu quan hệ .

    Vậy.

    Trả lờiXóa
  3. Thế hệ database mới là gì?

    Thế hệ database kế tiếp là một thế hệ cơ sở dữ liệu non-relational (không ràng buộc), distributed (phân tán), open source, horizontal scalable (khả năng mở rộng theo chiều ngang) có thể lưu trữ, xử lý từ một lượng rất nhỏ cho tới hàng petabytes dữ liệu trong hệ thống có độ chịu tải, lỗi cao với những đòi hỏi về tài nguyên phần cứng thấp.

    Người ta gọi thế hệ database mới này là NoSQL, một thuật ngữ định danh từ năm 2009. NoSQL dịch thành Not Only SQL - Không chỉ SQL ám chỉ đến những hệ thống lưu trữ không dùng mô hình dữ liệu quan hệ trong lĩnh vực phần mềm. Có thể kể tên một vài đại diện tiêu biểu như Berkeley DB(Oracle), Hadoop/HBase (Yahoo, Apache), BigTable (Google), Cassandra(Facebook, Apache), Hypertable(Zvents Inc, Baidu), CouchDB, IBM Lotus Notes Storage Format (NSF),...

    Trả lờiXóa

nhudinhthuan@gmail.com