2011-09-14 45 views
1

在我们公司,我们从我们的服务器(负载,磁盘使用情况等)收集统计数据的应用程序压缩大型数据集。由于数据量很大,我们并不需要所有的数据,所以我们有一个“压缩”程序,它接收原始数据并计算最小值。最大值和平均值,将这些新值存储在同一个表中,并在几周后删除旧值。处理/在多个表

现在我任务是重写这个压缩例程和新程序必须保持我们一年有所有未压缩的数据在一个表和“压缩”数据在另一个表。我现在主要关心的是如何处理连续写入数据库的数据以及是否使用“事务表”(我自己的术语,因为我不能提出更好的表达式,我不是在谈论提交/回滚事务功能)。

截止目前,我们的数据采集器将所有信息插入名为ovak_result的表中,并且压缩数据将以ovak_resultcompressed结尾。但是,创建一个名为ovak_resultuncompressed的表格并仅将ovak_result用作“临时存储”,是否有任何特定的优点或缺点? ovak_result将保持最低限度这将是很好的压缩程序,但我需要从一个表打乱所有的数据到另一个不断,并且会有不断的阅读,写作和ovak_result删除。

是否有在MySQL任何机制来处理这类事情?

请注意:我们谈论的是相当大的数据集在这里的未压缩表(约100 M行的压缩表约1-10 M行)另外,我可以做很多我想要的东西。如果您有涉及MySQL配置或硬件设置的任何提示或想法,请随身携带。)

回答

0

尝试阅读关于ARCHIVE storage engine的书签。


请重新澄清。好吧,我的描述没有得到你的意思。仔细阅读,我看到你提到了最小,最大和平均值。

所以,你想要的是一个物化视图,更新为大型数据集聚合计算。一些RDBMS品牌(例如Oracle)具有此功能,但MySQL不。

试图解决此问题的一个实验性产品称为FlexViews(http://code.google.com/p/flexviews/)。这是一个开源的MySQL伴侣工具。您将查询定义为针对原始数据集的视图,FlexViews会持续监视MySQL二进制日志,并且当它看到相关的更改时,会更新视图中需要更新的行。

这是非常有效的,但它可以用作视图的查询类型有一些限制,并且它也是用PHP代码实现的,所以如果你有更高的流量更新你的速度还不够快基表。

+0

有趣的引擎,但不幸的是远离我所需要的。缺少索引会使它很难使用,因为我需要加入一些表格,至少需要更新函数。 澄清我关于压缩的讨论;我所描述的“压缩”(应该称之为求平均值)是为了使其更加可用(例如,在查看几个月的趋势时,图形图表变得更加混乱),而不是保留磁盘空间。性能优先于磁盘空间。 – Lobo

+0

FlexViews看起来非常有趣,尽管我还不确定它是否是我的问题的答案,但您的答案给了我不少的想法,并在过程中帮助我,所以我将这称为接受的答案。非常感谢:) – Lobo

+0

我很乐意提供帮助。祝你的项目好运! –