使用时间序列

时间:2015-10-09 10:59:15

标签: graph orientdb audit-logging

我有一个使用OrientDB作为持久层的应用程序取得了巨大成功,我在实现审计跟踪时已经到达了十字路口。

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

  • 时间戳(当行动发生时)
  • 演员(执行操作的实体)
  • 目标(正在采取行动的实体)
  • 操作(根据您的要求,这可以由许多子部件组成,例如前置和后置状态,说明等。)

一方面,各种实体之间的这种关系对于图形数据库来说是完美的。另一方面(再次IMO)图形数据库在时间上并没有出色的装备/易于操作。

我现在在两个想法之间徘徊:

创建时间序列

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

enter image description here

我会创建一个包含所有可操作属性的Audit顶点,然后我会在Edge和最近时间顶点之间创建Audit个关系节点,位于AuditActor之间以及AuditTarget之间。

enter image description here

建立直接关系

时间序列增加了需要考虑的复杂程度。假设审计需要按3个根标准进行搜索;按ActorTarget时间。因为时间几乎总是要求它确实使时间序列成为一个吸引人的解决方案。 在过去30天内获取Audit所有内容

但是,如果我想搜索一条与一致的查询,那么在过去的30天里,约翰就是Audit,那就是Actor我可以可以想象,只需忽略时间关系,只需使用Edge创建ActorTarget并带有时间戳的审核。

enter image description here

或者时间戳也可以是Edge的属性!

时间序列真的有什么优势,还是我只是添加了不必要的复杂功能?是否有更好的已经接受的图表数据库中审核事件的做法?

1 个答案:

答案 0 :(得分:0)

使用时间序列图表是有意义的,特别是如果您使用它来保存预先计算的聚合数据。这样,进行聚合查询,例如“给我最近三个月的行动数量”,这将是一项非常有效的操作。

您可以在此处找到有关此http://www.slideshare.net/LuigiDellAquila/orientdb-time-representation

的一些示例