我有一个使用OrientDB作为持久层的应用程序取得了巨大成功,我在实现审计跟踪时已经到达了十字路口。
IMO审计应包括4个核心属性:
一方面,各种实体之间的这种关系对于图形数据库来说是完美的。另一方面(再次IMO)图形数据库在时间上并没有出色的装备/易于操作。
我现在在两个想法之间徘徊:
基本上,我们的想法是在数据库中创建一个级联时间序列,表示分段顶点节点中的时间。
我会创建一个包含所有可操作属性的Audit
顶点,然后我会在Edge
和最近时间顶点之间创建Audit
个关系节点,位于Audit
和Actor
之间以及Audit
和Target
之间。
时间序列增加了需要考虑的复杂程度。假设审计需要按3个根标准进行搜索;按Actor
,Target
和时间。因为时间几乎总是要求它确实使时间序列成为一个吸引人的解决方案。 在过去30天内获取Audit
所有内容。
但是,如果我想搜索一条与一致的查询,那么在过去的30天里,约翰就是Audit
,那就是Actor
。我可以可以想象,只需忽略时间关系,只需使用Edge
创建Actor
和Target
并带有时间戳的审核。
或者时间戳也可以是Edge
的属性!
时间序列真的有什么优势,还是我只是添加了不必要的复杂功能?是否有更好的已经接受的图表数据库中审核事件的做法?
答案 0 :(得分:0)
使用时间序列图表是有意义的,特别是如果您使用它来保存预先计算的聚合数据。这样,进行聚合查询,例如“给我最近三个月的行动数量”,这将是一项非常有效的操作。
您可以在此处找到有关此http://www.slideshare.net/LuigiDellAquila/orientdb-time-representation
的一些示例