GraphAr: Apache孵化器中的开源图数据存储与检索格式

Ray

GraphAr:为图数据存储与检索提供开放标准

在当今数据驱动的世界中,图数据处理已成为众多实际应用的重要基石。从社交网络分析到数据挖掘,从网络路由到科学计算,图数据无处不在。然而,随着图数据规模和复杂度的不断增长,如何高效地存储、检索和处理这些数据成为了一个亟待解决的问题。Apache孵化器中的GraphAr项目应运而生,旨在为这一挑战提供一个开放、标准化的解决方案。

GraphAr项目简介

GraphAr(Graph Archive的简称)是一个正在Apache孵化器中孵化的开源项目。它的目标是为各种应用和系统(包括内存存储、外部存储、数据库、图计算系统和交互式图查询框架等)提供一种便捷高效的图数据构建和访问方式。

GraphAr概览

GraphAr项目主要包含两个核心组件:

  1. GraphAr格式:一种用于存储图数据的标准化、与系统无关的格式。
  2. GraphAr库:一套用于读取、写入和转换GraphAr格式数据的库。

通过使用GraphAr,开发者和研究人员可以:

  • 以系统无关的方式存储和持久化图数据
  • 使用提供的库轻松访问和生成GraphAr格式数据
  • 利用Apache Spark快速操作和转换GraphAr格式数据

GraphAr格式详解

GraphAr格式专为存储属性图而设计。它使用元数据记录图的所有必要信息,并以分块的方式维护实际数据。

在GraphAr中,一个属性图由顶点和边组成。每个顶点包含一个唯一标识符,以及:

  • 描述顶点类型的文本标签
  • 一组属性,每个属性可以表示为键值对

每条边同样包含一个唯一标识符,以及:

  • 出发顶点(源点)
  • 到达顶点(目标点)
  • 描述两个顶点之间关系的文本标签
  • 一组属性

下图展示了一个包含两种类型顶点("person"和"comment")和三种类型边的属性图示例:

属性图示例

GraphAr中的顶点存储

GraphAr采用逻辑表和物理表相结合的方式来存储顶点数据。

逻辑顶点表

每种类型的顶点(具有相同标签)构成一个逻辑顶点表。在这个表中,每个顶点被分配一个从0开始的全局索引(称为内部顶点ID),对应于该顶点在逻辑顶点表中的行号。

顶点逻辑表

物理顶点表

为了提高读写效率,逻辑顶点表会被划分为多个连续的顶点块。同时,为了支持随机访问,相同标签的顶点块大小是固定的。此外,逻辑表的列会被划分为几个列组,以支持只访问所需属性而不读取所有属性文件,并且可以在不修改现有文件的情况下为顶点添加属性。

顶点物理表

GraphAr中的边存储

GraphAr同样使用逻辑表和物理表来存储边数据。

逻辑边表

对于维护一种类型的边(具有相同的源标签、边标签和目标标签),会建立一个逻辑边表。为了支持快速从图存储文件创建图,逻辑边表可以以类似CSR/CSC的方式维护拓扑信息,即边按源顶点或目标顶点的内部顶点ID排序。

边逻辑表

物理边表

与顶点表类似,逻辑边表也被划分为若干子逻辑表,每个子逻辑表包含源(或目标)顶点在同一顶点块中的边。根据分区策略和边的顺序,GraphAr中的边可以按照四种类型之一存储:

  1. ordered_by_source
  2. ordered_by_dest
  3. unordered_by_source
  4. unordered_by_dest

边物理表示例1

边物理表示例2

GraphAr库

GraphAr提供了一系列库,用于读取、写入和转换GraphAr格式文件。目前支持以下编程语言和环境:

  • C++库
  • Scala with Spark库
  • Java库(开发中)
  • Python with PySpark库(开发中)

这些库为开发者提供了便捷的API,使得操作GraphAr格式数据变得简单高效。

社区参与和贡献

作为一个Apache孵化器项目,GraphAr欢迎来自社区的贡献。如果您对GraphAr感兴趣,可以通过以下方式参与:

结语

GraphAr项目为图数据的存储和检索提供了一个开放、标准化的解决方案。通过提供统一的数据格式和便捷的操作库,GraphAr有望成为连接各种图处理系统和应用的桥梁,为图数据的管理和分析带来新的可能。

随着项目在Apache孵化器中的不断发展,我们期待看到GraphAr在更多领域发挥作用,推动图数据处理技术的进步。无论您是开发者、研究人员还是数据科学家,都欢迎加入GraphAr社区,共同探索图数据的无限潜力。🚀📊🔗

avatar
0
0
0
最新项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号