【问题标题】:What is the best way to perform Aggregation / Denormalisation in a database?在数据库中执行聚合/非规范化的最佳方法是什么?
【发布时间】:2012-09-12 15:49:29
【问题描述】:

我们有一个数据库来存储点击次数、查看次数和达到的目标。正如您可以猜到的那样,数据库中的点击量达到了数百万,因此我们开始汇总数据以获得更快的统计数据。此时我们删除所有记录并在聚合表中写入新记录(您可以正确猜到您的 mysql 键正在迅速增加),但这是聚合我们的统计信息最简单的方法,不会出现任何错误。

我在互联网上搜索了数据库聚合。就像如何存储/非规范化数据一样,您可以快速选择正确的数据,而无需尊重多个表。但是我没有找到答案。

我还猜测 mysql 不是存储聚合数据的正确数据库,因为聚合数据会快速增长并且可以从头到尾选择(比如选择一整年的统计数据)。我的结论对吗?如果可以,你会推荐我什么数据库?

我也考虑将数据拆分到多个表中以获得多种解决方案,但我不确定这是否明智。

我的问题是:

  • 您使用什么聚合技术来保持聚合表的正确性?
  • 哪个数据库最适合存储聚合?
  • 是否应该将聚合拆分到多个表?还是应该制作一张通用表格来处理多种类型的数据请求?
  • 您如何处理速度问题?
  • 数据聚合有不同的名称吗?

很抱歉这个冗长的问题:)。我搜索了 SO 和互联网,并没有找到关于这些问题的任何好的答案。

【问题讨论】:

  • 你的“别告诉我这个,我做了这个”非常努力,但如果你发布你实际做了什么,你寻求信息的结果是什么,它确实会有所帮助,以及为什么它们不适合。照原样,您的问题可能会给您一些您在最好的情况下丢弃的答案,在最坏的情况下,它可能会被关闭为“过于宽泛”,甚至“没有建设性”,因为它可能是一个讨论主题//列表主题。
  • 我已经编辑了更多信息并放弃了态度:)

标签: database aggregation denormalization


【解决方案1】:

哪个数据库最适合存储聚合?

如果我理解你对“聚合”的定义,我会说你正在删除所有关系的东西,所以你的目标可能是一些 noSQL 解决方案。

我应该将聚合拆分到多个表吗?或者我应该制作一个可以>处理多种类型的数据请求的通用表?

不可能说,取决于你想要什么。您正在做的是去规范化,以便您可以更快地获取数据。但是如果你去规范化太多,你就找不到正确的数据。因此,每种情况确实是不同的。

您如何处理速度问题?

再次,不可能说。粗略:找出导致它们的原因,然后解决问题。

数据聚合有不同的名称吗?

看起来您正在构建某种“数据仓库”?有关更多信息,请参阅随机互联网(例如 http://en.wikipedia.org/wiki/Data_warehouse)。

【讨论】:

  • Nanne,宁可把每一个很难说的问题都讲出来,能否请您告诉我您遗漏了哪些信息?
  • 嗯,我没有这样做是因为我怀疑它可以在没有开始的情况下回答。你这样做的原因是因为速度问题,所以第一步是......我们“这样做”。然后,您可以从那里开始:您的 I/O 是否足够快,您的索引是否适合您,您可以减少一些大小等。对于拆分:取决于您需要保留哪些信息。我想你可以从你当前的数据库模式和聚合的最终目标开始。但这又取决于速度。对不起,我不能再清楚了:)
猜你喜欢
  • 2010-09-05
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
相关资源
最近更新 更多