我正在寻找nosql键值存储,它还提供存储/维护存储实体之间的关系。我知道Google App Engine的数据存储区允许实体之间拥有和无关的关系。是否有任何流行的nosql商店提供类似的东西?
即使它们中的大多数都是模式较少的,是否有方法可以将关系适当地放到键值存储上?
答案 0 :(得分:4)
它属于图形数据库的核心功能,可为实体之间的关系提供支持。通常,您将实体建模为节点,将关系建模为图形中的关系/边。与RDBMS不同,您不必事先定义关系 - 只需根据需要将它们添加到图形中(无模式)。我创建了一个domain modeling gallery,给出了一些在实践中如何看待它的例子。这些示例使用了Neo4j graphdb,这是我参与的一个项目。该项目的mailing list用于证明对图形建模问题非常有用。
面向文档的数据库Riak支持文档之间的链接。
您可以在任何数据库引擎(如键/值)之上添加对关系的支持,但它不会在没有工作的情况下发生。这一切都归结为您的用例。如果您提供更多详细信息,则可以更轻松地找到有用的答案。
哎呀,现在我看到标题上写着“nosql store”,然后你的实际问题将其缩小为“nosql key value store”。由于键/值存储没有用于定义实体之间关系的语义,我仍然会发布我的答案。
答案 1 :(得分:4)
MongoDB是一个文档数据库,而不是键/值存储。但它确实提供了inter-document references的简单形式。这些工作或多或少类似于删除引用对象时自动为空的SQL外键。
这适用于您使用外键的相同类型的事物,但它并未针对严重的图形遍历进行优化。
答案 2 :(得分:0)
Google App Engine中的关系只是在代码中访问时自动取消引用的实体的关键。并且仅用于过滤时的值。它是DB Api的一个功能,而不是任何显式的功能,因此对ReferenceProperty的访问将只是对引用的模型执行查询以访问该对象。
如果你看一下像MongoDB这样的东西,关系会存储在对象中(从我记得的内容),但是它们也可以存储,但你想要创建一个可以搜索连接表的API关系中的项目与App Engine的工作方式类似。
保罗。