Подтвердить что ты не робот

Как автоматически генерировать uuid в командной строке cassandra CQL 3

Просто изучая cassandra, есть способ вставить UUID с помощью CQL, т.е.

create table stuff (uid uuid primary key, name varchar);
insert into stuff (name) values('my name'); // fails
insert into stuff (uid, name) values(1, 'my name'); // fails

Можете ли вы сделать что-то вроде

insert into stuff (uid, name) values(nextuid(), 'my name');
4b9b3361

Ответ 1

Вы можете со временем uuids (тип UUID) использовать функцию now(), например,

insert into stuff (uid, name) values(now(), 'my name');

Для этого вам нужно будет изменить тип uid на timeuuid.

Не существует такой функции для UUID типа 4.


ОБНОВЛЕНИЕ: Этот ответ относится к более старым версиям Cassandra. Для более новых версий см. Ниже.

Ответ 2

В Cassandra 2.0.7 вы можете просто использовать uuid().

INSERT INTO users(uid, name) VALUES(uuid(), 'my name');

Ответ 3

На самом деле есть способ сделать это, используя функции преобразования blob - blobAsType и typeAsBlob. В вашем случае это должно быть:

insert into stuff (uid, name) values(blobAsUuid(timeuuidAsBlob(now())), 'my name');

Это конвертирует timeuuid в блок и из блока преобразует его в uuid.

Ответ 4

UUID - универсальный уникальный идентификатор, используемый для предотвращения столкновений.

Cassandra 2.0.7 и более поздние версии включают функцию uuid(), которая не принимает никаких параметров и генерирует UUID типа 4 для использования в операторах INSERT или SET.

Вы также можете использовать тип timeuuid с такой функцией, как now(). Они генерируют UUID типа 1.

Разница между UUID типа 1 и Type 4 заключается в том, что UUID типа 1 генерируется с использованием метки времени, а Тип 4 генерируется с использованием случайных чисел.

Если вы хотите использовать timeuuid как uuid, используйте что-то вроде blobAsUuid(timeuuidAsBlob(now())), так как значение, возвращаемое now(), будет гарантировано уникальным.

Литература:

http://docs.datastax.com/en/cql/3.3/cql/cql_reference/uuid_type_r.html

http://docs.datastax.com/en/cql/3.3/cql/cql_reference/timeuuid_functions_r.html

http://docs.datastax.com/en/cql/3.3/cql/cql_reference/blob_r.html