gpt4 book ai didi

sql-server - SQL Server : Design question - stored records as rows vs as BLOB - NVARCHAR(MAX)

转载 作者:行者123 更新时间:2023-12-03 03:37:07 25 4
gpt4 key购买 nike

我正在创建一个时间表供我们的工程师进行分析。每天下载时间表并在本地计算机上完成分析。

所以,现在,我陷入了将计划存储在数据库中作为表行或 nvarchar(max) 的困境。

这是要求

  1. 时间表每天都会生成。每个时间表精确到1秒。因此,每个计划最多包含 86,400 条记录。
  2. 一天内,根据设置,系统可为每位工程师生成最多 100 个计划(我们大约有 10 名工程师)
  3. 该计划包含以下字段: INT | INT | INT | INT | NVARCHAR(1024) | NVARCHAR(64) | NVARCHAR(64)比特 |比特 |日期时间 | DATETIME(总结:4x INT2x NVARCHAR2x BIT2x日期时间)
  4. 时间表很少会更新,但可以更新。可更新字段为:2x BIT1x DATETIME

现在看看常见的案例场景:

In a day, it will generates about 1,296,000 records per day.

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

现在,这是这些时间表的要求:

  1. 可以在网站上查看生成的时间表。
  2. 应用程序每天都会下载时间表进行分析。
  3. 分析完成后即可更新字段(2x BIT)。这些字段可以通过应用程序更新(在完成分析时间表后),也可以由工程师在网站上更新(手动)。
  4. 所有生成的计划必须保存至少 3 个月以供审核。

你的建议是什么?将计划存储为表行NVARCHAR(MAX)

最佳答案

除了行数之外,将数据存储在一列中还有什么好处吗?如果没有,对我来说,您可以保存以标准化方式存储数据。

<小时/>

由于不同的要求,我使用了这两种技术来存储数据。当然,将数据存储在 VARBINARY(MAX)NVARCHAR(MAX) 中会导致许多困难:

  • 无法按某些字段建立索引和搜索
  • 为了执行更新,必须对数据进行规范化、修改,然后再次构建为字符串/二进制
  • 为了执行报告,必须再次对数据进行标准化

因此,由于上述原因,我建议选择表格格式。另外,如果您觉得以某种序列化方式导出数据更好,您始终可以实现这样的 SQL CLR 字符串连接 function或使用built-in如果使用 SQL Server 2017 及更高版本。

另外,最好使用separators例如用于列和行的 CHAR(31) 和 CHAR(30)。它比使用制表符/换行符/逗号/分号更清晰,因为输入数据不太可能包含此类内容并破坏您的数据。

关于sql-server - SQL Server : Design question - stored records as rows vs as BLOB - NVARCHAR(MAX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54613295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com