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


    2021-08-26 08:56:39

    参考文章:

    【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 工具

     
    截图于:http://paradoxlife.me/how-to-insert-bulk-data-into-neo4j
     
    截图于: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)

     


    作者:布口袋_天晴了
    链接:https://www.jianshu.com/p/32ce953604d5
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    ANSCII码和BCD码互转
    java native方法及JNI实例
    VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程
    得到INI文件所有Section(所有节点名称)
    minizlib
    禅道bug管理工具的搭建
    Windows 下安装NPM
    总结运行SSIS包的几种方式
    Nginx服务器中处理AJAX跨域请求的配置方法讲解
    Nginx反向代理websocket配置实例
  • 原文地址:https://www.cnblogs.com/zhangchao0515/p/15187864.html
Copyright © 2020-2023  润新知