生成uuid的最佳实践?php或MySql


Best Practice to generate uuid ? php OR MySql

生成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的最低有效字节的变化速度快于最高有效字节(以适应数据库索引集群)。