假设我有一个具有唯一键名 + 为特定客户端预设的用户列族
<?php
uniqid ("serverA");//generate something like; serverA4b3403665fea6
?>
我可以通过二级索引等选择它们:(来自 phpcassa 的生日示例)
$column_family = new ColumnFamily($conn, 'Indexed1');
$index_exp = CassandraUtil::create_index_expression('birthdate', 1984);
$index_clause = CassandraUtil::create_index_clause(array($index_exp));
$rows = $column_family->get_indexed_slices($index_clause);
// returns an Iterator over:
// array('winston smith' => array('birthdate' => 1984))
foreach($rows as $key => $columns) {
// Do stuff with $key and $columns
Print_r($columns)
}
但是我只想查询每页有 30 个最新添加的用户(创建的键)和多页布局,每个页面都显示旧键
我目前找到的唯一选择是使用 phpcassa 的 uuid
uuid1()
根据当前时间和机器的 MAC 地址生成 UUID。
- 优点:如果您希望能够按创建时间对 UUID 进行排序,这很有用。
- 缺点:潜在的隐私泄露,因为它揭示了它是在哪台计算机上以及在什么时间生成的。
- 可能发生冲突:如果在同一台机器上同时(100 ns 内)生成两个 UUID。(或其他一些不太可能的边缘情况。)
uuid2()
似乎不再使用了。
uuid3()
通过获取您在某个命名空间(例如 URL、域名等)中选择的任意名称的 MD5 哈希来生成 UUID。
- 优点:提供了一种将 UUID 块分配给不同命名空间的好方法。很容易从名称中重现 UUID。
- 缺点:如果您已经有了唯一的名称,为什么还需要 UUID?
- 可能发生冲突:如果您在命名空间中重用名称,或者存在哈希冲突。
uuid4()
生成一个完全随机的 UUID。
- 优点:没有隐私问题。不必生成唯一名称。
- 缺点:UUID 没有结构。
- 可能发生冲突:如果您使用了错误的随机数生成器,重复使用随机种子,或者非常非常不走运。
uuid5()
与 相同uuid3()
,除了使用 SHA-1 哈希而不是 MD5。官方首选超过uuid3()
.
但这意味着我必须重写一些部分+获得碰撞的可能性。
有没有我没想到的聪明技巧?