2008-10-12 28 views
5

Tôi có một hệ thống tạo ra một lượng lớn tài liệu XML mỗi ngày (theo thứ tự 1 triệu) và tôi muốn có thể lưu trữ và lập chỉ mục những thứ này để tôi có thể tìm kiếm tất cả tài liệu với một số trường được đặt thành giá trị đã cho.Cơ sở dữ liệu nào có hỗ trợ XML tốt nhất?

Tôi hiểu rằng có hai loại cơ sở dữ liệu XML cơ bản, những cơ sở cung cấp hỗ trợ XML trên cơ sở dữ liệu quan hệ thông thường và cơ sở dữ liệu XML "nguyên gốc". Cho rằng tôi đang mở để sử dụng một trong hai, những gì bạn muốn giới thiệu?

Trả lời

3

Tôi không thể cung cấp cho bạn một ứng cử viên tốt, nhưng nếu bạn muốn tránh chọn một ứng cử viên xấu, hãy tránh Oracle XmlDB. Đó là chậm và lỗi như địa ngục. Một trong những phần mở rộng tồi tệ nhất mà Oracle đã thực hiện cho DBMS của nó.

+0

Cảm ơn bạn, tôi đã chỉ nhìn vào nó. –

1

Theo những người làm việc trên nó monetDB là khá khả năng xử lý xml. Về cơ bản, khi bạn muốn làm xquery trên các nội dung, bạn muốn có một cái gì đó mà có thể làm điều đó đúng. Cấu trúc của một tài liệu XML rất linh hoạt và có chiều dài không xác định về cơ bản khác với chiều dài của một rdbms. Điều này có nghĩa là mọi thứ cần được lưu trữ và lập chỉ mục một cách thông minh. Đối với các hệ thống dbms truyền thống, đây là một lối tắt dễ dàng để lưu trữ xml dưới dạng BLOB (đối tượng nhị phân). Nhưng BLOB thường không được lập chỉ mục và sống chủ yếu bên ngoài kho dữ liệu chính. Để phân tích xml đúng cách hệ thống phải đi vào xml khi lưu trữ. MonetDB dường như làm điều này.

6

Microsoft SQL Server có hỗ trợ cho các cột XML. Đây không chỉ là hỗ trợ BLOB/TEXT.

Bạn có thể sử dụng các cột XML theo cách không có cấu trúc, trong đó SQL Server sẽ chỉ đảm bảo chúng đúng XML. Điều này cho phép lưu trữ các tài liệu XML tùy ý bên trong SQL Server, nhưng vẫn đảm bảo bạn đang xử lý XML và không chỉ các byte/ký tự tùy ý. SQL Server cho phép bạn truy vấn trên đầu trang này bằng cách sử dụng XQuery.

Bạn cũng có thể tạo cột XML phù hợp với giản đồ sử dụng XSD. Thú vị hơn, SQL Server cho phép lập chỉ mục XML để các truy vấn XPath của bạn có thể hoạt động tốt.

Xem "What's New for XML in SQL Server 2008" để biết thêm thông tin. (Mặc dù hầu hết các hỗ trợ XML tồn tại trong SQL Server 2005.)

0

Chắc chắn thử MS-SQL, Oracle và các hệ thống hiện có khác hỗ trợ XQuery. Tuy nhiên, nếu các truy vấn dựa trên XML bạn cần biết trước, có thể dễ dàng hơn khi lưu trữ XML trong BLOB và thêm một hoặc hai trường được lập chỉ mục với một bản sao của phần tử XML có liên quan (S).

3

DB2 9.x với hỗ trợ PureXML là một khả năng.

4

Bạn cũng có thể muốn thanh toán MarkLogic Server hoặc eXist.

Nếu bạn có lượng nội dung vừa phải (một vài GB) thì eXist sẽ thực hiện. Ngoài ra, bạn có thể muốn nhìn vào MarkLogic.

Bạn có thể tải xuống và kiểm tra cả hai, vì eXist là miễn phí và MarkLogic có giấy phép cộng đồng để bạn chơi cùng.

4

Nếu bạn đang tìm kiếm một db XML nguyên gốc, tôi chắc chắn đề xuất Sedna. Hỗ trợ nhà phát triển rực rỡ là tốt.

1

Bắt đầu từ DB2 Viper, IBM DB2 bắt đầu cung cấp hỗ trợ riêng cho lưu trữ dữ liệu XML cũng như truy vấn dữ liệu XML.

DB2 được thiết kế để tối ưu hóa quyền truy cập vào dữ liệu XML và dữ liệu quan hệ và các khả năng này có sẵn cho C++, .NET, COBOL, Java và PHP.

XQuery là một ngôn ngữ mới được sử dụng để truy vấn dữ liệu XML trong DB2

truy vấn demo:

create table person(name varchar(20), data xml); 

insert into person values('bane', XMLPARSE(DOCUMENT ' 
<person> 
<first-name>Tom</first-name> 
<last-name>Hardy</last-name> 
<mobile>89898989</mobile> 

</person> 
' STRIP WHITESPACE)) 


some simple xQueries 

SELECT * 
FROM googolplex.person 
WHERE xmlexists('$s[person/first-name="bane"]' PASSING person AS "s"); 
Các vấn đề liên quan