标签: graph-databases

使用NoSQL数据存储时遇到了哪些可伸缩性问题?

NoSQL指的是打破关系数据库和ACID保证历史的非关系数据存储.流行的开源NoSQL数据存储包括:

  • Cassandra(表格,用Java编写,由Cisco,WebEx,Digg,Facebook,IBM,Mahalo,Rackspace,Reddit和Twitter使用)
  • CouchDB(文档,用Erlang编写,BBC和Engine Yard使用)
  • Dynomite(键值,用Erlang编写,由Powerset使用)
  • HBase(键值,用Java编写,Bing使用)
  • Hypertable(表格,用C++编写,百度使用)
  • Kai(键值,用Erlang编写)
  • MemcacheDB(键值,用C编写,Reddit使用)
  • MongoDB(文档,用C++编写,由Electronic Arts,Github,NY Times和Sourceforge使用)
  • Neo4j(图形,用Java编写,一些瑞典大学使用)
  • Project Voldemort(键值,用Java编写,LinkedIn使用)
  • Redis(键值,用C语言编写,Craigslist,Engine Yard和Github使用)
  • Riak(键值,用Erlang编写,Comcast和Mochi Media使用)
  • Ringo(键值,用Erlang编写,诺基亚使用)
  • Scalaris(键值,用Erlang编写,OnScale使用)
  • Terrastore(文档,用Java编写)
  • ThruDB(文档,用C++编写,由JunkDepot.com使用)
  • 东京内阁/东京暴君(键值,用C语言写的,由Mixi.jp(日本社交网站)使用)

我想知道您的具体问题 - SO读者 - 使用数据存储解决了您使用的NoSQL数据存储.

问题:

  • 您使用NoSQL数据存储解决了哪些可扩展性问题?
  • 您使用了什么NoSQL数据存储?
  • 在切换到NoSQL数据存储之前,您使用了什么数据库?

我正在寻找第一手经验,所以除非你有这个经验,否则请不要回答.

database nosql graph-databases key-value-store distributed-database

189
推荐指数
6
解决办法
2万
查看次数

基于图形的数据库的用例有哪些(http://neo4j.org/)?

我经常使用Relational DB,并决定冒险使用其他类型的.

这个特别的产品看起来很好,很有希望:http://neo4j.org/

有没有人使用基于图形的数据库?可用性的优点和缺点是什么?

您是否在生产环境中使用过这些产品?提示您使用它们的要求是什么?

database neo4j graph-databases

127
推荐指数
5
解决办法
3万
查看次数

Neo4j - Cypher vs Gremlin查询语言

我开始使用REST API使用Neo4j进行开发.我看到有两个选项可用于执行复杂查询 - Cypher(Neo4j的查询语言)和Gremlin(通用图形查询/遍历语言).

这就是我想知道的 - 有没有任何查询或操作可以通过使用Gremlin完成,而不能用Cypher完成?或相反亦然?

Cypher对我来说似乎比Gremlin要清楚得多,而且一般来说Neo4j中的人似乎都会选择Cypher.但是 - 如果Cypher与Gremlin相比有限 - 我真的很想提前知道.

neo4j graph-databases cypher gremlin

95
推荐指数
8
解决办法
3万
查看次数

关系数据库与图数据库的比较

有人可以向我解释一个关系数据库(例如MySQL)与Neo4j等图形数据库相比的优缺点吗?

在SQL中,您有多个表,其中各种ID链接它们.然后你必须加入连接表.从新手的角度来看,为什么要将数据库设计为需要连接,而不是将连接从一开始显示为边缘,就像使用图形数据库一样.从概念上讲,对新手来说没有任何意义.据推测,这有一个非常技术但非概念性的原因?

sql relational-database graph-databases

80
推荐指数
5
解决办法
4万
查看次数

.NET的图形数据库

我一直在设计一个基于.NET/Mono框架的应用程序,它应该大量使用图形理论中的最短路径,我想使用本机解决方案来遍历图形的节点,而不是实施替代解决方案,这些解决方案难以维护并且会对性能产生巨大影响.

我找到了一个适合我的范围的应用程序:neo4j.

不幸的是,这个应用程序纯粹是用Java代码编写的,并且它不能移植到.NET,因为这两种架构之间存在巨大差异.

有没有人知道是否有任何neo4j的端口或类似的.NET解决方案?

.net c# java mono graph-databases

57
推荐指数
5
解决办法
3万
查看次数

将MySQL和Neo4j一起使用是一个好主意吗?

我将使用许多类似的项目(数百万)创建一个应用程序,我想将它们存储在MySQL数据库中,因为我想做大量的统计信息并搜索特定列的特定值.

但与此同时,我将存储所有项目之间的关系,这些项目在许多连接的二叉树结构(传递闭包)中相关,而关系数据库并不擅长这种结构,所以我想存储Neo4j中的所有关系都具有良好的性能.

我的计划是将所有数据除了MySQL数据库中的关系以及item_id存储在Neo4j数据库中的所有关系.当我想查找树时,我首先在Neo4j中搜索树中的所有item_id:s,然后在MySQL数据库中搜索查询中的所有指定项,如下所示:

SELECT * FROM items WHERE item_id = 45 OR item_id = 345435 OR item_id = 343 OR item_id = 78 OR item_id = 4522 OR item_id = 676 OR item_id = 443 OR item_id = 4255 OR item_id = 4345

这是个好主意,还是我错了?我之前没有使用过图形数据库.有没有更好的方法解决我的问题?在这种情况下,MySQL查询将如何执行?

mysql architecture hierarchical-data neo4j graph-databases

51
推荐指数
3
解决办法
1万
查看次数

图表数据库与三重商店 - 何时使用哪个?

我知道Stackoverflow上有类似的问题,但我觉得他们没有回答以下问题.

图表数据库对我的理解存储数据主要遵循以下模式:

Table/Collection 1: store nodes with UID
Table/Collection 2: store relations referencing nodes via UID
Run Code Online (Sandbox Code Playgroud)

这允许存储任意类型的图形.现在据我所知,三重商店只存储三元组:

Triple/Collection 1: store triples (2 nodes, 1 relation)
Run Code Online (Sandbox Code Playgroud)

现在我将看到有关用例的以下区别:

  • 图形数据库:当您知道静态连接时
  • 三重存储:当您有松散连接的节点并且经常寻找新连接时

我很困惑的是,人们似乎根据这些标准没有讨论使用哪一个.我发现的大多数文章都在谈论速度或兼容性等论点.但这不是最重要的一点吗?

反过来说:

  • 想象一下,有一个清晰连接,用户定义的图形.为什么你只想将它存储为三元组,丢失所有关于连接的信息?或者必须实现在三元组中存储ID的一些自定义解决方案subject.
  • 想象一下,使用SPARQL松散地收集了要查询未知关系的节点.图数据库支持这一点.但为此,他们必须建立另一个我认为会更慢的指数吗?

编辑:我看到"失去关于连接的信息"是错误的方式.如果您按照接受的答案中所示执行操作并为2个节点+ 1个关系插入多个三元组,那么您将保留所有信息,特别是信息确切的节点连接的信息.

sparql triplestore neo4j graph-databases orientdb

50
推荐指数
1
解决办法
1万
查看次数

49
推荐指数
3
解决办法
1万
查看次数

体验OrientDB与Neo4j

我正在为项目寻找合适的Graph DB.我测试了Neo4j并且非常喜欢它.但是AGPL许可问题让我有所帮助(你可以在这里阅读).

然后我发现了一些声称OrientDB实际上更快的文章.但它们并不是最新的.你在这里这里找到它们.它在Apache 2下获得许可,这很好.

所以我只想向stackoverflow的优秀人士询问您的意见.

  • 可扩展性非常重要,OrientDB声称它更好(这里)
  • 许可应该是开放的
  • 我有一个复杂的顶点/边缘模型,需要检索最多3层深度的关系
  • OrientDB提供的文档图形混合似乎是一个好处

感谢您的反馈意见!

neo4j graph-databases orientdb

42
推荐指数
1
解决办法
2万
查看次数

哪些与.NET兼容的图形数据库解决方案具有可靠的跟踪记录?

我正在寻找一个通用图形数据库解决方案,它具有现有的.NET兼容基础架构和可靠的跟踪记录.

我在Google和SO上找到了几个选项的链接,但没有关于现实应用程序中现有实现和用法的大量信息.

我还考虑过使用文档数据库(如RavenDBMongoDB)和专用的三重存储或RDBMS(如SQL)之间的混合,并扩充数据存储以支持我想要的功能.然而,这可能是相当多的工作,我希望其他人已经完成了它.

我看过的内容:

  • 三位一体 - 这个是由微软制作的,而且文献听起来很棒,但我找不到下载链接,而且发布页面上写着"Trinity包目前仅用于内部网访问.".

  • db4o - 这是一个面向对象的数据库,本机支持.NET和Java.它似乎作为图形DB销售,但我不确定"图形"结构/操作是隐式还是显式(或者它是否提供比任何其他文档数据库更多).

  • TinkerPop - 这个项目看起来就像我正在寻找的,但是github源代码似乎只在Java中.这从graph-database.org SlideShare上讨论.NET版本,但我一直没能找到他们.

  • CloudGraph - 听起来不错,但似乎不存在.

  • GiraffeDB - "GiraffeDB是一个功能强大的.NET框架4.0图形数据库系统,能够以高效且易于访问的方式表示复杂的语义""目前正在进行规划".

  • AllegroGraph 4.7 - 这看起来非常成熟(支持SPARQL和Prolog以及许多客户端接口),但它是封闭源代码.我显然会对一个我没有听说过的闭源项目持怀疑态度.

还有一些看起来非常有前景的Java项目(HyperGraphDBNeo4j,但我还没有看到任何现有的.NET集成.我并不是完全反对使用Java解决方案并自己做这项工作,但又一次,我更喜欢经过验证的解决方案,可以节省我最多的时间.

.net nosql graph-databases

31
推荐指数
2
解决办法
5024
查看次数