Apache AGE 数据库是建立在 Apache TinkerPop 之上的分布式图数据库。在 Apache AGE 中,数据存储在底层的分布式计算框架 Apache Spark 中,以适应大规模图数据的存储和查询。
具体来说,数据通常按照图的边和顶点的方式进行存储。在 Apache AGE 中,边和顶点都可以使用属性列表来存储相关信息,每个属性都存储为一个键值对。例如,我们可以使用下面的 Python 代码将一组顶点添加到 AGE 图中:
from age.core import Graph
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
vertices = [{"id": "v1", "name": "Alice"}, {"id": "v2", "name": "Bob"}]
vertexRDD = spark.sparkContext.parallelize(vertices)
graph = Graph() \
.add_vertices(vertexRDD, "id", "name") \
.add_edges(edgeListRDD)
在上面的代码中,我们首先创建了一个 Spark 会话,然后使用 Python 字典定义了两个顶点,并通过 SparkContest 对这些顶点进行并行化处理。最后,我们使用 Graph 对象的方法将这些顶点添加到 AGE 图中,并指定“id”和“name”属性作为顶点的键值对。
类似地,边也可以通过以下方式添加到 AGE 图中:
edges = [("v1", "v2", "likes"), ("v2", "v1", "dislikes")]
edgeRDD = spark.sparkContext.parallelize(edges)
graph = graph.add_edges(edgeRDD, src_label="person", dst_label="person", src_property="name", dst_property="name", edge_label="relationship")
该代码将两个边添加到 AGE 图中,并指定了源顶点和目标顶点的标签和属性,以及边的标签。
综上所述,Apache AGE 中的数据实际存储在 Apache Spark 中,以图的边和顶点的形式进行存储,并使用属性列表保存相关信息。