You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将大规模图数据集批量加载到FalkorDB?

大规模图数据集批量加载到FalkorDB的推荐方式
  • 使用FalkorDB原生BULK命令(首选方案)
    这是FalkorDB专为批量导入优化的命令,性能远优于单条提交,支持从本地文件或标准输入导入CSV/自定义分隔符格式的数据。

    • 导入节点示例:
      BULK CREATE (:Person {id: $1, name: $2}) FROM '/data/nodes.csv' WITH DELIMITER ',' BATCH_SIZE 5000
      
    • 导入边示例:
      BULK CREATE (:Person {id: $1})-[:FOLLOWS]->(:Person {id: $2}) FROM '/data/edges.csv'
      

    注意:文件需放在FalkorDB服务器可访问路径,也可通过管道(如cat nodes.csv | redis-cli GRAPH.BULK ...)传递数据;调整BATCH_SIZE可平衡内存占用与导入速度。

  • 通过客户端SDK批量提交
    如果数据在应用端而非服务器本地,用官方Python/Java客户端分批次提交事务,能灵活处理数据预处理(清洗、格式转换)。
    Python客户端示例:

    from falkordb import FalkorDB
    
    db = FalkorDB(host='localhost', port=6379)
    graph = db.select_graph('social_graph')
    
    batch_size = 1000
    node_queries = []
    
    with open('user_nodes.csv', 'r') as f:
        next(f)  # 跳过表头
        for line in f:
            user_id, username = line.strip().split(',')
            node_queries.append(f"CREATE (:User {{id: {user_id}, name: '{username}'}})")
            if len(node_queries) == batch_size:
                graph.query('\n'.join(node_queries))
                node_queries = []
        # 提交剩余数据
        if node_queries:
            graph.query('\n'.join(node_queries))
    
  • 基于Redis管道的极致性能导入
    由于FalkorDB构建在Redis之上,可利用redis-cli --pipe工具批量导入Redis协议格式的命令,适合超大规模数据的极速导入。
    操作步骤:

    1. 生成包含所有FalkorDB导入命令的Redis协议文本(每条命令对应Redis协议格式)
    2. 通过管道执行导入:cat bulk_commands.txt | redis-cli --pipe
      适合对Redis协议熟悉、追求最高导入性能的场景。
  • 分阶段预处理与并行导入
    针对数百万级别的数据,可拆分大文件为多个小文件,并行执行BULK命令;同时遵循“先节点后边”的顺序导入,避免边引用不存在的节点。
    额外优化:提前创建节点属性索引(如CREATE INDEX ON :User(id)),导入边时能快速匹配节点,提升导入效率。

内容的提问来源于stack exchange,提问作者Leibale Eidelman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 17:42:36