网络上有很多文章支持转向像Neo4j这样的图形数据库的趋势...但我找不到反对它们的文章。
在什么情况下,图形数据库不是最佳解决方案?
任何比较图形数据库、NoSQL和关系型数据库的文章链接都将非常有用。
目前,我不会在高并发写入情况下使用Neo4j。写入仍限制于单台机器,因此您只能使用一台机器的吞吐量,直到他们想出某种切分的方法(顺便说一下,这正在进行中)。在高并发写入情况下,您可能会考虑其他存储(如Cassandra或MongoDB),并牺牲图形数据库提供的其他好处。
还有一件事是我目前不会使用Neo4j进行全文搜索,尽管它确实具有某些内置功能(因为它在后台使用Lucene进行索引),但其范围有限且难以从最新的Cypher使用。我了解到这将在接下来的几个版本中快速改善,期待着那一天的到来。像ElasticSearch或Solr这样的工具会更好地处理与全文搜索相关的事情。
与流行观点相反,除非您确实拥有非常非规范化的数据(例如日志记录),否则标签数据通常非常适合于图形数据。
好消息是,您可以同时利用许多这些东西,选择最佳工具来回答您的问题,并实现多语言持久性解决方案。
另外,我不会使用neo4j来提供和存储二进制数据。对于图像、视频和大型文本文档,有更好的选择 - 可以将它们作为Neo4j的索引,或者只是引用它们。