Pour apprendre Cassandra, existe-t-il un moyen d'insérer un UUID à l'aide de CQL, c'est-à-dire
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
Pouvez-vous faire quelque chose comme
insert into stuff (uid, name) values(nextuid(), 'my name');
Vous pouvez avec des uuids temporels (type 1 UUID) en utilisant la fonction now () par ex.
insert into stuff (uid, name) values(now(), 'my name');
Fonctionne avec uid ou timeuuid. Il génère une valeur UID "unique garanti", qui contient également l'horodatage et est donc triable par le temps.
Il n'y a cependant pas une telle fonction pour les UUID de type 4.
MISE À JOUR: Cette note concerne les anciennes versions de Cassandra. Pour les versions plus récentes, voir ci-dessous.
Depuis Cassandra 2.0.7 vous pouvez simplement utiliser uuid (), qui génère un UUID de type 4 aléatoire:
INSERT INTO users(uid, name) VALUES(uuid(), 'my name');
En fait, il existe un moyen de le faire en utilisant les fonctions de conversion d'objets blob - blobAsType()
et typeAsBlob()
. Dans votre cas, cela devrait être:
insert into stuff (uid, name) values(blobAsUuid(timeuuidAsBlob(now())), 'my name');
Cela convertit timeuuid
en blob
et à partir de blob
le convertit en uuid
.
Un UUID est un identifiant universel unique utilisé pour éviter les collisions.
Cassandra 2.0.7 et les versions ultérieures incluent la fonction uuid()
qui ne prend aucun paramètre et génère un UUID de type 4 à utiliser dans les instructions INSERT
ou SET
.
Vous pouvez également utiliser un type timeuuid
avec une fonction comme now()
. Ils génèrent un UUID de type 1.
La différence entre les UUID de type 1 et de type 4 est qu'un UUID de type 1 est généré à l'aide d'un horodatage et un type 4 est généré à l'aide de nombres aléatoires.
Si vous souhaitez utiliser un timeuuid
comme uuid
, utilisez quelque chose comme blobAsUuid(timeuuidAsBlob(now()))
, car la valeur renvoyée par now()
est garantie d'être unique.
Les références:
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