Ric*_*mon 6 couchdb graph data-modeling
我一直在使用couchdb中的图形结构(具有命名关系的属性图)建模,并想知道我会发现什么是性能的潜在瓶颈.
我使用以下原则:
似乎所有这些原则都与CouchDB哲学相矛盾,
例如,有了这个原则,标记一个人就成了三个文件:
{ _id: '10', type: 'person', 'name': 'John Doe' }
{ _id: '20', type: 'tag', 'name': 'Important' }
{ _id: '30', type: 'link', from: 10, to: 20, name: 'tag' }
Run Code Online (Sandbox Code Playgroud)
我还在一个_design名为的文档中创建了以下视图links:
{
outgoing: {
map: function(doc) {
if (doc.type == 'link') {
emit([doc.from, doc.name], {_id: doc.to});
}
}
},
incoming: {
map: function(doc) {
if (doc.type == 'link') {
emit([doc.to, doc.name], { _id: doc.from });
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过这些网址获取文档传入或传出的所有链接:
http://host/db/_design/links/_view/incoming?startkey=["10"]&endkey=["10",{}]
http://host/db/_design/links/_view/outgoing?startkey=["10"]&endkey=["10",{}]
Run Code Online (Sandbox Code Playgroud)
我甚至可以通过这些网址获取所有名称的链接:
http://host/db/_design/links/_view/incoming?startkey=["10","tag"]&endkey=["10","tag",{}]
http://host/db/_design/links/_view/outgoing?startkey=["10","tag"]&endkey=["10","tag",{}]
Run Code Online (Sandbox Code Playgroud)
如果我包含include_docs=true参数,我会得到链接引用的文档; 传入或传出.到现在为止还挺好.有一个图结构和查询它的方法,虽然是逐个节点.
关于这种方法的好处:
link文档,这应该非常简单.link文档.糟糕的事情,以及我需要你帮助的地方:
回到我的问题: