【发布时间】:2019-02-10 04:15:00
【问题描述】:
我正在为我们的工程师制定一个分析时间表。每天都会下载时间表,并在本地计算机上进行分析。
所以,现在,我处于将日程表存储为表行或 nvarchar(max) 的困境中。
这是要求
- 每天都会生成计划。每个时间表精确到 1 秒。因此,每个时间表最多将包含 86,400 条记录。
- 一天内,根据设置,系统可以为每位工程师生成多达 100 个时间表(我们有大约 10 名工程师)
- 计划包含以下字段:
INT | INT | INT | INT | NVARCHAR(1024) | NVARCHAR(64) | BIT | BIT | DATETIME | DATETIME(总而言之:4x INT,2x NVARCHAR 、2x BIT 和 2x DATETIME) - 时间表很少会更新,但可以更新。可更新字段为:2x BITs 和 1x DATETIME。
现在来看常见的情况:
一天之内,它会产生大约 1,296,000 条记录/天。
This is the calculation of common case scenario:
- 10 seconds accuracy per schedule = 8,640 rows
- 5 engineers run the scheduler each day
- Each engineer generates about 30 schedules
So total is: 8,640 * 5 * 30 = 1,296,000 records
如果我将每个计划存储为 NVARCHAR(MAX),并以 逗号分隔,那么记录数将减少到只有 每天 150 条记录。
Here is the calculation:
- 10 seconds accuracy per schedule = 8,640 rows --> stored as NVARCHAR (becomes 1 record)
- 5 engineers run the scheduler each day
- Each engineer generates about 30 schedules
So total is: 5 * 30 = 150 records
现在,这是对这些时间表的要求:
- 可以在网站上查看生成的时间表。
- 应用程序每天都会下载时间表进行分析。
- 分析完成后,可以更新字段(2x BIT)。这些字段可以由应用程序更新(在完成计划分析后),也可以由网站上的工程师(手动)更新。
- 所有生成的计划必须至少保存 3 个月以供审核。
您的建议是什么?将计划存储为 表格行 或 NVARCHAR(MAX)
【问题讨论】:
标签: sql-server tsql database-design sql-server-2012 relational-database