【发布时间】:2013-01-16 03:34:39
【问题描述】:
我希望在选择非常适合我必须编写的 Web 应用程序的数据库和布局方面获得一些帮助(如下所述),考虑到大量记录和它们需要的事实,我有点难过可以通过任何方式查询。
Web 应用程序基本上允许使用构成记录的任何条件组合查询大量记录,日期是唯一的强制性项目。一条记录仅包含八项(如下),但每天将有大约 300 万条新记录,重复记录很少。当日数据会不断实时插入数据库中。
我知道最大的兴趣将是过去 6 个月 -> 1 年的数据,但其余数据仍需要用于相同类型的查询。
我不确定哪个数据库最适合这个,也不知道如何构建它。数据库将位于相当强大的服务器上。我基本上想从一个好的数据库设计开始,看看查询是如何执行的。然后我可以判断我是否愿意进行优化或投入更强大的硬件。我只是不想重做基本数据库设计,如果我们进行大量优化,我们有时间但没有 $$$,一开始没问题。
我们需要使用开源的东西,而不是像 oracle 这样的东西。现在我倾向于 postgres。
一条记录包括:
1 个日期
2 无符号整数
3 无符号整数
4 无符号整数
5 无符号整数
6 无符号整数
7 个文本 16 个字符
8 个文本 255 个字符
我正计划创建年度模式、月度表,并确定在日期为记录表建立索引。
在我分析使用模式以查看最流行的查询是什么之后,我可能能够再添加一两个索引。我可以在应用程序网站上做很多技巧,比如缓存流行的查询等等,这确实是我需要帮助的数据库方面。字段 8 将有一些重复的值,因此我计划将该列作为 id 加入查找表中以加入。除此之外,我猜其余的字段都将在一张月表中......
我想我也可以将它分解为每周表,并使用视图进行查询,这样应用程序就不必处理尝试组装复杂的查询......
无论如何,非常感谢任何反馈或帮助!
【问题讨论】:
-
会查询个别记录,还是只查询汇总结果(统计数据),例如每月具有“字段 2 = x”的条目数?
-
肯定会考虑按日期范围进行分区。虽然 PostgreSQL 的分区相当原始,但只要你在日期之类的事情上进行分区就可以了。
标签: database postgresql database-design