dflydev / identity-generator
提供生成唯一标识符的标准接口。
Requires
- php: >=5.3.2
Requires (Dev)
Suggests
- dflydev/base32-crockford: Required for Base32 Crockford based Generators
This package is auto-updated.
Last update: 2024-08-29 03:15:46 UTC
README
提供生成唯一标识符的标准接口。
这个库的目的是解决生成唯一值的问题,这些值是“保证”唯一的,并且适合用作对象的标识符。
为什么?
虽然对于实现原生顺序或自增ID字段的数据库来说,提供保证唯一性的标识符通常不是问题,但在某些情况下,随机化标识符是有意义的,这样它就不能根据任何可预测的模式来猜测。
因此,这个库提供的GeneratorInterface
实现将具有一定的随机性。这并不排除使用顺序的GeneratorInterface
实现。
群体
群体用于对标识符进行分组。如果指定了群体,数据存储器需要存储的请求值只需对该群体是唯一的。这允许单个数据存储器可能存储和管理多个命名空间中的唯一标识符。
名称“group”可能具有歧义(并且是潜在数据存储器的保留词),因此根据定义选择了“群体”
任何群体或人、物集合。
“唯一性保证”
唯一性保证是通过尝试将生成的值添加到数据存储器来实现的。数据存储器需要能够知道传递给它的值是否唯一。这种唯一性保证的强度取决于给定数据存储器有效确定给定值唯一性的能力。
如果给定的值不是唯一的,数据存储器应抛出NonUniqueIdentityException
。请求的标识符和群体值可以通过此异常获得。
关于冲突怎么办?
IdentityGenerator
将尝试maxRetries
次将生成的值存储到数据存储器中。这应该能够优雅地处理有限数量的冲突。
如果maxRetries
用尽,将抛出GenerateException
。它将包含等于maxRetries
数量的NonUniqueIdentityException
异常。
要求
- PHP 5.3+
许可
MIT,请参阅LICENSE。
社区
如果您有疑问或想帮忙,请加入irc.freenode.net上的#dflydev频道。