3个版本
新增 0.0.8 | 2024年8月22日 |
---|---|
0.0.7 | 2024年8月9日 |
0.0.6 | 2024年8月5日 |
#490 in 数据结构
每月586次下载
100KB
2K SLoC
arangors-graph-exporter (ArangoDB Rust图加载器)
这个基于Rust的库提供了一种高效且并行的从ArangoDB加载数据的方式。它支持加载命名图和自定义图,并可以选择加载哪些顶点和边属性。
稳定API文档 | 主API文档 | ArangoDB文档 | ArangoDB
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
arangors-graph-exporter = "0.0.8"
使用方法
初始化
初始化图加载器有两种不同的方法
命名图
命名图是在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
}
加载数据
初始化图加载器后,您可以使用以下方法加载顶点和边
do_vertices
:从图中加载顶点。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文档]中找到答案。如果您的疑问无法解决,请随时选择以下资源之一
-
请使用GitHub提交功能请求和错误报告: https://github.com/arangodb/arangors-graph-exporter/issues
-
在StackOverflow上询问有关驱动程序、Rust、使用场景等问题: https://stackoverflow.com/questions/tagged/arangodb
-
在Slack上与社区和开发者聊天: https://arangodb-community.slack.com/
-
通过我们的YouTube频道了解ArangoDB的更多信息: https://www.youtube.com/@ArangoDB
-
在X上关注我们以保持最新状态: https://x.com/arangodb
-
了解更多关于我们社区的信息: https://www.arangodb.com/community
贡献
欢迎贡献!请打开一个问题或提交一个拉取请求。
本文档提供了基于Rust的ArangoDB图加载器的API和使用的全面概述。它涵盖了初始化、配置、数据加载和错误处理。有关更详细的示例和高级用法,请参阅源代码和附加文档。
依赖项
~8–21MB
~338K SLoC