NoSQL - 如何为数据范围生成直方图

时间:2014-02-24 20:12:07

标签: sql nosql neo4j amazon-simpledb

我们公司需要存储和计算与内容创建,审核/批准以及文档发布工作流程相关的分析。我们正在寻找像Amazon SimpleDB这样的东西。

我们将存储与用户在系统中执行的操作相对应的“事件”。例如:

  • [用户B]要求[文件B]在[时间]由[用户A]
  • 审核
  • [用户A]在[时间]
  • 批准[文件B]
  • [用户B]在[时间]
  • 编辑[文件B]
  • [用户B]在[时间]
  • 发布[文件B]

然后我们希望能够在给定的时间段内创建此活动的图形(直方图/线图)。例如:

  • 编辑与时间
  • 批准与时间
  • 发布与时间
  • 批准与发布时间

在SQL中,我假设这可以通过将结果分组到“桶”来完成。但是,我很难弄清楚如何使用像AWS Simpledb这样的NoSQL数据库来实现这一点,而无需使用Hadoop / Map Reduce对此处理进行批处理。这必须是实时的,因此进行任何批处理都是不可能的。

我们也在关注Neo4J,所以如果有人有Neo的解决方案,我也会感兴趣。

由于

3 个答案:

答案 0 :(得分:3)

在Neo4j的Cypher中,您可以使用CASE / WHEN和聚合语法将内容收集到存储桶中。

答案 1 :(得分:2)

你会使用"动作节点"模拟批准,发布,编辑,以便您可以连接两个以上的东西。

对于建模时间,我建议订购事件的有序列表,甚至是时间树:http://docs.neo4j.org/chunked/milestone/cypher-cookbook-path-tree.html

我创建了一个小型GraphGist供您显示,请查看:

http://gist.neo4j.org/?9263624

答案 2 :(得分:0)

我认为数据驱动的可视化更适合您的场景。

我指的是使用MongoDB进行存储的D3。

Cube收集用于存储在MongoDB数据库中的带时间戳的事件。

Cubism.js(D3插件)为您进行可视化。