#graph #arango-db #load #edge #vertex #loader #named

arangors-graph-exporter

为ArangoDB提供闪电般的图数据访问

3个版本

新增 0.0.8 2024年8月22日
0.0.7 2024年8月9日
0.0.6 2024年8月5日

#490 in 数据结构

Download history 107/week @ 2024-08-01 449/week @ 2024-08-08 30/week @ 2024-08-15

每月586次下载

MIT许可证

100KB
2K SLoC

arangors-graph-exporter (ArangoDB Rust图加载器)

这个基于Rust的库提供了一种高效且并行的从ArangoDB加载数据的方式。它支持加载命名图和自定义图,并可以选择加载哪些顶点和边属性。

Crates.io MIT licensed CircleCI

稳定API文档 | 主API文档 | ArangoDB文档 | ArangoDB

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
arangors-graph-exporter = "0.0.8"

使用方法

初始化

初始化图加载器有两种不同的方法

  1. 命名图
  2. 自定义图

命名图

命名图是在ArangoDB中有一个名称并且其图定义已经存储在数据库中的图。要初始化命名图的图加载器,请使用GraphLoader::new_named方法。

use arangors_graph_exporter::{DatabaseConfiguration, DataLoadConfiguration, GraphLoader, GraphLoaderError};

async fn create_named_graph_loader() -> Result<GraphLoader, GraphLoaderError> {
    let db_config = DatabaseConfiguration::new(/* parameters */);
    let load_config = DataLoadConfiguration::new(/* parameters */);
    let graph_name = String::from("my_named_graph");
    let vertex_global_fields = Some(vec![String::from("lastname"), String::from("firstname")]);
    let edge_global_fields = Some(vec![String::from("field1"), String::from("field2")]);

    GraphLoader::new_named(db_config, load_config, graph_name, vertex_global_fields, edge_global_fields).await
}

自定义图

自定义图或匿名图是一种可以充当图的图形,但没有名称或图定义存储在数据库中。

要为自定义图创建图加载器

use arangors_graph_exporter::{DatabaseConfiguration, DataLoadConfiguration, GraphLoader, GraphLoaderError, CollectionInfo};

async fn create_custom_graph_loader() -> Result<GraphLoader, GraphLoaderError> {
    let db_config = DatabaseConfiguration::new(/* parameters */);
    let load_config = DataLoadConfiguration::new(/* parameters */);
    let vertex_collections = vec![CollectionInfo::new(/* parameters */)];
    let edge_collections = vec![CollectionInfo::new(/* parameters */)];

    GraphLoader::new_custom(db_config, load_config, vertex_collections, edge_collections).await
}

加载数据

初始化图加载器后,您可以使用以下方法加载顶点和边

  1. do_vertices:从图中加载顶点。
  2. do_edges:从图中加载边。

这两种方法都接受一个闭包作为参数来处理加载的数据。如果在初始化期间指定了要加载的全局字段,闭包将接收全局字段。如果没有指定全局字段,闭包将仅接收所需字段。对于顶点,所需字段是顶点ID和顶点键。对于边,所需字段是from顶点ID和to顶点ID。

顶点

处理顶点的闭包接受以下参数

let handle_vertices = |vertex_ids: &Vec<Vec<u8>>, columns: &mut Vec<Vec<Value>>, vertex_field_names: &Vec<String>| {
    // Handle vertex data
};

graph_loader.do_vertices(handle_vertices).await?;

处理边的闭包接受以下参数

let handle_edges = |from_ids: &Vec<Vec<u8>>, to_ids: &Vec<Vec<u8>>, columns: &mut Vec<Vec<Value>>, edge_field_names: &Vec<String>| {
    // Handle edge data
};

let edges_result = graph_loader.do_edges(handle_edges).await?;

配置

数据库配置

将您的数据库配置参数提供给DatabaseConfiguration::new。有关可用参数的更多信息,请参阅文档。

数据加载配置

使用DataLoadConfiguration::new配置数据加载参数。请阅读文档以获取有关可用参数的更多信息。

属性

命名图

  • graph_name:ArangoDB中图的名字。
  • vertex_global_fields:可选。要加载的顶点属性列表。
  • edge_global_fields:可选。要加载的边属性列表。

自定义图

  • vertex_collections:要加载的顶点集合列表。
  • edge_collections:要加载的边集合列表。

作为字段名的特殊属性

目前只有一个特殊字段可用。特殊字段通过@前缀标识。

  • @collection_name:在返回的数据中包含集合名称。

标志

  • load_all_vertex_attributes:布尔标志,用于加载所有顶点属性。
  • load_all_edge_attributes:布尔标志,用于加载所有边属性。

错误处理

所有方法都返回Result类型。使用Rust的标准错误处理机制来处理错误。错误类型是GraphLoaderError

示例返回类型

Result<(), GraphLoaderError>
match graph_loader.do_vertices(handle_vertices).await {
    Ok(_) => println!("Vertices loaded successfully"),
    Err(e) => eprintln!("Error loading vertices: {:?}", e),
}

许可证

本项目采用MIT许可证。

获取帮助

首先,查看您的问题是否可以在[API文档]中找到答案。如果您的疑问无法解决,请随时选择以下资源之一

贡献

欢迎贡献!请打开一个问题或提交一个拉取请求。


本文档提供了基于Rust的ArangoDB图加载器的API和使用的全面概述。它涵盖了初始化、配置、数据加载和错误处理。有关更详细的示例和高级用法,请参阅源代码和附加文档。

依赖项

~8–21MB
~338K SLoC