大量简单记录的数据库和设计辅助

时间:2013-01-31 21:54:53

标签: database postgresql database-design

我希望得到一些帮助选择一个非常适合我必须编写的Web应用程序的数据库和布局(如下所述),考虑到大量的记录和事实他们需要,我有点难过能够以任何方式被查询。

Web应用程序基本上允许使用构成记录的任何条件组合查询大量记录,日期是唯一的必需项目。一条记录只包含八个项目(下面),但每天将有大约300万条新记录,只有很少的重复记录。数据将在当天实时插入数据库中。

我知道最感兴趣的是过去6个月 - > 1年的数据,但其余的仍然需要用于相同类型的查询。

我不确定哪种数据库最适合这种情况,也不确定如何构建它。该数据库将位于功能相当强大的服务器上。我基本上想从一个好的数据库设计开始,看看查询是如何执行的。然后,我可以判断我是否宁愿进行优化或更强大的硬件。我只是不想重做基础数据库设计,如果我们做了很多优化,我们有时间但不是$$$,这很好。

我们需要使用开源的东西,而不是像oracle那样的东西。现在我倾向于postgres。

记录包括:

1日期
2无符号整数
3无符号整数
4无符号整数
5无符号整数
6无符号整数
7文字16字符
8文本255字符

我打算在日期创建年度架构,月度表和索引记录表。

在分析使用模式后,我可能会添加另一个或两个索引,以查看最常用的查询。我可以在应用程序网站上做很多技巧,只要缓存流行的查询,什么不是,它真的是我需要帮助的数据库方面。字段8将具有一些重复值,因此我计划将该列作为要加入的查找表的id。除此之外,我猜其余的字段都将在一个月表中......

我可以将它分解为每周表格,我想也可以使用视图进行查询,这样应用程序就不必处理尝试汇总复杂查询....

无论如何,非常感谢任何反馈或帮助!

2 个答案:

答案 0 :(得分:1)

一些简短的建议......

  1. 每天300万条记录很多! (至少我是这么认为的,其他人甚至可能都不会眨眼。)我会尝试编写一个工具来插入虚拟记录,看看像Postgres这样的东西会有一个月的数据。

  2. 最好调查NoSQL解决方案,它为您提供开源+可扩展性。看看Couchbase和Mongo开始吧。如果您在线保存数月的数据进行实时查询,我不确定Postgres将如何处理9000万条记录。也许很棒,但也许不是。

  3. 考虑在您决定的任何系统中使用“离线”数据库。你把实时的东西保存在最好的机器上,它已经准备好了,但是你将旧的数据移到另一台更便宜的服务器上(读:慢)。通过这种方式,您可以随时回答查询,但有些查询比其他查询更快。

答案 1 :(得分:0)

根据我的经验,主要使用具有类似记录插入频率的Oracle(几十亿行表),您可以通过仔细分区数据(可能按日期,在您的情况下)和索引表来实现良好的Web应用程序查询性能。您对数据库体系结构的准确程度取决于很多因素,但网上有很多很好的资源可以帮助您获取这些内容。

听起来您的数据库相对平坦,所以也许其他数据库解决方案会更好,但Oracle对我来说一直都很好。