我正在为我们的工程师创建一个分析时间表。每天下载时间表并在本地计算机上进行分析。
现在,我面临这样一个困境:将时间表存储在数据库中作为表行还是作为nvarchar(max)。
以下是要求:
1. 时间表每天生成一次。每个时间表精确到1秒。因此,每个时间表最多包含86,400条记录。 2. 一天内,根据设置,系统可以为每个工程师生成高达100个时间表(我们有大约10个工程师)。 3. 时间表包含以下字段:
现在看一下常见的情况:
一天内,它将生成大约1,296,000条记录。
如果我将每个日程存储为使用逗号分隔符的 NVARCHAR(MAX),那么每天记录的数量就会减少到150条记录。
现在,这是这些日程安排的要求:
还是NVARCHAR(MAX)?
现在,我面临这样一个困境:将时间表存储在数据库中作为表行还是作为nvarchar(max)。
以下是要求:
1. 时间表每天生成一次。每个时间表精确到1秒。因此,每个时间表最多包含86,400条记录。 2. 一天内,根据设置,系统可以为每个工程师生成高达100个时间表(我们有大约10个工程师)。 3. 时间表包含以下字段:
INT | INT | INT | INT | NVARCHAR(1024) | NVARCHAR(64) | BIT | BIT | DATETIME | DATETIME
(总结:4个整数、2个nvarchar、2个位和2个日期时间)
4. 时间表很少会被更新,但它可以被更新。可更新的字段是:2个位和1个日期时间。现在看一下常见的情况:
一天内,它将生成大约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 BITs)。这些字段可以由应用程序 (在分析完日程表后) 或工程师 (手动) 在网站上更新。
- 所有生成的日程必须存储至少3个月,以便进行审计。