| 包 | 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 |