鉴于TimeUUID方便地允许您now()在CQL中使用,是否有任何理由您不会继续使用TimeUUID而不是普通的旧UUID?
有谁知道如何在Java/Scala中生成基于TimeBased的UUID?
这是列系列:
CREATE table col(ts timeuuid)
Run Code Online (Sandbox Code Playgroud)
我正在使用Cassandra 1.2.4
感谢您的帮助!
如果我们可以从 TimeUUID 中提取时间,那么在 Cassandra 中使用时间戳作为另一列是否有意义?
另外,我们如何从 TimeUUID 中提取时间并对其进行范围查询(例如 2016 年 1 月至 2016 年 5 月)?
在处理数据需要在 UUID 上排序的用例时,这些数据都是类型 1 或基于时间并使用 Datastax Cassandra Java 驱动程序库 (UUIDS.timebased()) 生成的,我发现 UUID.compareTo 没有对某些数据进行排序UUID 正确。compareTo 中的逻辑是
/**
* Compares this UUID with the specified UUID.
*
* <p> The first of two UUIDs is greater than the second if the most
* significant field in which the UUIDs differ is greater for the first
* UUID.
*
* @param val
* {@code UUID} to which this {@code UUID} is to be compared
*
* @return -1, 0 or 1 as this …Run Code Online (Sandbox Code Playgroud) 我有一个TimeUuid需要将其转换为DateTime.
有没有办法在 C# 中做到这一点?
我正在使用DataStax 中的 CassandraCsharpDriver,但它不具备将 转换TimeUuid为 的功能Datetime,但相反的情况也是可能的。
示例 UUID:d91027c5-bd42-11e6-90be-2b4914b28d57
我正在尝试保存java.util.UUID到Cassandra类型的列timeuuid.例如,这是一个默认的spring-data-cassandra映射:http://docs.spring.io/spring-data/cassandra/docs/current/reference/html/#mapping-conversion.UUID的值是由java.util.UUID#randomUUID()
我得到一个异常生成的:
"com.datastax.driver.core.exceptions.InvalidQueryException: Invalid version for TimeUUID type"
@Override
public void validate(byte[] bytes)
{
if (bytes.length != 16 && bytes.length != 0)
throw new MarshalException(String.format("TimeUUID should be 16 or 0 bytes (%d)", bytes.length));
// version is bits 4-7 of byte 6.
if (bytes.length > 0)
if ((bytes[6] & 0xf0) != 0x10)
throw new MarshalException("Invalid version for TimeUUID type.");
}
Run Code Online (Sandbox Code Playgroud) 我在Cassandra中创建了一个表,并希望根据具有timeuuid类型的列的条件选择数据.
CREATE TABLE shahid.stock_ticks(
symbol varchar,
date int,
trade timeuuid,
trade_details text,
PRIMARY KEY ( (symbol, date), trade )
) WITH CLUSTERING ORDER BY (trade DESC) ;
INSERT INTO shahid.stock_ticks (symbol, date, trade, trade_details) VALUES ('NFLX', 1, now(), 'this is 10' );
INSERT INTO shahid.stock_ticks (symbol, date, trade, trade_details) VALUES ('NFLX', 1, now(), 'this is 2' );
INSERT INTO shahid.stock_ticks (symbol, date, trade, trade_details) VALUES ('NFLX', 1, now(), 'this is 3' );
Run Code Online (Sandbox Code Playgroud)
上面的查询已插入记录,一条记录在交易栏中的值为"2045d660-9415-11e5-9742-c53da2f1a8ec".
我想选择这样但它给出了错误
select * from shahid.stock_ticks where symbol …Run Code Online (Sandbox Code Playgroud) uuid或通用唯一标识符和timeuuid是长 128 位值。
在 Cassandra 数据库中,由于它的概念,我使用uuid和timeuuid作为我们的实体标识符,现在我想压缩uuid和timeuuid或在客户端(用户)可以在 URL 栏中看到 id 时减小其大小。
例如 Twitter 也使用了 Cassandra,但是当你打开一条推文时,推文的 id 就像是10153967535312713一个简单的uuid就像10646334-2c02-11e6-bb4a-7720eb141b83是更多的字符而不是用户友好的(当然这两个 ID 都不是用户友好的:D)
在不同的编程语言中都有一些压缩函数,例如PHP中的gzcompress和 Java中的GZIPOutputStream,但是这些函数(类)会压缩数据并以GZIP格式返回,这在URL中是不允许使用的!
现在顺便说一下,有没有什么方法或函数/算法来获得更小或压缩版本的 uuid 或 timeuuid?