我必须设计一个交通数据库,其中包括来自不同城镇(8个城镇)2mb的数据,每个城镇24小时,每个城镇10分钟。所有城镇的传入数据都是相同的。所以我的第一个问题是性能方面哪个更好:为所有城镇设计一个数据库(每个城镇有一个表)或设计多个数据库(每个城镇有一个数据库)?我的第二个问题是这个场景,MySQL,Postgres,Oracle还是其他最好的数据库管理系统是什么?
答案 0 :(得分:3)
您每天收到的数据量相当多(约5GB),但插入的行数实际上相当低。因此,您需要设计物理模型,以便简化数据库存储管理并查询效率。
如果要为每个数据库配备一台服务器,那么每个城镇只有一个单独的数据库才有意义。但是您不需要负载平衡,因为您每10分钟只需要处理8个插入。另一方面,该架构将把每个城镇与另一个城镇进行比较的每个查询转换为分布式查询。
如果大多数查询都限制在来自城镇的数据而不是比较城镇,那么在同一个数据库中每个城镇有一个表可能会给您带来一些性能优势。但我不想花很多钱。即使它确实有效,也可能使其他类型的查询更难。
鉴于所有城镇的数据都相同,我的首选选项是一个带有差异列的表(TOWN_ID)。特别是如果我有资金使用分区选项来获得Oracle许可证。
答案 1 :(得分:0)
每个城镇的不同数据库可能难以维护,与不同的表格相同。如果你永远不必比较城镇,这可能是可行的,但迟早我打算不得不比较来自不同城镇的数据。
分区数据是可行的方法。支持分区数据(如Oracle或SQL Server)的Anty数据库可以正常工作。不确定Postgre或Mysql是否支持这一点,你必须要求更熟悉这些数据库的人。