So sánh các phương pháp tiếp cận cơ sở dữ liệu XML

Sự giống và khác nhau giữa cơ sở dữ liệu XML nguyên gốc và pureXML là gì?

Nhu cầu sử dụng XML ngày càng tăng đòi hỏi các hệ thống mà lưu trữ dữ liệu bán cấu trúc mà không cần phải ép nó vào các cấu trúc dữ liệu không phù hợp. Các yêu cầu này đều được đáp ứng bởi cả cơ sở dữ liệu XML nguyên gốc và cơ sở dữ liệu quan hệ hỗ trợ XML. Câu hỏi đặt ra là: Tại sao bạn thích một cơ sở dữ liệu XML nguyên gốc hơn một cơ sở dữ liệu cổ điển với hỗ trợ XML hoặc các cách khác? Bài viết này so sánh các phương pháp tiếp cận cho một số các giải pháp khác nhau, bao gồm eXist, Mark Logic, và IBM® DB2® Express-C. Sự khác biệt của các kiểu cơ sở dữ liệu được so sánh giữa những thuận lợi và khó khăn của chúng.

Adriaan de Jonge, Kỹ sư phần mềm, 自由职业者

Adriaan de Jonge là chuyên gia phát triển phần mềm hiện đang làm việc cho chính phủ Hà Lan, xử lý một vài dự án với các vai trò khác nhau. Adriaan đã viết các bài viết liên quan đến XML cho developerWorks của IBM và Amazon



17 07 2009

Trong những năm đầu tiên của cơ sở dữ liệu XML, sự khác biệt giữa cái được gọi là cơ sở dữ liệu XML nguyên gốc (native XML database-NXD) và các hệ thống quản lý cơ sở dữ liệu quan hệ có hỗ trợ XML (relational database management systems - RDBMS) là rất lớn. Các NXD được tối ưu hóa để lưu trữ các tài liệu XML. Các bản RDBMS cũ chỉ thêm một số gia vị vào các đối tượng nhị phân lớn (binary large object - BLOB) để chứa XML.

Các thuật ngữ hay dùng

  • API: Giao diện lập trình ứng dụng
  • HTTP: Giao thức truyền siêu văn bản
  • IT: Công nghệ thông tin
  • XML: Ngôn ngữ đánh dấu mở rộng

Ngày nay, các NXD vẫn là NXD nhưng được cải tiến rất nhiều. Cùng thời điểm, các nhà cung cấp RDBMS đã có thời gian đuổi kịp khi chúng có thể lưu trữ các tài liệu XML. Các phần XML không còn được lưu trữ trong các BLOBs. Thay vì như vậy, chúng được lưu trữ trong các cấu trúc cây (tree-like structure), được tối ưu hóa để chứa các tài liệu có cấu trúc cây, bản chất tự nhiên của một tài liệu XML chuẩn.

Trong thời gian giữa các cài đặt ban đầu và các giải pháp ngày nay, một số sự phát triển nền tảng đã được thêm vào sự chuẩn hóa của các ngôn ngữ truy vấn trên các tài liệu XML — đáng chú ý nhất, XQuery 1.0, với hỗ trợ cho Ngôn ngữ Đường dẫn XML (XML Path Language - XPath) 2.0. Khái niệm của XQuery được phát triển trong nhiều năm; kết quả cuối cùng có sự tương đồng với các phiên bản trước đó nhưng hoàn thiện hơn. Giống như Ngôn ngữ Truy vấn Có cấu trúc (Structured Query Language - SQL), XQuery đẩy mạnh sự độc lập của nhà cung cấp và tái sử dụng.

Tại sao bạn cần cơ sở dữ liệu XML?

Các cơ sở dữ liệu thường có thể lưu trữ cả tài liệu không cấu trúc và có cấu trúc. Cả hai đều yêu cầu các cấu trúc dữ liệu mà không thường xuyên thay đổi. Tuy nhiên, điểm yếu của các cơ sở dữ liệu quan hệ là việc lưu trữ các tài liệu bán cấu trúc. Không như các dữ liệu có cấu trúc, các tài liệu bán cấu trúc này có thể có rất nhiều bậc tự do trong trật tự của các thành phần trong tài liệu và cách những thành phần đó được lồng vào nhau. Không như các tài liệu không có cấu trúc, các thành phần riêng lẻ có thể được phân loại bằng cách sử dụng các nhãn mô tả.

Bạn có thể lưu trữ dữ liệu bán cấu trúc trong các cấu trúc quan hệ không? Tất nhiên là bạn có thể, nhưng bạn có thế kết thúc bằng một cấu trúc dữ liệu cụ thể mà thường xuyên thay đối, một cấu trúc dữ liệu tổng quát hóa mà làm mất mô tả của các nhãn hoặc một mô hình trừu tượng như là những thứ mà các hệ thống quản lý nội dung sử dụng, trộn dữ liệu với những thứ mà đáng ra là siêu dữ liệu (metadata).

Mặt khác, định dạng XML phù hợp với việc mô tả dữ liệu bán cấu trúc. Thêm nữa, bạn có thể duy trì mô hình dữ liệu một cách dễ dàng. Thêm các tên của thành phần không làm thay đổi cấu trúc dữ liệu — nó luôn giữ cấu trúc cây. Nó chỉ liên quan đến một sự thay đổi trong lược đồ XML mô tả cách thức mà các tên của phần tử được sử dụng và liên kết bên trong cấu trúc cây.

Với các tài liệu như là các hồ sơ xin việc, các mô tả sản phẩm, và các đơn hàng của khách hàng, XML có lẽ là định dạng phù hợp. Đồng thời, XML có khả năng mô tả cả dữ liệu có cấu trúc và dữ liệu không có cấu trúc.


Thế thì, bạn có cần các cơ sở dữ liệu quan hệ nữa không?

Khi bạn tạo một giải pháp phần mềm mới, câu trả lời có thể là "Không!". Nếu bạn có một giải pháp mà cho phép bạn lưu trữ dữ liệu bán cấu trúc, bạn cũng có thể sử dụng nó để lưu trữ dữ liệu có cấu trúc và không có cấu trúc. Việc có tất cả dữ liệu của bạn trong một giải pháp lưu trữ đơn lẻ với khả năng tương kết và tạo ra các truy vấn mà bao trùm mọi thứ trong một lần thì dễ hơn rất nhiều so với dữ liệu tích hợp từ nhiều nguồn lưu trữ khác nhau.

Tốt hơn, nếu trả lời "không" với câu hỏi này, bạn nên để phần lớn dữ liệu của mình ở dạng kiểu tài liệu bán cấu trúc. Tuy nhiên, nếu đa phần dữ liệu của bạn phù hợp với mô hình quan hệ có cấu trúc chặt chẽ và ít giống với kiểu tài liệu và quện chặt với nhau, thì việc chọn một NXD có lẽ không giúp ích gì cho trường hợp của bạn.

Vậy thì làm thế nào để xác định bản chất dữ liệu của bạn? Và bạn sẽ phải làm gì nếu khối lượng dữ liệu có cấu trúc, bán cấu trúc và không cấu trúc là tương đương? Trong trường hợp bất định như vậy, tin tốt lành là các cơ sở dữ liệu cổ điển là lựa chọn phù hợp để chứa các tài liệu XML hoặc các phân mảnh của các tài liệu XML vào thời điểm hiện tại. Các cách thức để truy cập những phân mảnh XML này có lẽ khác nhau giữa các cơ sở dữ liệu. Một điều mà các bản cài đặt của các cơ sở dữ liệu cùng có là chúng sử dụng bản XQuery 1.0.


Các giải pháp

Một số sản phẩm trên thị trường cài đặt một cơ sở dữ liệu XML một chiều hoặc một cơ sở dữ liệu khác, bao gồm Xindice, Tamino, X-Hive, Oracle, và Microsoft® SQL Server. Tuy nhiên, tôi sẽ không khung làm việc luận về những sản phẩm này trong bài viết này. Một bản so sánh sản phẩm dài và đầy đủ là không khả thi, và nó có thể không đáng tin khi mà bài viết này được công bố trên trang của một nhà cung cấp một giải pháp cơ sở dữ liệu XML. Các tác giả độc lập cũng không giải quyết hoàn toàn các câu hỏi một cách khách quan.

Những gì tôi có thể làm là thảo luận về IBM DB2 Express-C với các tính năng pureXML và so sánh nó với các tiếp cận của các NXD cổ điển. Với so sánh này, tôi đã chọn một dự án mã mở tên là eXist-DB. Cả eXist-DB và DB2 Express-C đều miễn phí và cung cấp rất nhiều chức năng thân thiện với người dùng.

Nếu bạn muốn lưu trữ lượng dữ liệu cực lớn, tôi khuyên bạn mua một phiên bản thương mại của DB2. Đầu tiên, DB2 có lẽ nghe như là một cái gì đó rất nặng nề, nhưng bạn có thể cài đặt DB2 Express-C trên một máy để bàn hoặc máy xách tay để thử nghiệm khả năng pureXML dễ dàng. Mặc dù không có phiên bản thương mại của eXist, Mark Logic là lựa chọn thay thế xứng đáng cho eXist khi mà các yêu cầu hiệu suất và tính mở rộng vượt quá khả năng của eXist. Bạn có thể dùng thử Mark Logic bằng cách sử dụng giấy phép dùng thử 30 ngày hoặc một phiên bản cộng đồng mà bị giới hạn lưu trữ ở mức 100MB.

Tôi có thể tưởng tượng thấy nhu cầu về so sánh sản phẩm giữa các sản phẩm tương tự như là DB2 và Orcale. Bạn có thể tìm thấy một số tranh luận trước đây trên mạng về hai sản phẩm này. Một thảo luận cơ bản hơn là so sánh các tính năng của pureXML trong DB2 Express-C và trong eXist-DB. Hoặc, một cách tương tự, so sánh DB2 với Mark Logic.


Cơ sở dữ liệu XML nguyên gốc

Giống như hầu hết các tên phân loại sản phẩm, thuật ngữ cơ sở dữ liệu XML nguyên gốc gây hiểu nhầm đôi chút. Nó làm cho bạn thắc mắc kiểu như: Cơ sở dữ liệu là gì? XML nguyên gốc là gì? DB2 có phải là NXD không?

Theo Wikipedia, "một cơ sở dữ liệu máy tính là một tập hợp có cấu trúc các bản ghi hoặc dữ liệu được lưu trữ trong một hệ thống máy tính." XML nguyên gốc là cách dùng của các công nghệ liên quan đến XML mà không pha tạp với các công nghệ phi XML. Tức là khả năng sử dụng XQuery và XPath không có một chút SQL nào. IBM dự đoán trước câu hỏi có phải DB2 là XML nguyên gốc không bằng cách gọi các đặc tính của nó là pureXML. Tôi sẽ quay trở lại định nghĩa đó trong phần sau.

Khi so sánh các NXD với RDBMS có hỗ trợ XML, tôi nghĩ rằng một NXD điển hình cũng có thể được phân loại như là một kho chứa tài liệu. Thuật ngữ kho chứa tài liệu được sử dụng bởi các sản phẩm như Alfresco và Magnolia. Các sản phẩm này được xếp lớp trên cả các cơ sở dữ liệu hiện có, và chúng thiếu cơ sở hạ tầng được cung cấp bởi eXist và Mark Logic — đáng chú ý nhất là khả năng chạy các XQuery một cách có hiệu quả. Chúng tập trung vào các chức năng bậc cao như là luồng làm việc (workflow) và giao diện người dùng thân thiện. Các NXD dành những thứ đó cho các người dùng các sản phẩm của mình. Chúng chỉ cung cấp các hàm API chứa tài liệu bậc thấp, như là Web-based Distributed Authoring and Versioning (WebDAV) hoặc các kết nối RESTful tùy biến.

Như vậy một NXD điển hình lưu trữ các tài liệu XML một cách hiệu quả. Nó cung cấp công nghệ XQuery và một lớp mỏng các chức năng kho dữ liệu.

Các NXD dường như nhắm tới tài nguyên theo định hướng, nghĩa là các mẩu nội dung riêng được lưu trữ trong kho chứa có thể được xác định bằng cách sử dụng các định danh tài nguyên đồng bộ (Uniform Resource Identifier - URI). Sử dụng HTTP hoặc WebDAV, các URI tương tự cho phép truy cập tới dữ liệu cái mà làm cho tính kết nối trở thành không vấn đề.

Coi dữ liệu như là các tài nguyên đơn lẻ cũng có các yếu điểm của nó. Sự chia tách tài liệu làm cho việc tạo quan hệ giữa các dữ liệu mà bị chia nhỏ khắp các đa liệu trở nên khó khăn. Nếu một tài liệu chứa các dữ liệu độc quyền mà các tài liệu khác tham chiếu đến, thì việc duy trì tính tích hợp tham chiếu càng khó khăn hơn. Các nhà sản xuất cơ sở dữ liệu XML lớn cung cấp các lựa chọn để đặt các ràng buộc trên các dữ liệu trong các đa tài liệu. Tuy nhiên, điều này chưa được tiêu chuẩn hóa như các công nghệ XML khác.


pureXML

IBM lựa chọn để tránh thuật ngữ cơ sở dữ liệu XML nguyên gốc (native) nhưng vẫn muốn truyền tải bản chất nguyên gốc của XML của giải pháp của họ. DB2 Express-C là một điển hình cho NXD, nhưng nó lại chia sẻ một số đặc tính. Từ một góc độ, DB2 dường như giống một RDBMS với các cột XML. Nếu bạn muốn sử dụng các tính năng, đừng nhầm lẫn sự tinh vi của các cột XML với sự thiếu khả năng XML.

Tên pureXML được chính thống hóa theo hai cách:

  • Dữ liệu XML được lưu trữ trong định dạng cây nguyên bản, tách biệt khỏi dữ liệu quan hệ.
  • Bạn được phép truy cập tất cả dữ liệu — cả quan hệ và XML — thông qua một giao diện XML đơn nhất.

XQuery 1.0 không bị giới hạn bởi việc truy vấn các tài liệu XML. IBM cung cấp các hàm XQuery mà cho phép bạn truy vấn dữ liệu quan hệ và trộn và đối sánh các kết quả với XML từ các cột XML. Kết của của dữ liệu kết hợp có thể được trả lại trong định dạng XML.

DB2 là nền tảng cơ sở dữ liệu nguyên bản. Nó không cung cấp một lớp mỏng các chức năng chứa tài liệu mà rất nhiều NXD khác cung cấp. Điều đó không có nghĩa là bạn không thể sử dụng DB2 để thực hiện chứa tài liệu — cho dù mỏng hay dày. Hiện nay, hầu hết các kho chứa tài liệu như là Alfresco được cài đặt trên các RDBMS không hỗ trợ XML hơn là các NXD. Sử dụng DB2 như là cơ sở cho những kho chứa này ít nhất cũng cho kết quả tương tự, nhưng, hơn thế nữa, với lợi ích được thêm vào của các mô hình dữ liệu mềm dẻo hơn sử dụng khả năng lưu trữ XML.

Nó có thể là thời điểm trước khi các sản phẩm như là Alfresco có được các tính năng chẳng hạn như là pureXML. Lý do là những sản phẩm đó không muốn bị trói buộc vào một sản phẩm cơ sở dữ liệu riêng biệt nào. Bất chấp XQuery 1.0, cách mà ngôn ngữ XQuery được sử dụng trong các sản phẩm cơ sở dữ liệu vẫn thiếu sự tiêu chuẩn hóa. Với những sản phẩm này, cách an toàn là chờ đợi các khả năng mới của các cơ sở dữ liệu XML, chờ đợi ứng dụng đồng nhất hơn của XQuery và các giao thức kết nối, và bây giờ, tự giới hạn bản thân chúng đến các tiêu chuẩn với các cài đặt đồng nhất giống như WebDAV hoặc các bộ kết nối cơ sở dữ liệu quan hệ.


Bạn có thể sử dụng các khả năng của DB2 ở đâu?

Câu trả lời tương đối đơn giản. Đa số các giải pháp IT trên thế giới đã nghiên cứu chi tiết các cơ sở dữ liệu quan hệ. Thậm chí khi các cơ sở dữ liệu quan hệ thiếu tính mềm dẻo được yêu cầu cho một giải pháp, chúng vẫn phát triển hơn và phù hợp hơn cho các nhu cầu lớn so với các thay thế khác.

Các công ty muốn triển khai bước tiếp theo và áp dụng các công nghệ XML không muốn bỏ đi các kết quả đã được phát triển trong nhiều năm và thay thế chúng với một NXD. Và, mặc dù họ có lẽ sử dụng NXD thêm vào cơ sở dữ liệu quan hệ của họ, điều này có thể tạo ra các thách thức mới trong việc tích hợp các dữ liệu bị chia nhỏ khắp các đa nguồn. Hãy nghĩ đến tính toàn vẹn tham chiếu và quản lý giao tác. Mặc dù là không thể giải quyết được, nhưng một giải pháp tích hợp đơn lẻ mà quan tâm đến những điều này vẫn có nhiều ưu điểm.

Sự kết hợp của dữ liệu quan hệ và dữ liệu XML trong pureXML giúp cung cấp sự chuyển vị suôn sẻ, hoặc gần như thế, sự chuyển vị từng phần sang công nghệ XML.


Kết luận

Mặc dù các tài liệu XML có thể mô tả dữ liệu có cấu trúc, một NXD chứa nhiều tài liệu XML có lẽ không phải là giải pháp tối ưu để mô tả các quan hệ giữa dữ liệu có cấu trúc bị chia nhỏ thành nhiều tài liệu và duy trì tính toàn vẹn tham chiếu. Nếu nó đã có thể quản lý những mới quan hệ đó (có lẽ sử dụng XPointer), thì việc sử dụng vẫn chưa được chuẩn hóa.

Lời khuyên tốt nhất là sử dụng đúng công cụ cho đúng công việc. Tuy nhiên, sự song hành của một NXD với một RDBMS tạo ra thách thức cho bảo toàn dữ liệu. Các đặc tính của pureXML của DB2 kết hợp những cái tốt nhất của hai bên và cho phép lưu trữ cả dữ liệu có cấu trúc và dữ liệu bán cấu trúc. Đối với lưu trữ dữ liệu không có cấu trúc, cả NXD và RDBMS đều thích hợp.

Nếu bạn thực sự tìm kiếm một kho chứa tài liệu hơn là một cơ sở dữ liệu, bạn nên hỏi một câu hỏi khác. Các yêu cầu của bạn tập trung vào khả năng mặt trước (front-end) của kho chứa tài liệu hay chúng tập trung vào mặt sau (back-end)? Nếu bạn muốn nhiều chức năng cho người dùng cuối như là một giao diện quản trị, dòng làm việc, và trực quan hóa, thì rất nhiều sản phẩm trên thị trường, như là Alfresco, cung cấp kiểu hỗ trợ này. Nếu bạn quan tâm đến các cơ chế truy vấn mạnh mẽ, như là XQuery và tìm kiếm văn bản đầy đủ, và lưu trữ hiệu quả các tài liệu bán cấu trúc, thì các NXD như là eXist hoặc Mark Logic có lẽ là lựa chọn của bạn.

Thế giới của các giải pháp cơ sở dữ liệu bị chi phối bởi một số ít các nhà cung cấp lớn. IBM là một trong số đó. Các NXD vẫn là một thị trường nhỏ. Các câu hỏi thường là liệu những người chơi nhỏ bé có thể sống sót qua sự cạnh tranh hay không, hay liệu họ sẽ bị mua bởi các tập đoàn lớn hơn (như là X-Hive bị mua bởi EMC), hoặc liệu họ sẽ mất thị phần cho các giải pháp lai. Một điều rõ ràng, các nhà cung cấp RDBMS, sẽ không bằng lòng từ bỏ thị phần cho NXD, cung cấp các giải pháp XML tích hợp đủ tiêu chuẩn xuất xưởng nhưng được tích hợp tốt của chính mình để đáp ứng nhu cầu của các khách hàng.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

  • DB2 pureXML: Tìm hiểu về các khả năng của nền tảng DB2 đầy đủ bao gồm các khả năng pureXML.
  • DB2 Express-C với pureXML: Dùng thử công nghệ pureXML bằng cách sử dụng phiên bản cộng đồng miễn phí.
  • eXist-DB: Tải NXD mã mở mà từng bước tham gia cạnh tranh với MySQL.
  • Mark Logic: Khi các yêu cầu của bạn về hiệu suất và tính khả mở vượt quá khả năng của eXist, Mark Logic là lựa chọn phù hợp.

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management, Nguồn mở
ArticleID=413532
ArticleTitle=So sánh các phương pháp tiếp cận cơ sở dữ liệu XML
publish-date=07172009