包 | behavior |
---|---|
类层次 | Model_Behavior_Fastuuid » QDB_ActiveRecord_Behavior_Abstract |
实现的接口 | |
版本 | $Id: fastuuid.php 2264 2009-02-21 07:05:30Z dualface $ |
Behavior_Fastuuid 为模型生成 64 位整数或混淆字符串的不重复 ID
感谢“Ivan Tan|谭俊青 DrinChing (at) Gmail.com”提供的算法。
通常我们习惯使用自增字段来做主键,简单易用。
但在于大规模应用中,使用自增字段将难以实现分布式数据库架构。 并且对数据进行纵向和横向分割(分表分库)造成障碍。 此时最好的解决方案是使用 UUID。
但 UUID 不是每一种数据库都支持,用字符串来模拟效率太低。 并且如果通过 URL 传递,UUID 也显得太长。
fastuuid 插件提供了另一种解决方案: 使用 64bit 整数存储主键,主键由 fastuuid 插件在创建记录时自动生成。
fastuuid 插件支持下列设置:
注意:如果在应用程序使用过程中修改这个设置,可能导致出现重复的 ID 值,
即便不附加随机数也不会生成重复 ID,但附加的随机数可以让 ID 更难被猜测。
属性 | 类型 | 描述 | 定义于 |
---|---|---|---|
$_settings | array | 设置 | Model_Behavior_Fastuuid |
$_meta | QDB_ActiveRecord_Meta | ActiveRecord 继承类的元信息对象 | QDB_ActiveRecord_Behavior_Abstract |
方法 | 描述 | 定义于 |
---|---|---|
_before_create() | 在数据库中创建 ActiveRecord 对象前调用 | Model_Behavior_Fastuuid |
genUUID() | 生成不重复的 UUID | Model_Behavior_Fastuuid |
normalizeConfig() | 格式化配置 | QDB_ActiveRecord_Behavior_Abstract |
unbind() | 撤销行为插件绑定 | QDB_ActiveRecord_Behavior_Abstract |
方法 | 描述 | 定义于 |
---|---|---|
_addDynamicMethod() | 为 ActiveRecord 对象添加一个动态方法 | QDB_ActiveRecord_Behavior_Abstract |
_addStaticMethod() | 为 ActiveRecord 类添加一个静态方法 | QDB_ActiveRecord_Behavior_Abstract |
_addEventHandler() | 为 ActiveRecord 对象添加一个事件处理函数 | QDB_ActiveRecord_Behavior_Abstract |
_setPropGetter() | 设置一个属性的 getter 方法 | QDB_ActiveRecord_Behavior_Abstract |
_setPropSetter() | 设置一个属性的 setter 方法 | QDB_ActiveRecord_Behavior_Abstract |