#temporal-graph #graph #temporal

已删除 docbrown-db

DocBrown(时间图库)的数据库包

0.0.8 2023年4月9日
0.0.7 2023年4月5日
0.0.6 2023年3月19日

#8 in #temporal-graph

Download history 35/week @ 2024-03-29 7/week @ 2024-04-05

52 每月下载量

AGPL-3.0-only

585KB
13K SLoC


Raphtory


Test and Build Issues

🌍 网站   📖 文档   Pometry   🐛 报告错误   加入Slack


什么是Doc Brown? 🥼

Doc Brown是Rust语言的Raphtory下一代版本的原型,重新思考了底层图模型和算法API的几个方面。

请查看 问题,了解此版本将包含的核心功能及其建议的语义。

以下是如何使用Doc Brown的工作原理图

Raphtory-DocBrown-Diagram

GraphDB是图的总管理员。一个GraphDB实例可以有N个分片。这些分片(也称为TemporalGraphParts)存储图的片段。如果你之前使用过Raphtory的Scala/Python版本,那么分片的概念与Raphtory中的分区相似,其中图的各个部分存储到分区中。在Doc Brown中向图中添加边或节点时,GraphDB将在分片内部搜索一个合适的位置来放置这些。在这个图中,有4个标记为S1、S2、S3、S4的分片(或分区)。总共构成了整个时间图,因此每个分片被称为"TemporalGraphPart"。

分片用于性能和分布的原因。在Raphtory中有多个分片并行运行,可以大大加快速度。在几秒钟内,你就能从你的时间图分析中看到结果。此外,你可以在多台机器上运行你的分析(例如,每台机器一个分片)。

运行Doc Brown 👨🏼‍🔬

API目前处于...变化中

image

但是,如果你想测试Raphtory的Rust原型,这里有一个快速入门指南。

运行LOTR示例 🧙🏻‍♂️

先决条件

确保你的操作系统上已安装Rust。以下是安装 Rust 的指南。

1. 设置Doc Brown

克隆Doc Brown仓库,并找到包含《魔戒》示例的examples目录。在examples/lotr目录下创建一个名为“Data”的文件夹,并将LOTR CSV数据下载到这个文件夹中。您可以在此处下载原始csv文件:这里

2. 运行Doc Brown

通过运行以下命令构建Doc Brown以确保它编译和构建

cargo build

如果您遇到任何链接器错误,请使用以下命令进行构建

cargo build --no-default-features

接下来,运行main.rs中的主函数,该函数从LOTR CSV文件创建一个图,展示书中不同角色之间的互动。为此,您需要处于lotr目录中,从根目录到此文件的文件路径是./examples/src/bin/lotr。一旦您在这里,运行此命令以运行LOTR示例

cargo run --bin lotr

您应该看到类似以下信息的输出,包括边和顶点的信息

Loaded graph from encoded data files ./examples/src/bin/lotr/data/graphdb.bincode with 139 vertices, 701 edges which took 0 seconds

Gandalf exists = true

恭喜,您已成功运行了第一个Rust版本的Raphtory图!

3. 运行测试

要在Doc Brown中运行测试,请返回到您的根目录并运行此命令

cargo test

代码示例

// Create your GraphDB object and state the number of shards you would like, here we have 2
let graph = GraphDB::new(2);

// Add vertex and edges to your graph with the respective properties
graph.add_vertex(
  src_id,
  time,
  &vec![("name".to_string(), Prop::Str("Character".to_string()))],
);

graph.add_vertex(
  dst_id,
  time,
  &vec![("name".to_string(), Prop::Str("Character".to_string()))],
);

graph.add_edge(
  src_id,
  dst_id,
  time,
  &vec![(
      "name".to_string(),
      Prop::Str("Character Co-occurrence".to_string()),
  )],
);

// We calculate a hash for the string "Gandalf" to be used as a unique identifier for Gandalf
let gandalf = utils::calculate_hash(&"Gandalf");

// Get the in-degree, out-degree and degree of Gandalf
let in_degree = graph.degree_window(gandalf, 0, i64::MAX, Direction::IN);
let out_degree = graph.degree_window(gandalf, 0, i64::MAX, Direction::OUT);
let degree = graph.degree_window(gandalf, 0, i64::MAX, Direction::BOTH);

文档

DocBrown具有文档,包括教程、解释和Rust文档。您可以在ReadTheDocs上找到它。

贡献

  • 安装指南安装Rust
  • 安装Python 3.10(推荐使用虚拟/conda环境)。
  • 安装构建/测试所需的pip包
pip install maturin pytest

社区

加入使用Raphtory为他们的图分析项目提供动力的开源爱好者日益增长社区!

  • 关注Slack以获取最新的Raphtory新闻和开发动态

  • 加入我们的Slack与我们聊天并解答您的问题!

关于Raphtory的文章和演讲

贡献者

由于Doc Brown仍处于原型阶段,我们欢迎任何贡献。如果您发现任何问题或希望自行处理一些问题,请访问问题页面。如果您有任何问题或想了解更多关于如何加入Raphtory的信息,请加入我们的Slack

许可

Raphtory根据Apache许可证的条款进行许可(请查看我们的LICENSE文件)。

依赖项

~14–32MB
~539K SLoC