1

I am using:

CassandraUtil::uuid1();

This is what I get:

ämªðÏBà=0£Ï‰

I though it would output a int.

What is going on? Is it normal?

Also should I use uuid1 or 2 or 3 or 4 or ...?

Thanks in advance!

4

2 に答える 2

4

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()ます。

于 2011-08-26T17:12:06.883 に答える
4

phpcassa の UUID にはいくつかの部分があります。まず、生成方法です。これには、次の関数が役立ちます。

$my_uuid_string = phpcassa\UUID::uuid1();
$my_uuid_string = phpcassa\UUID::uuid4();

uuid1() は、タイムスタンプ コンポーネントを持ち、Cassandra では TimeUUIDType と呼ばれる v1 UUID を生成します。uuid4() は完全にランダムな UUID を生成し、Cassandra では LexicalUUIDType と呼ばれます。(他の uuidX() 関数は一般的にあまり役に立ちません。) この関数が返すのは、UUID のバイト配列表現 (基本的には 16 バイトの文字列) です。これがあなたの"ämªðÏBà=0£Ï‰"文字列です。UUID を Cassandra に挿入しようとしている場合は、これを使用します。

このバイト配列から、便利なメソッドと属性を持つ UUID オブジェクトを作成できます。

$my_uuid = phpcassa\UUID::import($my_uuid_string);

$my_uuid を使用すると、「d881bf7c-cf8f-11e0-85e5-00234d21610a」のようなきれいな文字列表現を得ることができます$my_uuid->string。を実行することで、バイト表現を取り戻すことができます$my_uuid->bytes。Cassandra から返される uuid データはバイト配列形式になるためUUID::import()、UUID オブジェクトが必要な場合はそれを使用する必要があります。

また、UUID::import()きれいな文字列表現 (''d881bf7c-cf8f-11e0-85e5-00234d21610a' のようなもの) でも機能します。

最後に、 UUID クラスのドキュメントを忘れないでください 。

編集: 最新の phpcassa API に一致するように更新されたリンクとクラス名

于 2011-08-26T03:09:17.373 に答える