examples - Cómo autogenerar uuid en cassandra CQL 3 línea de comando
cql examples (4)
Acabo de aprender a cassandra, ¿hay alguna manera de insertar un UUID usando CQL, es decir,
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
¿Puedes hacer algo como
insert into stuff (uid, name) values(nextuid(), ''my name'');
A partir de Cassandra 2.0.7 puede simplemente usar uuid (), que genera un UUID de tipo aleatorio 4:
INSERT INTO users(uid, name) VALUES(uuid(), ''my name'');
En realidad, hay una manera de hacerlo utilizando las funciones de conversión blob: blobAsType y typeAsBlob. En tu caso, esto debería ser:
insert into stuff (uid, name) values(blobAsUuid(timeuuidAsBlob(now())), ''my name'');
Esto es convertir timeuuid a blod y del blod convertirlo a uuid.
Puede con uuids de tiempo (UUID tipo 1) usando la función now() , por ej.
insert into stuff (uid, name) values(now(), ''my name'');
Funciona con uid o timeuuid. Genera un valor de UID "garantizado único", que también contiene la marca de tiempo, por lo que es ordenable por tiempo.
Sin embargo, no existe tal función para los UUID de tipo 4.
ACTUALIZACIÓN: esta nota se refiere a versiones anteriores de Cassandra. Para versiones más nuevas, mira a continuación.
Un UUID es una identificación universal única utilizada para evitar colisiones.
Cassandra 2.0.7 y versiones posteriores incluyen la función uuid()
que no toma parámetros y genera un UUID de Tipo 4 para usar en las INSERT
o SET
.
También puede usar un tipo de elemento de tiempo con una función como now()
. Generan un UUID tipo 1.
La diferencia entre los UUID Tipo 1 y Tipo 4 es que un UUID Tipo 1 se genera utilizando una marca de tiempo y un Tipo 4 se genera utilizando números aleatorios.
Si desea utilizar un timeuuid
como un elemento uuid
utilice algo como blobAsUuid(timeuuidAsBlob(now()))
, ya que se garantiza que el valor devuelto por now()
será único.
Referencias
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