Tải bản đầy đủ (.pdf) (10 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (207.34 KB, 10 trang )

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ì?
Adriaan de Jonge, Kỹ sư phần mềm, 自由职业者
Tóm tắt: 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.
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.


×