数据库选择大数据量?

时间:2009-03-10 09:34:41

标签: database data-warehouse evaluation

我即将开始一个应该有一个相当大的数据库的新项目。

表的数量不会很大(<15),大多数数据(99%)将包含在一个大表中,这几乎只是插入/读取(没有更新)。

该表中的估计数据量将以每天 500.000条记录增长,我们应该至少保持 1年以便能够做各种报道。

需要(只读)复制数据库作为备份/故障转移,并且可能用于在高峰时段卸载报告。

我没有那些大型数据库的第一手经验,所以我问那些在这种情况下哪个DB是最佳选择。我知道 Oracle 是安全的选择,但如果有人有类似设置的 Postgresql Mysql 的经验,我会更感兴趣。

6 个答案:

答案 0 :(得分:27)

我在一个我们每天看到100K-2M新行的环境中使用过PostgreSQL,大多数都添加到一个表中。但是,这些行往往会缩减为样本,然后在几天内删除,所以我不能谈论超过~100M行的长期性能。

我发现插入性能非常合理,尤其是在使用批量COPY时。查询性能很好,虽然计划员的选择有时会让我困惑;特别是在做JOINs / EXISTS时。我们的数据库需要非常定期的维护(VACUUM / ANALYZE)才能保持平稳运行。我可以通过更仔细地优化autovacuum和其他设置来避免这种情况,如果你没有做很多DELETE,那就不是问题了。总的来说,在某些方面我觉得配置和维护比应该更加困难。

我没有使用Oracle,而MySQL只用于小型数据集,所以我无法比较性能。但是对于大型数据集,PostgreSQL可以工作

答案 1 :(得分:8)

你有“The Data Warehouse Toolkit”的副本吗?

建议有以下几点。

  1. 从符合或组织这些事实的维度中分离事实(可衡量的,数字的)值。一张大桌子并不是最好的主意。这是一个支配设计的事实表,加上一些小尺寸表,可以“切割和切割”事实。

  2. 将事实保存在简单的平面文件中,直到您想要进行SQL样式的报告。不要创建和备份数据库。创建和备份文件;仅为您必须从SQL执行的报告加载数据库。

  3. 尽可能创建摘要或额外数据集以供分析。在某些情况下,您可能需要将整个内容加载到数据库中。如果您的文件反映了您的表设计,那么所有数据库都有批量加载器工具,可以从文件中填充和索引SQL表。

答案 2 :(得分:6)

Google的BigTable databaseHadoop是两个可以处理大量数据的数据库引擎。

答案 3 :(得分:6)

关于Google BigTable的一些有趣观点有......

Bigtable与DBMS

  • 快速查询率
  • 无连接,无SQL支持,面向列的数据库
  • 使用一个Bigtable而不是使用许多规范化表
  • 在传统观点中甚至不是1NF
  • 旨在支持历史查询timestamp field =&gt;昨天这个网页是什么样的?
  • 数据压缩更容易 - 稀疏

我强调了联接和无SQL支持,因为您提到需要运行一系列报告。我不知道有多少(如果有的话)没有这样做,如果你在哪里使用它,你会在运行报告。

答案 4 :(得分:6)

数据量(每年200万条记录)并不是很大,应该与任何标准数据库引擎一起使用。

如果您不需要实时报告,情况会更容易。我在其他服务器上镜像和预聚合数据,例如每日批次。像S.Lott建议的那样,您可能希望阅读数据仓库。

答案 5 :(得分:5)

我们使用Firebird作为一个非常庞大的数据库(现在保存数据超过30年)并且它可以很好地扩展。

最好的是你有配置的属性,但不像你安装的那样,它可以很好地工作,而不需要在你可以使用它之前开始配置。