Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 无向图的Nosql DB?_Database_Data Structures_Graph_Nosql_Breadth First Search - Fatal编程技术网

Database 无向图的Nosql DB?

Database 无向图的Nosql DB?,database,data-structures,graph,nosql,breadth-first-search,Database,Data Structures,Graph,Nosql,Breadth First Search,我想存储一个包含数百万个节点的图,其中每个节点以无向方式链接到另一个节点(点a到B,自动地B到a)。我已经研究了Neo4j和OrientDB作为可能的解决方案,但它们似乎是在有向图中定向的,Neo4j对于>100万个节点不自由对我来说不是一个解决方案 您能帮助我其他哪些NoSQL数据库(Redis、CouchDB、MongoDB等)最适合这种情况吗?如何实现它?我想做一个无属性(只给我链接的元素)宽度优先查询,有两个深度级别(有AB、BC、CD,查询a应该给我B和C,但不是D)。始终按照指示存储

我想存储一个包含数百万个节点的图,其中每个节点以无向方式链接到另一个节点(点a到B,自动地B到a)。我已经研究了Neo4j和OrientDB作为可能的解决方案,但它们似乎是在有向图中定向的,Neo4j对于>100万个节点不自由对我来说不是一个解决方案

您能帮助我其他哪些NoSQL数据库(Redis、CouchDB、MongoDB等)最适合这种情况吗?如何实现它?我想做一个无属性(只给我链接的元素)宽度优先查询,有两个深度级别(有AB、BC、CD,查询a应该给我B和C,但不是D)。

始终按照指示存储关系/边,但是,在遍历/查询时,您可以通过使用或在某些情况下不定义方向,轻松地将图形视为无向图。(这样就不需要“双”边来覆盖两个方向,只需忽略方向,并且在“向后”遍历边时没有性能损失。)

100万“原语”的限制已经取消了很长一段时间。如果您的代码是开源的,则可以对任何大小的数据库使用社区版本。对于其他情况,有包含一个的。

对节点数量没有限制。此外,默认模型是双向的。您也可以出于商业目的免费使用它,因为应用的许可证是Apache2

此处记录了GraphDB:。基本上,您可以使用本机API或蓝图实现。本机API是SQL语言的一种演变,带有用于图形的特殊运算符。例如:

从朋友穿越的帐户(1,7)中选择(address.city.country.name='newzealand')

也就是说,把住在新西兰的这位朋友的所有账目都给我。朋友被提升到第7级的深度


第二种方法允许使用完整的Blueprint堆栈(如Gremlin语言)创建超级复杂的查询。

查询位很有趣!我是从Cassandra的角度考虑这一点的,虽然存储可以通过单个列族实现,但我不确定如何处理两个深度级别的查询条件。需要更多的时间:)在遍历中偏离关系的方向是否会导致性能损失?