Neo4j如何对大量数据(千万节点及以上)进行初始化

参考文章:

【1】Neo4j的查询速度为何这么慢?这能商用吗?

【2】如何将大规模数据导入Neo4j

如果对大量数据进行初始化加载,那么就用Neo4j-import;增量数据的同步加载又不想暂停数据库服务,那就要用load csv,如果可以忍受数据库的短暂停服,那么Batch-inserter更适合。如果只是想插入少量的数据,且不怎么在乎实时性,那么请直接看Cypher语言。

常见的数据插入方式:

1.Cypher CREATE 语句,为每一条数据写一个CREATE

2.Cypher LOAD CSV 语句,将数据转成CSV格式,通过LOAD CSV读取数据。

3.官方提供的Java API —— Batch Inserter

4.大牛编写的 Batch Import 工具

5.官方提供的 neo4j-import 工具

Neo4j如何对大量数据(千万节点及以上)进行初始化_第1张图片

截图于:http://paradoxlife.me/how-to-insert-bulk-data-into-neo4j

Neo4j如何对大量数据(千万节点及以上)进行初始化_第2张图片

截图于:http://paradoxlife.me/how-to-insert-bulk-data-into-neo4j

【*】Neo4j社区版的neo4j最大节点存储量2**35,大约二百多亿,企业版没限制。如果服务器容许挂载的硬盘最大容量很大,采用企业版产品,那么也还是可以满足要求。不要实时性的话,titan也可以做;预算不够的话,arangodb、orientdb都支持分片存储。另外别指望all in one,慎重进行物理模型设计,仔细考虑图数据库的定位(当个图结构的索引最合适)。

【*】neo4j是权威性较高的老牌图数据库,用java写的,因为存储模型比较固定,灵活性不足,而且无法实现分片存储,所以愈发对超大规模数据适应不能;orient改进了存储模型,采用混合模型存储,可以分片存储,用java写成;arango应该借鉴了orient的设计思路,不过据说它更快,它是用c++写成的。另外,对非中立的厂商所做的性能测评,还是要持怀疑态度。

【*】插入慢一方面需要给他建立索引,另一方面可能的确是超级节点引起的。超级节点的解决方案是为Neo4j添加了wrapper,导向自己的代码。

 



Neo4j图数据库中的索引

给需要查询的节点标签创建索引。

CREATE INDEX ON:类别标签名 (创建索引的字段名)

CREATE INDEX ON:BaiduBaike(id)

Neo4j如何对大量数据(千万节点及以上)进行初始化_第3张图片



作者:布口袋_天晴了
链接:https://www.jianshu.com/p/32ce953604d5
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(Neo4j如何对大量数据(千万节点及以上)进行初始化)