Neo4j如何对大量数据(千万节点及以上)进行初始化
2021-08-26 08:56:39
参考文章:
如果对大量数据进行初始化加载,那么就用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社区版的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)
作者:布口袋_天晴了
链接:https://www.jianshu.com/p/32ce953604d5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。