Skip to content

TuGraph-family/tugraph-analytics

Repository files navigation

Guide

Star Fork Contributor Commit Docker License Release CN EN Blog

🌐️ English | 中文

Introduction

TuGraph Analytics (alias: GeaFlow) is a distributed graph compute engine developed by Ant Group. It supports core capabilities such as trillion-level graph storage, hybrid graph and table processing, real-time graph computation, and interactive graph analysis. Currently, it is widely used in scenarios such as data warehousing acceleration, financial risk control, knowledge graph, and social networks.

For more information about GeaFlow: GeaFlow Introduction

For GeaFlow design paper: GeaFlow: A Graph Extended and Accelerated Dataflow System

Features

  • Distributed streaming graph computation
  • Hybrid graph and table processing (SQL+GQL)
  • Unified stream/batch/graph computation
  • Trillion-level graph-native storage
  • Interactive graph analytics
  • High availability and exactly once semantics
  • High-level API operator development
  • UDF/graph-algorithms/connector support
  • One-stop graph development platform
  • Cloud-native deployment

Quick start

Step 1: Package the JAR and submit the Quick Start task

  1. Prepare Git、JDK8、Maven、Docker environment。
  2. Download Code:git clone https://github.com/TuGraph-family/tugraph-analytics
  3. Build Project:./build.sh --module=gealfow --output=package
  4. Test Job:./bin/gql_submit.sh --gql geaflow/geaflow-examples/gql/loop_detection_file_demo.sql

Step 2: Launch the console and experience submitting the Quick Start task through the console

  1. Build console JAR and image (requires starting Docker):./build.sh --module=gealfow-console
  2. Start Console:docker run -d --name geaflow-console -p 8888:8888 geaflow-console:0.1

For more details:Quick Start

Development Manual

GeaFlow supports two sets of programming interfaces: DSL and API. You can develop streaming graph computing jobs using GeaFlow's SQL extension language SQL+ISO/GQL or use GeaFlow's high-level API programming interface to develop applications in Java.

Real-time Capabilities

Compared with traditional stream processing engines such as Flink and Storm, which use tables as their data model for real-time processing, GeaFlow's graph-based data model has significant performance advantages when handling join relationship operations, especially complex multi-hops relationship operations like those involving 3 or more hops of join and complex loop searches.

total_time

Why using graphs for relational operations is more appealing than table joins?

Association Analysis Demo Based on GQL:

--GQL Style
Match (s:student)-[sc:selectCource]->(c:cource)
Return c.name
;

Association Analysis Demo Based on SQL:

--SQL Style
SELECT c.name
FROM course c JOIN selectCourse sc 
ON c.id = sc.targetId
JOIN student s ON sc.srcId = s.id
;

Contribution

Thank you very much for contributing to GeaFlow, whether bug reporting, documentation improvement, or major feature development, we warmly welcome all contributions.

For more information: Contribution.

Contact Us

You can contact us through the following methods:

contacts

If you are interested in GeaFlow, please give our project a ⭐️ .

Acknowledgement

Thanks to some outstanding open-source projects in the industry such as Apache Flink, Apache Spark, and Apache Calcite, some modules of GeaFlow were developed with their references. We would like to express our special gratitude for their contributions. Also, thanks to all the individual developers who have contributed to this repository, which are listed below.

Made with contrib.rocks.