Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 用于大量简单记录的数据库和设计帮助_Database_Postgresql_Database Design - Fatal编程技术网

Database 用于大量简单记录的数据库和设计帮助

Database 用于大量简单记录的数据库和设计帮助,database,postgresql,database-design,Database,Postgresql,Database Design,我希望能得到一些帮助,帮助我选择一个适合我必须编写的web应用程序的数据库和布局(如下所述),考虑到大量的记录以及它们需要能够以任何方式查询的事实,我有点不知所措 web应用程序基本上允许使用构成记录的任何标准组合查询大量记录,日期是唯一的必填项。一个记录只包含八项(见下文),但每天将有大约三百万条新记录,几乎没有重复记录。数据将持续实时插入数据库中 我知道人们最感兴趣的是过去6个月->1年的数据,但其余的数据仍需要用于相同类型的查询 我不确定哪个数据库最适合这个,也不确定如何构造它。数据库将位

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

web应用程序基本上允许使用构成记录的任何标准组合查询大量记录,日期是唯一的必填项。一个记录只包含八项(见下文),但每天将有大约三百万条新记录,几乎没有重复记录。数据将持续实时插入数据库中

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

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

我们需要使用开源软件,而不是像oracle这样的软件。现在我倾向于博士后

记录包括:

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

我计划创建年度模式、月度表,并确定日期为记录表编制索引

在分析使用模式以了解最流行的查询是什么之后,我可能会添加另外一两个索引。我可以在应用程序站点上做很多事情,比如缓存流行的查询等等,我需要的是数据库方面的帮助。字段8将有一些重复的值,所以我计划将该列作为一个id加入到一个查找表中以进行连接。除此之外,我猜剩下的字段都将在一个月表中

我想我也可以将它分解成每周的表,并使用一个视图进行查询,这样应用程序就不必处理试图组合复杂查询的问题

无论如何,非常感谢您的反馈或帮助

一些简短的建议

  • 每天300万张唱片真是太多了!(至少我认为是这样,其他人甚至可能不会对此眨眼。)我会尝试编写一个工具来插入虚拟记录,看看Postgres之类的东西在一个月的数据中表现如何

  • 最好研究NoSQL解决方案,它为您提供了开源+可伸缩性。从Couchbase和Mongo开始。如果你在网上保留了一个月的实时查询数据,我不确定Postgres将如何处理9000万条记录。也许很好,但也许不是

  • 考虑在您决定的任何系统中使用“脱机”数据库。您可以将实时数据保存在最好的机器上,并且随时可以使用,但您可以将较旧的数据移到另一台更便宜的服务器上(阅读:较慢)。通过这种方式,您可以始终回答查询,但有些查询比其他查询更快

  • 一些简短的建议

  • 每天300万张唱片真是太多了!(至少我认为是这样,其他人甚至可能不会对此眨眼。)我会尝试编写一个工具来插入虚拟记录,看看Postgres之类的东西在一个月的数据中表现如何

  • 最好研究NoSQL解决方案,它为您提供了开源+可伸缩性。从Couchbase和Mongo开始。如果你在网上保留了一个月的实时查询数据,我不确定Postgres将如何处理9000万条记录。也许很好,但也许不是

  • 考虑在您决定的任何系统中使用“脱机”数据库。您可以将实时数据保存在最好的机器上,并且随时可以使用,但您可以将较旧的数据移到另一台更便宜的服务器上(阅读:较慢)。通过这种方式,您可以始终回答查询,但有些查询比其他查询更快


  • 根据我的经验,主要使用具有类似记录插入频率(几十亿行表)的Oracle,您可以通过仔细划分数据(在您的情况下,可能是按日期)和索引表来实现良好的web应用程序查询性能。具体如何处理数据库体系结构将取决于许多因素,但是在web上有很多很好的资源可用于获取有关这方面的帮助


    听起来您的数据库相对平坦,所以可能另一个数据库解决方案会更好,但Oracle对我来说一直很好。

    根据我的经验,主要使用Oracle,记录插入频率类似(几十亿行表),您可以通过仔细划分数据来获得良好的web应用程序查询性能(在你的例子中,可能是按日期)和索引你的表。你如何准确地处理你的数据库架构将取决于很多因素,但是在网上有很多很好的资源可以帮助你解决这些问题


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

    是查询单个记录,还是只查询聚合结果(统计数据),比如每月有“field 2=x”的条目数?一定要按日期范围进行分区。虽然PostgreSQL的分区相当原始,但只要按日期之类的东西进行分区就可以了。是查询单个记录,还是只查询聚合结果(统计数据),比如每月有“field 2=x”的条目数?一定要按日期范围进行分区。虽然PostgreSQL的分区相当原始,但只要您按日期之类的一个东西进行分区,它就可以