如何存储xml内容以便快速访问?

时间:2015-07-29 20:21:11

标签: java xml postgresql bigdata

我从多个内容投放系统中获取了大量grep -oE '^[A-Z]+-[0-9]+' /tmp/jira.txt | sort -u文件。它们彼此无关。

目前我将每个xml解析为xml个对象(java),并将它们保存在@Entity db中。

问题:当用户想要访问存储的数据时,将从db行重新组合对象。根元素始终由唯一ID标识,并且包含的​​数据从不同的行连接。

所以一般来说,我重复这个过程:read xml>分解为java对象>在不同的表中存储在db中> (用户访问)>从db获取并加入表行>撰写java对象>通过REST或SOAP提供给用户界面。

始终从根目录访问内容。例如,按产品ID访问产品。所有子内容,如描述,股票,价格等,永远不会直接访问,但始终只能由根产品访问。

问题:在单独的密钥下以某种方式存储xml postgres会更容易,然后用户访问内容,然后才开始读取xml并以自定义格式提供给用户?

如果是:我如何存储内容?当然,它可能不适合在postgres db中将xml文件保存为documents,但更好的是什么?

更新

blobs

当然,真正的xml文件要复杂得多,因此数据将分发到许多表和行。我现在正在寻找一种方法,我不必分发完整的xml内容,因此有几个表(这里有一个根条目转到表<foo> <bars> <bar><id>1</id><content>Hello</content></bar> <bar><id>2</id><content>Hello2</content></bar> <bars> </foo> @Entity public class Foo { @Id //auto generated private long id; @OneToMany private List<Bar> bars; } @Entity public class Bar { private int id; private String concent; } ,两个条目转到表{{1} }})。因为当我根据用户请求获取内容时,我会使用foo的唯一ID并加入任何内容(此处仅为bar)内容。

如果没有父元素,则永远不会访问foo内容(以及任何其他子内容)。因此,可能有更好的方法来存储这些类型的数据,因为始终可以自上而下访问完整数据并始终重新加入。

0 个答案:

没有答案