一意のキー名と特定のクライアントのプリセットを持つユーザー列ファミリーがあるとしましょう
<?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 を作成時刻で並べ替えたい場合に便利です。
- 短所: どのコンピューターでいつ生成されたかが明らかになるため、プライバシーが漏洩する可能性があります。
- 衝突の可能性: 同じマシンで 2 つの UUID がまったく同時に (100 ns 以内に) 生成された場合。(または、他のいくつかのありそうもない限界的なケース。)
uuid2()
もう使わないようです。
uuid3()
いくつかの名前空間 (URL、ドメイン名など) 内で選択した任意の名前の MD5 ハッシュを取得して UUID を生成します。
- 長所: UUID のブロックを異なる名前空間に割り当てる優れた方法を提供します。名前からUUIDを再現しやすい。
- 短所: すでに一意の名前を持っている場合、なぜ UUID が必要なのですか?
- 衝突の可能性: 名前空間内で名前を再利用する場合、またはハッシュの衝突がある場合。
uuid4()
完全にランダムな UUID を生成します。
- 長所: プライバシーの心配はありません。一意の名前を生成する必要はありません。
- 短所: UUID への構造がありません。
- 衝突の可能性: 不適切な乱数ジェネレーターを使用した場合、ランダム シードを再利用した場合、または非常に運が悪かった場合。
uuid5()
uuid3()
MD5 の代わりに SHA-1 ハッシュを使用する点を除いて、 と同じです。よりも正式に優先されuuid3()
ます。
しかし、それは私がいくつかの部分を書き直さなければならないことを意味します+衝突の可能性を得る.
私が思いもよらなかった賢いハックはありますか?