- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据Microsoft's documentation on NEWSEQUENTIALID
,NEWSEQUENTIALID 的输出是可预测的。但可预测性如何呢?假设我有一个由 NEWSEQUENTIALID
生成的 GUID,那么:
/order?id=842
告诉我应用程序中有 842 个订单。下面是一些关于我正在做的事情以及各种权衡的背景信息。
使用 GUID 相对于整数作为主键的安全优势之一是 GUID 很难猜测。例如。假设黑客看到像 /user?id=845
这样的 URL,他可能会尝试访问 /user?id=0
,因为数据库中的第一个用户很可能是是管理用户。此外,黑客可以迭代 /user?id=0..1..2
来快速收集所有用户。
同样,整数的隐私缺点是它们会泄漏信息。 /order?id=482
告诉我,该网上商店自实现以来已有 482 个订单。
不幸的是,使用 GUID 作为主键具有众所周知的性能缺点。为此,SQL Server 引入了NEWSEQUENTIALID 函数。在这个问题中,我想了解 NEWSEQUENTIALID
的输出的可预测性如何。
最佳答案
底层操作系统功能是 UuidCreateSequential
。该值源自您的网卡 MAC 地址之一和 per-os-boot incremental value 。请参阅RFC4122 。 SQL Server 做了一些byte-shuffling使结果正确排序。因此,从某种意义上说,该值(value)是高度可预测的。具体来说,如果您知道一个值,您可以立即预测相似值的范围。
但是,我们无法预测 id=0
的等价物,也无法预测 52DE358F-45F1-E311-93EA-00269E58F20D
表示商店至少售出 482 件商品.
唯一“批准”的随机生成是 CRYPT_GEN_RANDOM
(其中包含 CryptGenRandom
)但这显然是一个可怕的关键候选者。
关于sql - NEWSEQUENTIALID 的可预测性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24158118/
根据Microsoft's documentation on NEWSEQUENTIALID ,NEWSEQUENTIALID 的输出是可预测的。但可预测性如何呢?假设我有一个由 NEWSEQUENT
想象一个如下所示的表格: CREATE TABLE [dbo].[test]( [id] [uniqueidentifier] NULL, [name] [varchar](50)
我正在为我公司即将启动的新数据库制定数据库标准。我们试图定义的事情之一是与唯一标识符相关的主键和聚集索引规则。 (注意:我不想讨论使用 UniqueIdentifier 作为主键或聚集索引的利弊。网络
目前,我们有许多在主键上使用 newid() 的表。这会导致大量碎片。所以我想更改列以使用 newsequentialid() 代替。 我想现有的数据将仍然非常碎片化,但新数据的碎片化程度会降低。这意
使用 UuidCreateSequential 时发生碰撞的几率是多少? ,或者它的包装器 NewSequentialID ?我发现的最具体的顺序 guid 是“比随机 guid 更有可能”。 将其与
我看到了这条评论: "Late last week Azure launched a preview of the latest version of Azure SQL DB and in that
我试图了解 NewId 和 'NewSequentialId 在实际生活中的用法,我通常在创建新的时使用 Identity 属性像这样的表格: CREATE TABLE MYTABLE ( [
我有一个新应用程序,我想使用 GUID 作为聚簇表的主键。我听说使用 newid() 有缺点,所以我想了解有关 newsequentialid() 的更多信息。 具体来说,使用 int 比使用 new
我在 sql server management studio 中遇到 newsequentialid() 学习问题。创建一个包含 uniqueidentifier 列“UniqueID”的表,并将默
我正在向表中添加新的 GUID/Uniqueidentifier 列。 ALTER TABLE table_name ADD VersionNumber UNIQUEIDENTIFIER UNIQUE
我正在做一些研究,我遇到了一个无法解释的异常情况(而且我在 Google 上找不到任何信息)。考虑以下 SQL: CREATE TABLE MyGuid ( ID UNIQUEIDENTIFI
我们使用 GUID 作为主键,您知道默认情况下它是集群的。 当向表中插入新行时,它会插入到表中的随机页面(因为 GUID 是随机的)。这具有可衡量的性能影响,因为数据库将始终拆分数据页(碎片)。但我使
在所有主键都是 GUID 的数据库中,使用 newid() 与 newsequentialid() 作为“默认值或绑定(bind)”有什么区别/含义和/或优缺点。 我所知道的唯一区别是 newid()
这是一个通用查询,我的场景是:我有一个 DB(MS SQL) 并创建一个表,其中有一列作为唯一标识符,并使用 NEWSEQUENTIALID() 分配值,我知道它将始终是唯一 ID。但是,如果我在三台
使用下面的代码, public class UserProfile { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] pu
如何使用 newsequentialid() 作为 PK 列中的默认值? 我有这个注释: [Key, DatabaseGenerated(DatabaseGeneratedOption.Identit
我正在尝试导入从本地 SQL 数据库创建的 bacpac 文件/数据层应用程序,但遇到以下错误: Error encountered during the service operation. Cou
我在表中有一个 uniqueidentifier 列,它不是键或索引。我想使用 NEWSEQUENTIALID() 设置默认值,但出现错误: Error validating default for
我尝试在 Azure SQL DB 上使用以下语法创建一个表,但它抛出以下错误。 谁能告诉我为什么这里不允许 NEWSEQUENTIALID() 。当我在本地服务器上创建相同的内容时,它工作正常。 是
我有一个 ASP.NET Identity 2 实现(没有用户数据,只有基表),我有一个类型为 UNIQUEIDENTIFIER 的 userId。 该应用程序首先是代码,我使用的是 EF6。 这是
我是一名优秀的程序员,十分优秀!