【问题标题】:Making Cubism.js work with Rails app使 Cubism.js 与 Rails 应用程序一起工作
【发布时间】:2014-01-20 20:24:56
【问题描述】:

我需要为我的 rails 4 应用程序实现时间序列图。它不是流数据,但我需要 this 的外观和感觉,但没有动画。我开始查看文档,它似乎有点稀疏(或者我是个白痴:()

但是我在开始这个项目时需要一些帮助,并且在谷歌搜索后似乎找不到太多。有人创建了一个 gem here,但它又缺少任何文档。

wiki 讨论了石墨和立方体,提供数据的库,但这些是 python 库。我为什么要使用它们?

我应该从哪里开始?

到目前为止,我的 rails 应用程序已经创建了一个“可视化”脚手架。每个可视化都有一个名称、描述。我计划让“show”方法呈现图形以进行可视化。

我显示的数据是:

 x axis = time- scaled minute by minute 
 y axis = tv channels 
 metric to be shown = viewership stats (integers, decimals 2 sig figs)

数据将从 rails + mysql db 中提取。

我应该从哪里开始。非常感谢您对入门的任何帮助。

谢谢

【问题讨论】:

  • This question 可能会有所帮助。
  • 你需要决定是想要糟糕但强大的 Graphite-webapp 作为前端还是漂亮的 d3。 :)
  • @erbdex 我想使用 d3,但似乎使用 cubism.js 处理了很多繁重的工作。你能详细说明你所暗示的权衡吗?

标签: ruby-on-rails ruby d3.js graphite cubism.js


【解决方案1】:

石墨变得“容易”并固定在存储设备上。

很简单,因为可以以不同的粒度存储指标。您可以存储数据,例如-Datapoint every 10s for 1 week, Every 1min for 30days, Every 10min for 1year。这种设计花费了您大约百分之一的传统内存设计。这并不是真正在细节上的妥协,因为在 10 秒的粒度级别上,您几乎不会关心 5 个月前的事件。有那么多时间你会关注趋势,而不是实际价值

已修复,因为每个文件都占用一个固定的一次性存储空间。如果您测量更多的东西,您只会用完磁盘。

将指标发送到石墨非常简单且便宜。

像这样的一行代码-echo "yahoo.mysql.update.time 4 EPOCH" | nc 10.0.0.12 2003; 就是将指标发送到石墨的全部内容。这意味着团队中的每个开发人员都不需要 Graphite 内部的工作知识。此外,模块、程序、服务器和域可以对其身份进行前缀(),这使得信息在另一端真正易于管理。例如,这个特定的示例指标,具有最小设置将变为-beta.front-layer.ip-10-0-0-139.crawler.yahoo.mysql.update.time

您可以在 UDP 中发送指标,这使其成为一种不会给系统带来任何压力的即发即弃机制。剖析过程不需要对系统施加压力。海森堡会在这里微笑。

从 Graphite 中检索可能是目前最好的实现之一

This 会告诉您从 Graphite 的 URL API 中提取 json、csv、svg、gif 等数据的各种方法。还有很多多功能、即插即用的前端。

可扩展

石墨的占地面积非常小。谈到数字,我在具有 1000 PIOPS 的 EC2 m1.large 机器上每分钟执行 450K 指标。每分钟 450K 指标很多。(虽然这似乎是极限,我计划横向扩展架构)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2011-12-16
    • 2021-02-26
    • 1970-01-01
    相关资源
    最近更新 更多