可以說我有一個用戶列家族具有獨特的鍵名+預設爲特定的客戶端UUID cassandra排序?
<?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進行排序,這很有用。
- 缺點:潛在的隱私泄漏,因爲它揭示了它是在哪個計算機上生成的,以及在什麼時間生成的。
- 可能的衝突:如果在同一臺機器上同時生成兩個UUID(100ns內)。 (或其他一些不太可能的 邊際情況。)
uuid2()
似乎不再使用。
uuid3()
通過在某個名稱空間(例如URL,域名等)中選擇任意名稱 的MD5哈希來生成UUID。
- 優點:提供了一種將UUID塊分配給不同名稱空間的好方法。輕鬆從名稱中重現UUID。
- 缺點:如果你已經有一個獨特的名字,爲什麼你需要一個UUID?
- 可能的衝突:如果您在名稱空間內重用名稱,或者存在散列衝突。
uuid4()
生成完全隨機的UUID。
- 優點:沒有隱私問題。不必生成唯一的名稱。
- 缺點:UUID沒有結構。
- 碰撞可能:如果你使用了一個壞的隨機數發生器,重用一個隨機種子,或者是非常非常不幸的。
uuid5()
相同uuid3()
,除了使用SHA-1散列MD5代替 。正式優先於uuid3()
。
但是這意味着我必須重寫一些零件+獲得碰撞的可能性。
有沒有我想不到的聰明黑客?