Datastax C#驱动程序中的Cassandra timeuuid

用户名

哪种C#类型等效于Datastax Cassandra C#驱动程序中的timeuuid?

我正在编写一个简单的用户跟踪服务,并希望访问最新的用户历史记录。我正在尝试创建一个与此create语句等效的表:

CREATE TABLE IF NOT EXISTS user_history (
    user_id text,
    event_type text,
    create_date timeuuid,
    item_id text,
    PRIMARY KEY ((user_id, event_type), create_date)
);

我已经完成了以下课程:

[AllowFiltering]
[Table("user_history")]
public class UserHistory
{
    [PartitionKey(1)]
    [Column("user_id")]
    public string UserID;

    [PartitionKey(2)]
    [Column("event_type")]
    public string EventType;

    [ClusteringKey(1)]
    [Column("create_date")]
    public DateTime CreateDate { get; set; }

    [Column("item_id")] 
    public string ItemID;
}

我正在使用以下语句在Cassandra中创建表:

var table = Session.GetTable<UserHistory>();
table.CreateIfNotExists();

但这给了我下表:

CREATE TABLE user_history (
  user_id text,
  event_type text,
  create_date timestamp,
  item_id text,
  PRIMARY KEY ((user_id, event_type), create_date)
)

正如你所看到的类型,create_datetimestamp不是timeuuid

我尝试Guid代替DateTime,但是给我一个uuid打电话的时间.CreateIfNotExists()

我应该使用Guid,而不是DateTime用于CreateDate创造使用原始CQL3表明确?我想这将使我能够与timeuuidCassandra进行读写(使用GuidGeneratorFluentCassandra项目中的内容)?(回想一下:我正在使用Datastax驱动程序)

保罗·扎赫拉

Timeuuid基本上是一个GUID,因此您应该使用GUID,以下代码摘自此处:创建一个时间Uuid-GUID-in-net,它是FluentCassandra项目的一部分

“下面是在.NET中生成时间UUID或基于时间的Guid对象所需的所有代码。”

public static Guid GenerateTimeBasedGuid(DateTime dateTime)  
{
    long ticks = dateTime.Ticks - GregorianCalendarStart.Ticks;

    byte[] guid = new byte[ByteArraySize];
    byte[] clockSequenceBytes = BitConverter.GetBytes(Convert.ToInt16(Environment.TickCount % Int16.MaxValue));
    byte[] timestamp = BitConverter.GetBytes(ticks);

    // copy node
    Array.Copy(Node, 0, guid, NodeByte, Node.Length);

    // copy clock sequence
    Array.Copy(clockSequenceBytes, 0, guid, GuidClockSequenceByte, clockSequenceBytes.Length);

    // copy timestamp
    Array.Copy(timestamp, 0, guid, 0, timestamp.Length);

    // set the variant
    guid[VariantByte] &= (byte)VariantByteMask;
    guid[VariantByte] |= (byte)VariantByteShift;

    // set the version
    guid[VersionByte] &= (byte)VersionByteMask;
    guid[VersionByte] |= (byte)((int)GuidVersion.TimeBased << VersionByteShift);

    return new Guid(guid);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Cassandra:使用DataStax Java驱动程序选择一系列TimeUUID

使用DataStax C#驱动程序处理Cassandra中的所有节点

无法使用DataStax C#驱动程序从Cassandra获取值

如何使用 C# Datastax 驱动程序删除 Cassandra 上的表?

使用DataStax C#驱动程序时故障转移不适用于Cassandra

DynamoDB中的Cassandra TimeUUID

Datastax Cassandra C ++驱动程序中核心连接和I / O线程之间的区别

C#DataStax驱动程序中的CassandraEntityBase

cassandra datastax驱动程序抛出的写入超时

Cassandra Datastax驱动程序-连接池

Cassandra DataStax驱动程序:如何分页浏览

Datastax Cassandra Java驱动程序的Accessor是否使用分页?

datastax cassandra java驱动程序PlainTextAuthProvider示例

Cassandra模型的CQL(datastax驱动程序:python)

Datastax-Cassandra PHP驱动程序-执行CQL脚本

Datastax Java Cassandra驱动程序:使用WHERE的多个AND语句?

Cassandra准备的语句错误与datastax php驱动程序

Datastax Cassandra驱动程序(python)导入失败

带分页的Datastax Cassandra Java驱动程序RetryPolicy

Nodejs - Apache Cassandra(使用 Datastax 驱动程序)

DS201:使用Python驱动程序插入cassandra时,如何获取“ timeuuid类型”的值?

Cassandra如何处理Datastax Java驱动程序中的阻塞执行语句

datastax cassandra驱动程序:如何从ResultSet列表中为插入语句返回成功或失败

无法将结果集转换为Cassandra datastax驱动程序中的列表

Cassandra Datastax Java 驱动程序看不到配置中的环境变量

C#Cassandra DataStax驱动程序版本兼容性

Cassandra UUID与TimeUUID的优缺点

Datastax驱动程序日志级别

Datastax C#驱动程序3.3.0在连接集群时死锁?