我有分层数据,我必须在数据库中保留。以前我在文件系统上将其作为xml文件持久化。原始xml具有松散的结构或t,s,r,w和l元素允许有限的递归(r标记可以在另一个r标记内/下),l标记可以在文档树中的任何位置。示例:
<root>
<s>
#text
</s>
<l/>
<s>
<r>
<w/><w/><w/>
</r>
<l/>
<r>
<r>
<w/><w/><w/>
</r>
</r>
#text
</s>
</root>
我能够使用xpath相对路径运算符// r在这样的结构中搜索所有r。 这个用例以及隔离节点的必要性// r / r和// r / w都非常重要,必须在任何实现中设计。
有一次我看了mongodb并且来回json是多么容易,我想把它存储为一个mongodb文件:
{
root: {
s: [
#text
,
{
r: [
{
w: [
]
},
{
r: {
w: [
]
}
}
],
#text
}
]
}
}
然而,在mongodb文档中搜索json数据证明是一个问题,因为find()语法不允许任何相对路径搜索(在xpath中很容易获得)
对于所有混合的文本文档xml文档,问题必须是其他人已经面临的问题。如何在数据库中搜索许多大型混合分层/图形文档。有没有成功的故事?什么是最好的方法? 这些文件可以是5兆,我有50个,所以将它们全部拖入内存可能不是一个好主意。因此,我希望能够在数据存储中进行搜索。
如果我坚持mongodb,这似乎是表面上的一个不错的选择,我将不得不:
0) use another searching technique besides find(), but what?
1) write my own find() function in mongodb, it's just javascript, right?
2) modify the data include more metadata of the hierarchy (parent node, path to node), ughhh
3) modify the data in some other way, ughh
也许mongo不是要走的路。如果我放弃mondodb,我当然必须:
4) find another database that allows an xml datatype (like sql-server)
5) find another database that allows storing tree-like structures, (like what?)
感谢您的任何想法!