Php UUID卡桑德拉分类?

Php UUID卡桑德拉分类?,php,cassandra,uuid,thrift,phpcassa,Php,Cassandra,Uuid,Thrift,Phpcassa,假设我有一个用户列族,它具有唯一的keyname+预设,用于特定的客户端 <?php uniqid ("serverA");//generate something like; serverA4b3403665fea6 ?> 但是,我只希望查询具有每页30个最新添加的用户(创建的键)和多页布局,每页显示较旧的键 我目前找到的唯一选项是使用phpcassa的uuid $column_family = new ColumnFamily($conn, 'Indexed1'); $ind

假设我有一个用户列族,它具有唯一的keyname+预设,用于特定的客户端

<?php 
uniqid ("serverA");//generate something like; serverA4b3403665fea6
?>
但是,我只希望查询具有每页30个最新添加的用户(创建的键)和多页布局,每页显示较旧的键

我目前找到的唯一选项是使用phpcassa的uuid

$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)
}
uuid1()
根据当前时间和MAC生成UUID 机器的地址

  • 优点:如果您希望能够按创建时间对UUID进行排序,那么这很有用
  • 缺点:潜在的隐私泄露,因为它揭示了它是在哪台计算机上以及在什么时候生成的
  • 可能发生冲突:如果在同一台机器上同时生成两个UUID(100 ns内)。(或其他一些不太可能 边缘案例。)
uuid2()
似乎不再使用了

uuid3()
通过获取任意名称的MD5散列来生成UUID 您在某个名称空间中选择的名称(例如URL、域名等)

  • 优点:提供了一种将UUID块分配给不同名称空间的好方法。易于从名称复制UUID
  • 缺点:如果您已经有一个唯一的名称,为什么需要UUID
  • 可能的冲突:如果在命名空间中重用名称,或者存在哈希冲突
uuid4()
生成一个完全随机的UUID

  • 优点:没有隐私问题。不必生成唯一的名称
  • 缺点:UUID没有结构
  • 可能的冲突:如果你使用了一个坏的随机数生成器,重复使用一个随机种子,或者非常非常不走运
uuid5()
uuid3()
相同,只是使用了SHA-1散列 MD5的功能。官方优先于
uuid3()

但这意味着我必须重写一些部分+获取碰撞的可能性


有我没想到的聪明黑客吗

首先,关于uuid,如果您计划使用uuid1()或uuid4(),则无需担心冲突(这些是唯一真正被使用的)。发生这类事件的概率极低。别担心

对于获取最近添加的30个键(以及分页功能),您实际上是在谈论时间序列数据。这是一个好主意。可以使用时间戳或v1 UUID作为列名,使用唯一键作为列值。如果您选择使用v1uuid作为唯一键,您可以直接将它们放在列名中。此时,您只需在Cassandra中处理正常的时间序列数据和分页