Apache AGE:基于PostgreSQL的图形数据库

2021-03-02 08:20:08

Apache AGE是提供图形数据库功能的PostgreSQL扩展。 AGE是A Graph Extension的首字母缩写,它受PostgreSQL 10的Bitnine分支AgensGraph的启发,AgensGraph是一个多模型数据库。该项目的目标是创建可以处理关系和图形模型数据的单一存储,以便用户可以将标准ANSI SQL与Graph查询语言openCypher一起使用。

以下是与PostgreSQL架构和后端相关的AGE架构的简要概述。每个组件都在PostgreSQL事务缓存层和存储层上运行。

AGE目前正在为PostgreSQL 11版本开发,并将在2021年支持PostgreSQL 12和13,以及所有将来的Pos​​tgreSQL版本。

AGE可以同时查询多个图形。这将允许用户使用cypher一次查询两个或多个图形,决定如何合并它们并获得所需的查询输出。

AGE将得到增强,以支持AgensGraph的所有关键功能(具有图数据库功能的PostgreSQL分支扩展)。

*在2021年的更高版本中将添加对PostgreSQL 12+和VLE的支持。

Docker镜像在Docker Hub上可用,并且基于官方的PostgreSQL 11 Debian和Alpine镜像。

Warning: Can only detect less than 5000 characters

如果问题明显过时并且适用于自打开以来发生了根本变化的问题或组件,则将其解决为“不是问题”

如果这是一个连贯的问题,但是有明确的迹象表明对此采取行动没有支持或兴趣,那么请解决此问题。

搜索JIRA如何搜索JIRA中存在的问题:基本:在右上角的搜索框中键入查询(请注意,这将返回所有项目的结果)

如果在逻辑上已经存在类似的问题,则请参与有关现有JIRA票证和请求请求的讨论,而不是创建新的票证和PR。

将.patch文件发送给审阅者。电子邮件的标题必须为" [评论] [JIRA票务名称在此处]问题摘要" (例如,[Review] [JIRA Ticket Name]支持更改图形名称)。如果提交不涉及JIRA上的任何问题,请省略" [JIRA票务名称在这里]"。或制作JIRA门票

电子邮件正文将如下所示:第一行是基本提交的哈希码,而不是您已创建的提交。

回复同一主题中的最后一封电子邮件以发送评论。

回复同一主题中的最后一封电子邮件,以发送更新的补丁和意见。

在这种情况下,将通过以下过程将提交合并到master分支中。通过运行以下命令,将当前的工作分支更改为本地master分支。

通过运行以下命令(或产生相同结果的任何其他命令),使本地主分支保持最新状态。

通过运行以下命令,将当前工作分支更改为提交所驻留的本地任务分支。

通过运行以下命令,将当前的工作分支更改为本地master分支。

通过运行以下命令,将本地任务分支合并到本地master分支中。

保留提交历史记录有时,在逻辑上分开执行单个任务的多个提交,有助于开发人员掌握为该任务完成的工作的逻辑过程。如果提交与快速转发策略合并,则提交不会分组在一起。因此,要对提交进行分组,请创建一个显式合并提交。在这种情况下,除了最后一步(步骤7)以外,所有提交都将通过与上述相同的过程合并到master分支中。对于最后一步,通过运行以下命令,将使用显式合并提交将本地任务分支合并到本地主分支中。如果省略--no-ff选项,则该命令将执行快进合并。例如,以上过程将导致以下提交历史记录。 (这是从apache / incubator-age捕获的。)有一个明确的合并提交,69f3b32。每个显式合并提交将相关的提交分组。 * 9779a0b实施属性和元素访问运算符* 69f3b32实施+(连接字符串)运算符| \ | * ab50b5c支持字符串运算符中的浮点精度| * cceebcd实施字符串运算符| / * 6c36b80修复了当agtype_build_map()将agtype作为键时断言失败* 304bc68重构bool_to_agtype()

注意:在显式合并提交和显式合并提交的父分支(位于master分支上)之间没有提交。这是通过在合并之前进行变基来完成的。有关编码样式指南的完整列表,请参考AGE git存储库中clang-format.5中的样式设置。每个缩进级别使用4个空格。 (无制表符)有关switch语句,请参见下文。开关(后缀){case' G&#39 ;: case' g&#39 ;: mem<< == 30;休息; case&#39 ;: case&#39 ;: mem<< == 20;休息; case&#39 ;: case&#39 ;: mem;< == 10; //达到默认值:break;}

除长度超过79个字符的字符串外,行长限制为79列。所有花括号仅在自己的行上。见下文。 int function(int x){函数体} struct s {int a; int b;} if(x是true){我们进行a} else if(y是true){我们进行b} else {我们进行c我们进行d}

如果if / else语句的所有正文都包含一行,请省略花括号。见下文。如果(x是真实的)我们做aif(y是真实的)我们做belse我们做c

一个例外是do语句。请参见以下示例。下划线名称约定用于所有变量,函数,结构,枚举和定义宏。仅将typedef用于struct和enum。不得将其用于指针类型。对于多行注释,请使用C样式多行注释。对于单行注释,请使用C ++样式的单行注释。见下文。 / * *此函数*执行x * / void f(void){//这是为了检查...(y是true)我们执行b / * *我们需要在此处执行此操作*由于... * / 为了 (;;)}

不要对齐宏的主体。如果更改名称或添加新条目,则可能会产生不必要的差异,这使您很难找到实际被修改的行

当您编写跨多行的宏时,请不要对齐\字符。如果宏的主体被修改,则可能会产生不必要的差异,这使您很难找到实际被修改的行。

//执行此操作#定义f()\ do \ {\ run(); \} while(0)//不是this#define f()\ do \ {\ run(); \}而(0)

对于换行符,仅允许\ n,不允许\ r \ n和\ r。 如果将指针变量(包括List *)用作条件,这意味着将其评估为true / false值,请按原样使用它。 不要与NULL(或NIL)进行显式比较。 对于否定,放! 在它之前。 传递给errmsg()的错误消息以小写字母开头。 传递给errdetail()/ errhint()的错误详细信息/提示消息以大写字母开头。 在Ubuntu上的命令示例如下: 在使用Apache AGE(孵化)时获得帮助,或在我们的邮件列表中为该项目做贡献: