我们公司需要存储和计算与文档内容创建、审查/批准和发布工作流相关的分析。我们正在研究类似于AmazonSimpleDB的东西。
我们将存储与用户在系统中采取的操作相对应的"事件"。例如:
- [用户B]要求[用户A]在[时间]审阅[文件B]
- [用户A]在[时间]批准了[文件B]
- [用户B]在[时间]编辑了[文档B]
- [用户B]在[时间]发布[文档B]
然后我们希望能够在给定的时间段内创建该活动的图形(直方图/折线图)。例如:
- 编辑与时间
- 批准与时间
- 出版物与时间
- 批准与发布与时间
在SQL中,我认为这将通过将结果分组到"bucket"中来完成。然而,我很难弄清楚如何使用像AWS Simpledb这样的NoSQL数据库来实现这一点,而不使用Hadoop/Map Reduce来批处理。这必须是实时的,所以进行任何批处理都是不可能的。
我们也在研究Neo4J,所以如果有人有Neo的解决方案,我也会感兴趣。
感谢
在Neo4j的Cypher中,您可以使用CASE/WHEN和聚合语法将东西收集到桶中。
您可以使用"操作节点"对审批、发布和编辑进行建模,这样您就可以将两个以上的内容连接到它上。
对于建模时间,我建议使用有序的事件列表,甚至时间树:http://docs.neo4j.org/chunked/milestone/cypher-cookbook-path-tree.html
我创建了一个小GraphGist供您展示,请查看:
http://gist.neo4j.org/?9263624
我认为数据驱动的可视化更适合您的场景。
是的,我指的是D3与MongoDB的存储。
Cube收集带有时间戳的事件,以存储在MongoDB数据库中。
Cubism.js(一个D3插件)为您提供可视化功能。