Graph 使用时间序列在OrientDB中记录事件审核

Graph 使用时间序列在OrientDB中记录事件审核,graph,orientdb,audit-logging,Graph,Orientdb,Audit Logging,我有一个应用程序,它使用OrientDB作为持久性层,取得了巨大的成功,我在考虑实施审计跟踪时遇到了一个十字路口 IMO审计应包括4个核心属性: 时间戳(操作发生时) 参与者(执行动作的实体) 目标(所针对的实体) 动作(根据您的要求,它可以由许多子部分组成,如前状态和后状态、描述等。) 一方面,各种实体之间的这种类型的关系非常适合图形数据库。另一方面(同样是IMO),图形数据库在时间方面并没有非常好的配置/易于操作 我现在在两个想法之间左右为难: 创建一个时间序列 基本上,其想法是在数据库

我有一个应用程序,它使用OrientDB作为持久性层,取得了巨大的成功,我在考虑实施审计跟踪时遇到了一个十字路口

IMO审计应包括4个核心属性:

  • 时间戳(操作发生时)
  • 参与者(执行动作的实体)
  • 目标(所针对的实体)
  • 动作(根据您的要求,它可以由许多子部分组成,如前状态和后状态、描述等。)
一方面,各种实体之间的这种类型的关系非常适合图形数据库。另一方面(同样是IMO),图形数据库在时间方面并没有非常好的配置/易于操作

我现在在两个想法之间左右为难:

创建一个时间序列 基本上,其想法是在数据库中创建一个级联时间序列,该序列表示分段顶点节点中的时间

我将创建一个
Audit
顶点,该顶点包含我的所有可操作的属性,然后我将在
Audit
和最近的时间顶点节点之间创建一个
关系,在
审核
参与者
之间,以及
审核
目标
之间

建立直接的关系 时间序列增加了需要考虑的复杂性。假设审计需要按3个根标准进行搜索;通过
参与者
目标
时间。因为时间几乎总是一项要求,所以时间序列确实是一个吸引人的解决方案。给我过去30天所有的
审计

但是,如果我想搜索一个类似于“给我过去30天的
审计”的查询,john是
演员。可以想象的是,我可以忽略时间关系,只创建带有
Edge
的审计,给
Actor
和带有时间戳的
Target

或者时间戳也可以是
边缘的属性


时间序列真的有什么好处吗?还是我只是增加了不必要的复杂性?是否有更好的已被接受的在图形数据库中审核事件的做法?

使用时间序列图将有意义,尤其是当您使用它保存预先计算的聚合数据时。这样,执行聚合查询(如“给我过去三个月内的操作数”)将是一个非常有效的操作

在这里你可以找到一些关于这个的例子