我想存储数百万个节点的图形,其中每个节点以无向方式链接到另一个节点(点A到B,自动B指向A).我已经将Neo4j,OrientDB作为可能的解决方案进行了检查,但它们似乎面向有向图,而Neo4j对于超过100万个节点而言不是免费的,对我来说不是一个解决方案.
你能帮我解决一下其他NoSQL数据库(Redis,CouchDB,MongoDB,......)最适合这样的事情以及如何实现它?我想制作一个无属性(只给我链接元素)广度优先查询2个深度级别(有A < - > B,B < - > C,C < - > D,查询A应该给我B和C,但不是D).
OrientDB对节点数没有限制.此外,默认模型是双向的.您也可以免费将其用于商业目的,因为应用的许可证是Apache 2.
此处记录了GraphDB:http://code.google.com/p/orient/wiki/GraphDatabase.Basilary您可以使用本机API或Blueprints实现.本机API具有SQL语言的演变,具有图形的特殊运算符.例:
SELECT FROM Account WHERE friends TRAVERSE(1,7)(address.city.country.name ='New Zealand')
这意味着告诉我住在新西兰的这样的朋友的所有帐户.朋友们被深深吸引到了7级.
第二个允许使用完整的Blueprint堆栈(如Gremlin语言)来创建超复杂的查询.