2010-06-05 35 views
2

我有一个数据库,其中有一个表在一个表中有数十亿行,我有过去5年的数据。我试图以各种可能的方式优化数据,但延迟并没有减少。我知道有一些解决方案,比如使用水平分割和垂直分割。但我不确定任何开源实现和开发所需的开发时间。有没有人有使用这种系统的经验?对大型数据库的替代

谢谢。

+0

您能否描述您拥有的数据类型(单行有多大)以及您希望用作密钥的每列的数量。 – 2010-06-06 10:58:41

回答

5

没有用例,没有人可以提出任何建议。当你的数据量级为“Sagan-esque”时,用例就非常重要,因为正如你可能发现的那样,根本没有任何“通用”技术可行。这些数字太大了。

所以,你需要清楚你想要用这些数据做什么。如果答案是“一切”,那么你的表现会变慢,因为你无法优化“一切”。

编辑:

那么,这是什么? 2或3?结果集有多大?你需要访问所有5年还是上个月?你真的需要所有的细节,还是可以总结?你需要分类吗?钥匙够了吗?数据多久更新一次?数据更新后需要在线多久?数据需要什么样的服务级别? 24x7x7? 9-5x5?一天的旧数据可以吗?谁在使用这些数据?互动用户?批量报告?向外部实体出口?

+0

我想基于表中的两个三键来优化读取性能。 – Boolean 2010-06-05 00:22:00

+0

“萨根式”。我想我可能不得不使用那个。 – 2010-06-05 22:47:25

1

Postgress支持partioning表。如果没有别的阅读他们的文档。回答Hartung的问题对于达成解决方案将有很大帮助。在平面文件

3

数据仓库阅读起来......

  1. 捕获数据。做不是加载数据库。

  2. 设计一个合适的星型架构架构。

  3. 写程序来做尺寸一致性;那些程序只会将维度更改加载到数据库。

  4. 编写程序,将选定的平面文件记录加载到带有维度副本的数据集市中。

负载原始数据的数据库。永远。

0

这是多少GB的数据?这让我想起LinkIn的故事,以及如何快速计算社交网络,他们不得不在内存中运行所有内容。根据SO播客的说法,StackOver本身运行在拥有大量内存的服务器上,并且在任何时候都拥有内存中的大部分数据库。

也让我想起谷歌的问题,它需要定制软件和大量廉价机器一起工作。