我是一家电信公司的独立开发人员,并且在一些有时间回答的人的数据库设计建议之后。所需的数据库设计建议
我每天插入一张~2百万行的表格中,这些表格随后会按月存档和压缩。每个月表包含约15,000,000行。虽然这是逐月增加。
对于上面做的每一个插入操作,我将来自属于一起的行的数据组合起来,并创建另一个“相关”表。此表格目前尚未归档,因为我需要确保不会错过关联表格的更新。 (希望是有道理的)尽管一般来说这些信息在处理几天之后应该保持相当的静态。
以上所有内容均完美运行。然而,我的公司现在希望对这些数据执行一些统计数据,而这些数据表太大而无法在合理的时间内提供结果。即使设置了适当的索引。
所以我想以上所有我的问题很简单。我应该编写一个脚本,将来自相关表的数据分组为较小的表。还是应该将查询结果集存储在类似于memcache的东西中?我已经在使用mysqls缓存,但是由于对数据存储时间的控制有限,所以它不能很好地工作。
主要优点我可以看到使用类似的memcache的:
- 没有阻止我的相关表的查询已兑现之后。
- 在后端收集器 和前端处理器之间共享收集的数据具有更大的灵活性。 (也就是说,自定义报告可以写入 后端,并将这些结果存储在高速缓存中,然后 与任何想查看此报告数据的人共享)
- 如果我们启动了冗余和可伸缩性与大量客户分享这些数据。
主要缺点,我可以看到使用类似的memcache的:如果机器重新启动/刷新缓存
- 数据不具有持续性。
使用MySQL
- 持久数据的主要优点。
- 更少的代码变化(尽管加 类似的memcache是微不足道的 反正)
使用MySQL
- 的主要缺点有我想要存储提供了一个新的每次定义表模板一组分组数据。
- 必须编写一个循环遍历相关数据并填充这些新表的程序。
- 随着数据的不断填充,潜在的增长速度可能会更慢。
道歉了相当长的问题。无论如何,这帮助我在这里写下这些想法,任何有关处理这类问题的建议/帮助/经验都将不胜感激。
非常感谢。
艾伦
欢迎来到StackOverflow。长期的问题通常是很好的,因为它们往往表现出一些重要的事情,1)你实际上关心的是得到一个好的答案,而不是'给我编码'2)他们倾向于拥有所有(或者至少大部分)的信息需要准确回答这个问题,毕竟垃圾在==垃圾出来。 – UnkwnTech 2010-05-27 08:48:56