【问题标题】:How to ensure the data integrity using SQL Server?如何使用 SQL Server 确保数据完整性?
【发布时间】:2017-04-18 04:03:07
【问题描述】:

我在 SQL Server 中有一个包含数十亿行的表。我想确保数据是只读的(不可变的),并且在插入数据库后始终不会更改。

我目前的想法是使用SHA3哈希算法来做一个哈希链。

HASH(current_row) = HASH(HASH(previous_row) + current_row) # as the hash content of the current row

上述方案存在以下不足:

  1. 如果有数十亿行,则可能需要很长时间,因为每个记录哈希都与前一条记录的哈希相关。

  2. 它不允许并行计算。

考虑到性能,确保数据完整性的最实用方法是什么?

【问题讨论】:

  • @marc_s 但是如果数据库本身是只读的,我该如何插入数据。

标签: sql-server database database-design database-integrity


【解决方案1】:

数据完整性意味着其他东西。如果您需要确保某些用户不会更新和删除任何内容,请不要向他们提供更新和删除授权。

阅读是否有效与授权无关。您需要了解您的获取方案并设置正确的索引。如果这还不够,您可能需要其他更高级的技术(分片、仅从复制的从属设备中读取等)

【讨论】:

  • 如果数据库被黑了怎么办?
  • 被黑了?那太宽泛了。如果您的系统被黑客入侵,那么您的问题就太多了。如果您想防止系统被黑客入侵时出现问题,请不要将您的数据放入该系统。
  • 那我应该把数据放在哪里呢?哪个系统是绝对安全的?
  • @Theresa 我不确定你现在是否真的想玩得开心。没有人能够在没有任何背景的情况下回答这样的一般性问题。顺便说一句,没有任何系统连接到网络是安全的。
  • @Theresa 如果有人拥有管理服务器的系统管理员帐户,那么您就完成了。您可以找到加密存储在 SQL Server 中的数据的方法,但如果有人入侵了您的系统,那么他们将能够弄清楚这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多