Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 卡桑德拉通过不做我所做的事情来排序';我希望_Database_Cassandra_Cql_Cql3_Cqlsh - Fatal编程技术网

Database 卡桑德拉通过不做我所做的事情来排序';我希望

Database 卡桑德拉通过不做我所做的事情来排序';我希望,database,cassandra,cql,cql3,cqlsh,Database,Cassandra,Cql,Cql3,Cqlsh,我对Cassandra很陌生,我创建了一个如下表: CREATE TABLE IF NOT EXISTS notifications ( id uuid, raised timeuuid, recorded timeuuid, customer varchar, region varchar, location varchar, operator varchar, till varchar, receipt_id varchar, value decima

我对Cassandra很陌生,我创建了一个如下表:

CREATE TABLE IF NOT EXISTS notifications (
  id uuid,
  raised timeuuid,
  recorded timeuuid,
  customer varchar,
  region varchar,
  location varchar,
  operator varchar,
  till varchar,
  receipt_id varchar,
  value decimal,
  details text,
  is_refund boolean,
  has_promos boolean,
  utc_offset int,
  frame_count int,
  expecting_video boolean,
  PRIMARY KEY (id, raised)
) WITH CLUSTERING ORDER BY (raised desc);
然后从DataStax.NET Cassandra适配器插入1000行,如下所示:

for (var i = 0; i < 1000; i++)
{
                    var id = Guid.NewGuid();
                    var now = DateTime.Now;

                    var insertNotif = session.Prepare(@"
                    INSERT INTO notifications 
                    (id,customer,region,location,operator,till,receipt_id,value,details,is_refund,has_promos,raised,recorded,utc_offset,frame_count,expecting_video)
                    VALUES (?,?,?,?,?,?,?,?,?,?,?,now(),now(),?,?,?)");
                    var insertNotifStatement = insertNotif.Bind(id, "cust1", "reg1", "loc1", "tomm", "london", i.ToString(), i % 10.99D, "DATA_HERE", false, true, (int)TimeZone.CurrentTimeZone.GetUtcOffset(now).TotalMinutes, 0, false);

                    session.Execute(insertNotifStatement);
                    Thread.Sleep(10);
}
我做错什么了吗? 顺便说一句,我还尝试将
提升
设置为一个timestamp列,并期望具有相同的行为(但我从.NET而不是now()传入了DateTimes),但其行为方式完全相同


如何以时间降序的方式获取存储和检索的记录?

聚类顺序是指分区内的顺序,即相同ID的顺序。因此,如果插入具有不同
提升值的多行并进行查询,您将看到它们以降序返回

您看到的顺序是ID的顺序。正如你所观察到的,这些基本上是随机的。此顺序是分区器顺序,即按ID的哈希排序


您无法更改此顺序,因此无法按时间顺序读取所有分区。您只能在每个分区内排序

仅当分区键受eq或in限制时才支持order by。我没有使用order by,我希望记录按日期降序存储,因为架构中定义了群集顺序。通过查询数据,我希望数据按群集顺序定义的顺序返回。谢谢,好信息,那么我如何按日期描述顺序检索所有通知?除非将它们全部放在同一分区中,否则无法检索。但是你没有任何可伸缩性。如果需要读入所有数据,可以使用Hadoop或Shark。
cqlsh:my_keyspace> select dateOf(raised) from notifications limit 5;

 dateOf(raised)
--------------------------------------
 2014-06-03 11:12:45GMT Daylight Time
 2014-06-03 11:12:48GMT Daylight Time
 2014-06-03 11:12:56GMT Daylight Time
 2014-06-03 11:12:32GMT Daylight Time
 2014-06-03 11:12:34GMT Daylight Time

(5 rows)