【问题标题】:Database for managing large volumes of (system) metrics用于管理大量(系统)指标的数据库
【发布时间】:2011-06-07 21:18:55
【问题描述】:

我正在考虑构建一个用于管理和报告网页性能统计数据的系统。我将收集比标准日志格式(大约 20 个指标)更多的统计信息,但与大多数类型的数据库应用程序相比,基本数据结构将非常简单。我的问题是,我将在每小时 100,000 条记录(即指标集)的区域内积累大量数据。

当然,资源非常有限!

为了可以与数据进行明智的交互,我需要将每个指标合并到一分钟的箱子中,按 URL 细分,然后对于超过 1 天的任何内容,合并到 10 分钟的箱子中,然后在 1周,每小时的垃圾箱。

在前端,我想提供最后一小时数据的视图(最好是图表),方便用户向上/向下钻取定义的 URL 层次结构(并不总是直接映射到URL 路径中表示的层次结构)并查看不同的时间范围。

与其自己编写所有这些代码并使用关系数据库,我想知道是否有可用的工具可以促进数据管理和报告。

我查看了Mondrian,但是我无法从我查看的文档中看到是否可以在保持数据的合并视图的同时删除更详细的信息。

RRDTool 在管理数据整合方面看起来很有前途,但在将数据集查询为多维/关系数据库方面似乎相当有限。

我还能看什么?

【问题讨论】:

  • 看来我不是唯一一个在看这些东西的人 - springerlink.com/content/p322w81715p8432l/abstract - 不幸的是,他们似乎没有把它变成一个可用的软件
  • 检查我的数学。您正在查看 240 万行/天和 8.76 亿行/年。对于 20 个指标,估计每行大约 90 个字节,你每年得到大约 80 个演出。对吗?
  • 而且,“是否可以在保持数据的合并视图的同时删除更细粒度的信息”是否意味着您计划对 100K 行/小时进行一些聚合,存储聚合并抛出离开原来的行? (或者,如果不扔掉,至少从数据仓库中删除它们?)
  • @Catcall:是的,我只能在最精细的级别上明智地存储一个小时的数据 - 我需要将汇总数据保留更长时间(时间取决于合并级别)
  • 您考虑过免费还是合同式网络分析? Google Analytics 对我来说是免费的,但对于每天 240 万的点击量来说可能不是免费的。

标签: database performance monitor olap time-series


【解决方案1】:

如果您准备自己管理 Graphite 实例(并且您可能还会使用 Statsd),那么您上面提到的Graphite 的答案是一个很好的解决方案。或者,还有许多其他托管应用程序开始提供这种功能。有StatHatLibrato Metrics,还有我自己公司的产品Instrumental。它绝对可以处理您在我们最低计划中要求的度量负载 - 我们有一个official client (Ruby)、一个Statsd-compatible proxy,以及一个记录在案的方式来自己发布到我们的收集器,以及一个很好的拉取方式如果您想在我们的图表之外构建自己的表示层,您的指标可以通过我们的 API 恢复。

【讨论】:

    【解决方案2】:

    icCube 中,很容易获得随时间变化的不同粒度的时间维度(有关“范围/带状”维度的示例,您可以查看here)。然后可以从 CSV 文件构建多维数据集。它的 XMLA 接口允许您使用任何符合 XMLA 的报告工具。您是否估计过您的典型数据集有多大?

    【讨论】:

    • 看起来很有趣 - 但这是一家确实需要花一些时间研究网络性能的公司!
    • 对不起,我不明白你的意思?
    • 加载他们网站的第一页花了将近 15 秒(我的互联网连接速度相当快)——我认为这很讽刺,因为我正在考虑衡量网站性能!跨度>
    • 了解 - 我猜是托管的暂时性问题;我没有看到这样的问题。
    【解决方案3】:

    我只会使用行业标准的数据库.. 就像 SQL Server.. 顶部有分析服务(如果您开始获得数百万行)

    【讨论】:

    • 亚伦,“百万”是什么意思?例如,我在 icCube 中使用了一个包含近 1 亿行且 RAM 小于 4GB 的多维数据集(未激活任何压缩)。
    【解决方案4】:

    Mondrian 要求您提供自己的 dbms; Mondrian 加上 PostgreSQL 可能值得一试。当然,使用您自己的 dbms,您可以删除任何您想要的内容。

    【讨论】:

      【解决方案5】:

      还是没找到合适的:(

      虽然我可以在 MySQL 中以这种速度接收数据,但当我尝试合并它/删除旧的低级数据时,它开始变得有点不稳定。所以我想我将不得不考虑在 DBMS 之上构建聚合层并切换到 noSQL 系统 - 并自己编写:(

      【讨论】:

        【解决方案6】:

        这个问答比较老,但我最近发现了一些看起来符合我要求的东西 - Graphite。仍然需要安装并运行 - 但它看起来很有希望。

        【讨论】:

          【解决方案7】:

          尝试使用开源分布式时序数据库 InfluxDB (http://influxdb.com/)。

          它有一个用于发布指标的宁静界面

          [
            {
              "name" : "hd_used",
              "columns" : ["value", "host", "mount"],
              "points" : [
                [23.2, "serverA", "/mnt"]
              ]
            }
          ]
          

          您可以使用 Grafana (http://grafana.org/) 轻松可视化您的指标

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-06-25
            • 2016-12-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-16
            • 1970-01-01
            相关资源
            最近更新 更多