Mar*_*man 2 xml postgresql xpath
我是SQL的初学者,需要回答以下问题.我有成千上万的XML文件(每个都有数百个节点),需要在它们内部的数据之上构建一个Postgresql数据库.
我考虑两种方式:
哪种方法可以更好(更快,更舒适)?在SQL数据库中使用XML类型有哪些优缺点?
选项(1)很糟糕,不要这样做.每个节点有一排巨单表将是可怕的查询,像EAV添加了硫磺的臭味和奖金角.
无论是模拟由XML作为实体(表)表示的数据和关系,或只是存储在数据库中的XML文档.
如果XML是定期构建的,那么您只能将XML建模为实体和关系.如果您有一堆不同的自由格式XML文件,那么您无法在RDBMS中对其进行有效的建模.如果它们是常规的,这通常是最好的选择,例如:
<root>
<parentnode attrib="value">
<child otherattrib="value2">content</child>
</parentnode>
<...>
</root>
Run Code Online (Sandbox Code Playgroud)
你可以把它建模为:
parent
带有id
和attrib
列的表; 和child
带有id
和otherattrib
列的表以及parent_id
具有外键引用的列parent(id)
.究竟如何建模XML取决于XML.什么是强制性的,什么不是?您是否需要重新构建输入XML中实体的确切顺序,或者节点内的顺序无关紧要?是否有自由形式的可嵌套实体?
仅作为一种决策的示例,如果您的父节点可以具有零个或一个(但不多于)给定子节点类型,则可以选择使用两个表和1:1可选的模型关系或您可以将子元素合并到子属性/内容可为空的单个表中的父元素.在性能(连接成本与表宽度和每页行数)和易用性方面,两者都有优点和缺点.
如果XML结构是严格的,那么通常很容易建模为表格; 如果它是自由形式的,那么将它作为XML存储在数据库中并使用xpath查询它通常更有用.
如果将其保留为XML文档,则在DB中进行索引和查询会更加困难,但更容易将XML从数据库和应用程序中取出.xpath表达式上的功能索引可以提供很多帮助.还需要添加一个CHECK
约束来强制执行该xml
字段,IS DOCUMENT
这样您就无法存储XML片段,只能存储整个文档.
归档时间: |
|
查看次数: |
1412 次 |
最近记录: |