我目前正在为sql server设计一个数据库,我需要处理大量的数据。
以下是我的背景:
由4680芯片组成的基片作为唯一ID
每个芯片由66个点组成,并有一个通过率/失败布尔值。
每个点为3个值(x,y,半径)
所以,每隔20分钟,我就需要插入一个对应308'880个点的减震器,而这10年间24/24小时7/7的时间就会产生80亿个点(我知道这听起来很大)。
我考虑使用这样的组合键:
子字符串(INT ID)
芯片(INT FK_SUBSTRATID,ROWNUMBER INT,COLNUMBER INT)
SPOT(INT FK_SUBSTRATID,CHIPROWNUMBER INT,CHIPCOLNUMBER INT,ROWNUMBER INT,COLNUMBER INT )
对于芯片和点,列数和行号从1-30迭代。
我也在考虑把所有的点信息放进芯片表。我真的不知道在这样的情况下什么是最好的,因为我从来没有遇到过这么多的数据。
我想知道如何在这些表上使用分区,数据需要有一个很好的响应时间,比如说30天,所以我计划添加一个字段InsertDate来对其进行分区。
编辑:
至于数据的使用,芯片信息将在30天内作出决定,因为是否应该继续生产减震器。
现场信息将用于按需对x,y偏差进行统计分析。
现场和芯片信息应根据需求至少检索10年,所有数据都需要保存,以符合FDA的要求。
谢谢大家的建议
发布于 2015-05-28 16:43:21
关于关键设计的主要问题,我将留待其他人回答,但我想回答插入和读取性能的问题。
当您需要有效地写入和读取大型数据集时,就可以使用单独的专用读和写数据库。这个想法是有两种不同的模式--一种是为快速写作而优化的,一种是为快速阅读而优化的。然后,将通过输入数据工作的作业放在一起,并将其移到可读的数据库/表中。交换条件是,您的书面数据不是立即可用的(延迟取决于您喜欢如何处理写入)。
这种方法类似(但不完全是) 命令查询责任分离--CQRS。要点是,拥有专门的读和写组件可以使每个组件都高度调整到它的角色。
https://stackoverflow.com/questions/30511310
复制相似问题