1

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

假设我们的数据有:

Countries
Businesses
Employees

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

COUNTRY_BUSINESS_TAB: COUNTRY_ID, BUSINESS_ID
BUSINESS_EMPLOYEES_TAB: BUSINESS_ID, EMPLOYEE_ID

让我们忘记为 ID 提供有意义的名称,而直接根据 ID 工作。

现在,假设我们要按员工搜索,这很简单,我们输入一个索引EMPLOYEE_IDBUSINESS_EMPLOYEES_TAB我们可以快速获取员工工作地点的业务 ID。一旦建立了索引,就不需要进行全表扫描。

现在让我们改为说数据是 XML 格式的。在顶层,标签中有很多国家/地区 ID。作为子标签,有企业 ID。作为它们的子标签,还有员工 ID。

XML 数据库能否在不扫描整个文档的情况下快速找到员工工作的所有地方?

我问是因为我有很多 XML 数据,我正在考虑将其解析并放入 SQL 数据库,但我现在正在考虑将其直接放入 XML 数据库,如BaseX,并使用 XQuery 而不是 SQL . 我只需要一个解释或简单的参考来阅读我自己关于如何在 XML 数据库中解决这个问题。

4

1 回答 1

1

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

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

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

于 2014-07-22T16:09:02.260 回答