- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个记录文章浏览量的表格。它有以下列:
id, article_id, day, month, year, views_count.
假设我想跟踪每篇文章的每日浏览量/每一天。如果我有 1,000 篇用户撰写的文章。行数将计算为:
365 (1 year) * 1,000 => 365,000
这还不算太糟糕。但是说吧。文章数量增长到1M。而随着时间的流逝,3年过去了。行数将计算为:
365 * 3 * 1,000,000 => 1,095,000,000
显然,随着时间的推移,这个表会不断增长。而且相当快。这会造成什么问题?或者我不应该担心,因为 RDBM 经常处理这样的情况?
我计划在我们的报告中使用浏览量数据。要么将其分解为数月甚至数年。我应该担心表中的 1B+ 行吗?
最佳答案
要问自己(或您的利益相关者)的问题是:您真的需要 1 天解决旧数据吗?
看看 MRTG 这样的产品, 通过 RRD , 做他们的记录。从理论上讲,您不会无限期地以最高分辨率存储所有数据,而是定期将它们聚合成越来越大的摘要。
这使您可以在最后 5 分钟内获得 1 秒的分辨率,然后在最后一个小时内获得 5 分钟的平均值,然后在一天内每小时,一个月内每天,依此类推。
因此,例如,如果一篇文章有一堆这样的记录:
year | month | day | count | type
-----+-------+-----+-------|------
2011 | 12 | 1 | 5 | day
2011 | 12 | 2 | 7 | day
2011 | 12 | 3 | 10 | day
2011 | 12 | 4 | 50 | day
然后您会定期创建一个新记录来汇总这些数据,在本例中只是当月的总计数
year | month | day | count | type
-----+-------+-----+-------|------
2011 | 12 | 0 | 72 | month
或者每天的平均值:
year | month | day | count | type
-----+-------+-----+-------+------
2011 | 12 | 0 | 2.3 | month
当然,您可能需要一些标志来指示数据的“汇总”状态,在这种情况下,我使用了“类型”列来查找“原始”记录和已处理的记录,允许您清除当天按要求记录。
INSERT INTO statistics (article_id, year, month, day, count, type)
SELECT article_id, year, month, max(day), sum(count), 'month'
FROM statistics
WHERE type = 'day'
GROUP BY article_id, year, month, type
(我还没有测试过那个查询,这只是一个例子)
关于mysql - 我应该担心表中的 1B+ 行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8385195/
有人知道 1u 在这个函数中的作用吗?以下函数接受一个整数并打印出它的位。我试图弄清楚的线是 putchar 线。我看到它需要一个无符号整数作为参数,并在二进制数大小的循环中迭代 1 或 0,这恰好发
我有一个 MySQL 数据库,存储了一个长而详细的时间序列(即,每分钟采样多次的多年测量值)。当我将此数据提供给客户端进行显示时,我想对数据进行下采样,这样我就不会向图表发送大量数据。例如,如果客户端
我有一个记录文章浏览量的表格。它有以下列: id, article_id, day, month, year, views_count. 假设我想跟踪每篇文章的每日浏览量/每一天。如果我有 1,000
写一个很长(200多行)的测试方法是不是太糟糕了?或者我应该把它分解成更小的方法? 最佳答案 您不应该(总体上)创建任何 200 行长的方法。如果你能打破它,就去做。 你在 200 行中做什么?单元测
我正在使用 SQL Server 2008-R2,但我也对更通用的答案感兴趣...... 我有一个包含数亿行的表,每行都有一个“DateModified”字段 (datetime2(7)) 现在我经常
SwiftMailer 需要一个电子邮件地址数组,可能包括名称作为数组的值: $message->setTo([ 'person1@example.org', 'person2@example
这个问题已经有答案了: MySQL - how many rows can I insert in one single INSERT statement? (8 个回答) 已关闭 3 年前。 我需要
我需要一个只有 n 行的 mysql 表。是否可以?有 1 行表的解决方案,但无法找到 n 行的任何内容。 最佳答案 如果您确实想在 mysql 中执行此操作,则必须编写一个触发器,每当插入行时都会调
我的日志文件很长,是否可以要求 grep 只搜索前 10 行? 最佳答案 管道的魔力; head -10 log.txt | grep 关于bash - 我可以只 grep 文件的前 n 行吗?,我
曾几何时,我有一张这样的 table : CREATE TABLE `Events` ( `EvtId` INT UNSIGNED NOT NULL AUTO_INCREMENT, `Al
我最近发现 dask旨在成为易于使用的python并行处理模块的模块。对我来说最大的卖点是它适用于 pandas。 在其手册页上阅读了一下之后,我找不到一种方法来完成这个琐碎的可并行化任务: ts.a
我刚刚安装并设置了一个 Doxygen 实例,但开箱即用时,它只能在代码中找到 TODO 标记,当标记在如下块中时: /** * @todo Foo */ 它似乎没有找到: // TODO Foo
我想知道这里有什么最佳实践。我正在制作一个表单,该表单具有通过 form-group 类分组的控件。这具有水平分组的控件,例如一行中的标题、名字、姓氏,然后下一行可以有日、月、年输入。 为了在一行中实
我想执行一个 MySQL 查询: SELECT * FROM table_A JOIN table_B on table_A.id = table_B.foreign_key …但我想返回表_B 中表
行不通,而嵌套
我一般不会嵌套像这样: The following: one two 我将使用 像那样嵌套反而。但是今天我用了但似乎 Emacs 和 Google Chrome 都会考虑外部 一看
我有这个代码 my $tmp = $q->param('owner'); $tmp =~ s/\s*//g; # remove white space from string my @owners
我有这些 div,每个都有相同的类 .onediv 和不同的 ID div1、div2、div3 我想使用 jquery 来改变它们的 css di
我正在阅读此文档:http://software.intel.com/en-us/articles/interactive-ray-tracing 我偶然发现了这三行代码: The SIMD vers
我需要通过调用 API 端点和数据格式为 JSON 来消耗大量数据(比如超过 100000 行)并将它们显示在 react 页面中。我正在使用 React-Table 开发逻辑,但想听听专家的意见,以
我正在尝试添加一条 GeoJSON 线来显示 A 点和 B 点之间的汽车方向(就像在 mapbox-gl-js 的官方文档中那样(https://www.mapbox.com/mapbox-gl-js
我是一名优秀的程序员,十分优秀!