现有几十台测试机,每天一共生成两百万行的测试数据,每一行包含了测试时间、几个设置项与200-300 个测试结果。测试结果几乎都为 20 位浮点数。
需求
1.在特定的设置项下,求出每台机每小时各种测试数据的平均值
2.查询特定设置项与测试时间下的测试结果
其他要求:
1.测试结果可能会有增减,意味着可能要在生产中新增列,可以不减列。
2.一台测试机会同时测几颗 IC (机台有好几个栏位可以同时测试),意味着会有几行数据时间完全相同的情况
3.如果解决方案需要行的唯一性,那这个唯一性需要机台+测试时间+栏位来确定。
4.暂时没钱上分布式
5.暂时不会上云
现在的实现思路:
1.上 PostgreSQL,测试时间按每日水平分表,用的是内置分区表(之后考虑用 pg_pathman )
2.BRIN 索引各设置项与测试时间
3.建一个平均值表,每小时把上个小时各项测试数据的平均值加进去
问下还有没有更好的解决方案?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.