XML数据库如何进行深度查询?

时间:2014-07-22 14:53:40

标签: database basex xml-database

我在问一个关于XML数据库如何工作的问题,但我将在一个标准的关系数据库中给出一个我理解的例子,希望人们可以解释它在XML数据库上是如何工作的。

让我们说我们的数据有:

Countries
Businesses
Employees

在关系数据库中,您可能会执行以下操作:

COUNTRY_BUSINESS_TAB: COUNTRY_ID, BUSINESS_ID
BUSINESS_EMPLOYEES_TAB: BUSINESS_ID, EMPLOYEE_ID

让我们忘记为ID提供有意义的名称,并直接使用ID。

现在,假设我们想要按员工进行搜索,这很容易,我们在EMPLOYEE_ID中添加了一个索引BUSINESS_EMPLOYEES_TAB,我们可以快速获得员工工作地点的业务ID。设置索引后,无需进行全表扫描。

现在让我们说数据是XML格式。在顶层,标签中有很多国家ID。作为子标签,有业务ID。作为他们的子标签,有员工ID。

XML数据库可以快速查找员工工作的所有地点而无需扫描整个文档吗?

我问,因为我有大量的XML数据,我正在考虑解析和放入SQL数据库,但我现在正在考虑将它直接放在XML数据库中,如BaseX ,并使用XQuery而不是SQL。

是一个解释,或者仅仅是一个关于如何在XML数据库中解决这个问题的参考。

1 个答案:

答案 0 :(得分:1)

XML数据库提供XPath和XQuery语言来查询XML数据。以下查询可以是例如用于返回员工工作的地方(为了使其工作,您肯定必须使其适应您的实际XML数据):

//employee[name = 'john']/parent::business/parent::country/@name

在某些XML DBMS(如BaseX)中,上面的查询将自动重写以利用索引结构。这样,查询处理器将只检索那些对您的查询结果很重要的XML文本节点。