Jac*_*cob 46 cql cassandra cql3
刚学习cassandra,有没有办法使用CQL插入UUID,即
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
Run Code Online (Sandbox Code Playgroud)
你能做点什么吗?
insert into stuff (uid, name) values(nextuid(), 'my name');
Run Code Online (Sandbox Code Playgroud)
lum*_*umi 86
从Cassandra 2.0.7开始,你可以使用uuid(),它生成一个随机类型4 UUID:
INSERT INTO users(uid, name) VALUES(uuid(), 'my name');
Run Code Online (Sandbox Code Playgroud)
Ric*_*ard 48
您可以使用now()函数使用时间uuids(类型1 UUID),例如
insert into stuff (uid, name) values(now(), 'my name');
Run Code Online (Sandbox Code Playgroud)
适用于uid或timeuuid.它生成一个"保证唯一"的UID值,该值还包含时间戳,因此可以按时间排序.
但是,类型4 UUID没有这样的功能.
更新:本说明适用于较旧版本的Cassandra.对于较新的版本,请参阅下文.
小智 20
实际上有一种方法可以使用blob转换函数来实现这一点 - blobAsType()和typeAsBlob().在你的情况下,这应该是:
insert into stuff (uid, name) values(blobAsUuid(timeuuidAsBlob(now())), 'my name');
Run Code Online (Sandbox Code Playgroud)
这将转换timeuuid为转换为blob和blob转换为uuid.
Est*_*era 13
UUID是用于避免冲突的通用唯一ID.
Cassandra 2.0.7及更高版本包含uuid()不带参数的函数,并生成用于INSERT或SET语句的Type 4 UUID .
您也可以使用timeuuid具有类似函数的类型now().它们生成Type 1 UUID.
类型1和类型4 UUID之间的区别在于使用时间戳生成类型1 UUID,使用随机数生成类型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
| 归档时间: |
|
| 查看次数: |
57510 次 |
| 最近记录: |