生成UUID(PRIMARY KEY)的最佳实践是什么让它在Mysql端生成OR让它在PHP端生成
做一些性能测试,我发现在php端生成有点快
但在谷歌上做了一些工作后,我发现很多人都在练习在MySQL端生成http://instagram-engineering.tumblr.com/post/10853187575/sharding-ids-at-instagram
那么,对于不断增长的数据来说,什么是正确的方法呢?
如果您希望插入来自不同应用程序的行,那么通过DB生成UID是最安全的方法,因为实现是集中的,当然不会在应用程序之间发生变化。
假设您决定用另一种语言创建一个API。然后,您需要在该语言中实现相同的生成器。这种其他语言实现生成密钥数据所依赖的函数的方式可能存在差异,这会导致重复的密钥。
如果您只想在自己的服务器上插入来自PHP的行,那么在应用程序或DB中生成UID也没关系。
安全并不总是正确。或者实用。权衡一下您的预期用例的优缺点,然后从那里开始。
您可以尝试一个非常好的PHP类Pure PHP UUID Generator
- 克隆存储库(或者将UUID.php类复制到php文件中。)
- 直接使用带有静态方法的类
示例:
UUID::v5('1546058f-5a25-4334-85ae-e68f2a44bbaf', 'SomeRandomString');
如果复制数据库,使用本机数据库UUID函数可能会导致问题。同时,我将确认,任何预先编写的UUID生成器都将经过测试,以确认UUID的最低有效字节的变化速度快于最高有效字节(以适应数据库索引集群)。