Comment générer automatiquement uuid en ligne de commande cassandra CQL 3
juste apprendre cassandra, y a-t-il un moyen d'insérer un UUID en utilisant 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');
4 réponses
Vous pouvez avec le temps uuids (type 1 UUID) en utilisant le now () par exemple,
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'estampille de temps est donc sortable par le temps.
Il n'y a pas une telle fonction pour les UUIDs de type 4 cependant.
mise à jour: cette note concerne les anciennes versions de Cassandra. Pour les versions plus récentes, voir ci-dessous.
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 y a un moyen de le faire en utilisant les fonctions de conversion blob - blobAsType et typeAsBlob. Dans votre cas, cela devrait être:
insert into stuff (uid, name) values(blobAsUuid(timeuuidAsBlob(now())), 'my name');
ici convertissez timeuuid en blod et de blod convertissez-le en uuid.
un UUID est un identifiant universel Unique utilisé pour éviter les collisions.
Cassandra 2.0.7 et les versions suivantes incluent le uuid()
fonction qui ne prend aucun paramètre et génère un UUID de Type 4 à utiliser dans INSERT
ou SET
consolidés.
vous pouvez aussi utiliser un timeuuid
tapez 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'une horodatage et qu'un UUID de Type 4 est généré à l'aide de nombres aléatoires.
si vous voulez utiliser un timeuuid
uuid
utilisez quelque chose comme blobAsUuid(timeuuidAsBlob(now()))
, puisque la valeur retournée par now()
est garantie unique.
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