Как UUID работает с PHPCassa - PullRequest
       32

Как UUID работает с PHPCassa

1 голос
/ 25 августа 2011

Я использую:

CassandraUtil::uuid1();

Вот что я получаю:

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

Я бы хотел вывести int.

Что происходит? Это нормально?

Также я должен использовать uuid1 или 2 или 3 или 4 или ...?

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 26 августа 2011

uuid1() генерирует UUID на основе текущего времени и MAC-адреса машины.

  • Плюсы: полезно, если вы хотите иметь возможность сортировать ваши UUID по времени создания.
  • Минусы: потенциальная утечка конфиденциальности, поскольку она показывает, на каком компьютере она была создана и в какое время.
  • Возможны коллизии: если два UUID генерируются в одно и то же время (в течение 100 нс) прита же машина.(Или несколько других маловероятных маргинальных случаев.)

uuid2(), кажется, больше не используется.

uuid3() генерирует UUID, беря MD5-хэшпроизвольное имя, которое вы выбираете в некотором пространстве имен (например, URL, доменное имя и т. д.).

  • Плюсы: обеспечивает удобный способ назначения блоков UUID различным пространствам имен.Легко воспроизвести UUID из имени.
  • Минусы: Если у вас уже есть уникальное имя, зачем вам нужен UUID?
  • Возможны коллизии: Если вы повторно используете имя в пространстве имен,или в случае коллизии хеша.

uuid4() генерирует совершенно случайный UUID.

  • Плюсы: никаких проблем с конфиденциальностью.Не нужно генерировать уникальные имена.
  • Минусы: нет структуры для UUID.
  • Возможны коллизии: Если вы используете плохой генератор случайных чисел, повторно используете случайное начальное число или очень, оченьне повезло.

uuid5() - то же самое, что и uuid3(), за исключением использования хеша SHA-1 вместо MD5.Официально предпочтительнее, чем uuid3().

4 голосов
/ 26 августа 2011

В phpcassa есть несколько частей для UUID. Во-первых, как создать один. Для этого полезны следующие функции:

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

uuid1 () генерирует UUID v1, который имеет компонент отметки времени и называется TimeUUIDType в Cassandra. uuid4 () генерирует совершенно случайный UUID и называется 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. Любые данные uuid, которые вы получаете от Cassandra, будут передаваться в формате байтового массива, поэтому вам нужно использовать UUID::import(), если вам нужен объект UUID.

Кроме того, UUID::import() также работает с красивым строковым представлением (которое выглядит как '' d881bf7c-cf8f-11e0-85e5-00234d21610a ').

Наконец, не забудьте о документации для UUID класса .

РЕДАКТИРОВАТЬ : обновлены ссылки и имена классов в соответствии с последним API phpcassa

...