标签: cql3

具有1个EQ限制和ORDER BY的cql3查询

使用CF:

CREATE TABLE history (
  domain text,
  iid text,
  timeid timeuuid,
  data text,
  comments text,
  PRIMARY KEY (domain, iid, timeid)
);
Run Code Online (Sandbox Code Playgroud)

我想像这样查询:

select domain, iid, timeid, data, comments from mappings
where domain = 'a' and iid = 'b'  order by timeid desc;
Run Code Online (Sandbox Code Playgroud)

但它失败并出现以下错误(cassandra 1.1.5):

Bad Request: Order by currently only support the ordering of columns following their declared order in the PRIMARY KEY
Run Code Online (Sandbox Code Playgroud)

我做错了吗?可能的解决方法是什么?谢谢

PS我使用单一的EQ限制和ORDER BY,但我需要至少2个限制和排序.

cassandra cql3

8
推荐指数
1
解决办法
5914
查看次数

为Cassandra中的地图中的元素选择TTL

有没有办法在Cassandra中使用CQL3为地图中的元素选择TTL值?

我试过这个,但它不起作用:

SELECT TTL (mapname['element']) FROM columnfamily
Run Code Online (Sandbox Code Playgroud)

cassandra cql3

8
推荐指数
1
解决办法
1156
查看次数

Cassandra CQL查询检查多个值

如何使用Cassandra CQL查询检查非主键字段的值是"A"还是"B"?(我正在使用Cassandra 2.0.1)

这是表定义:

CREATE TABLE my_table (
  my_field text,
  my_field2 text,
  PRIMARY KEY (my_field)
);
Run Code Online (Sandbox Code Playgroud)

我试过了:

1> SELECT * FROM my_table WHERE my_field2 IN ('A', 'B');

2> SELECT * FROM my_table WHERE my_field2 = 'A' OR my_field = 'B' ;
Run Code Online (Sandbox Code Playgroud)

第一个失败了这个messeage:

Bad Request: IN predicates on non-primary-key columns (my_field2) is not yet supported
Run Code Online (Sandbox Code Playgroud)

第二个失败是因为Cassandra CQL不支持OR关键字

我无法让这个简单的查询工作(以非常直接的方式).一般来说,我很沮丧地处理CQL查询.是因为Cassandra还不够成熟,对查询的支持很差,还是我必须改变思维方式?

cassandra cql3

8
推荐指数
1
解决办法
8383
查看次数

CQL3每行都有自己的架构

我想在.Net应用程序中使用Cassandra.我的目标是将一些数据存储在列族中,但每行数据都有不同的模式.

示例(非常简单)我希望有一个'Toys'列系列来存储以下对象,(注意它们除了ID属性之外还有非常不同的属性)

玩具对象1 {"id":"1","name":"Car","number_of_doors":4,"赞":3}

玩具对象2 {"id":"2","type":"Plane","flying_range":"100m"}

玩具对象3 {"id":"3","category":"Train","number_of_carriages":10}

从我最初的理解和使用Datastax CSharp驱动程序开始,我必须始终改变不适合我的表(Column系列).我希望每一行都有自己的架构.Thrift API可能能够解决这个问题,但似乎HectorSharp几乎已经死了.

一个类似于我的要求的问题,但它没有我想要的答案

Cassandra用于无模式数据库,每天有数百万个订单表和数百万个查询

我是通过期望每一行都有自己的架构来咆哮错误的树,还是有办法用Cassandra + Csharp做到这一点?

提前感谢您的回答.

c# cassandra cql3

8
推荐指数
1
解决办法
2611
查看次数

使用复合键进行查询,而不是Cassandra中的Row Key

我想通过CQL3中除Row Key之外的复合键来查询数据过滤.这些是我的疑问:

CREATE TABLE grades (id int,
  date timestamp,
  subject text,
  status text,
  PRIMARY KEY (id, subject, status, date)
);
Run Code Online (Sandbox Code Playgroud)

当我尝试访问数据时

SELECT * FROM grades where id = 1098; //works fine
SELECT * FROM grades where subject = 'English' ALLOW FILTERING; //works fine
SELECT * FROM grades where status = 'Active' ALLOW FILTERING; //gives an error
Run Code Online (Sandbox Code Playgroud)

错误请求:PRIMARY KEY部分状态不受限制(前一部分主题不受限制或非EQ关系)

只是为了试验,我把关键字保持为"我的主要行密钥".我总是只能使用主行键或第二个键进行查询,考虑到上面的例子,如果我在主键列表中交换主题和状态,我可以查询状态,但如果我尝试通过,我会得到类似的错误主题或时间.

难道我做错了什么?我可以不使用CQL3中的任何其他复合键查询数据吗?我正在使用Cassandra 1.2.6和CQL3.

composite-key cassandra cql3

7
推荐指数
1
解决办法
1万
查看次数

cassandra中的时间戳比较

如图所示,使用精确时间戳查询(2013-08-01 15:02:56)并未返回任何结果,但存在具有该时间戳的行但在查询时返回该行的结果

timestamps > '2013-08-01 15:02:56'

这是Cassandra的正常行为吗? 在此输入图像描述

timestamp cassandra cql3

7
推荐指数
2
解决办法
2万
查看次数

使用复合主键在Cassandra中分页结果集 - 在行上丢失

所以,我最初的问题是使用token()函数来浏览Cassandra 1.2.9中的大型数据集,如下所述:在Cassandra中使用带有varchar键的CQL3分页大型结果集

接受的答案是选择使用令牌和块大小,但另一个问题表现出来.

我的表在cqlsh中看起来像这样:

key           | column1               | value
---------------+-----------------------+-------
  85.166.4.140 |       county_finnmark |     4
  85.166.4.140 |       county_id_20020 |     4
  85.166.4.140 |     municipality_alta |     2
  85.166.4.140 | municipality_id_20441 |     2
 93.89.124.241 |        county_hedmark |    24
 93.89.124.241 |       county_id_20005 |    24
Run Code Online (Sandbox Code Playgroud)

主键是key和column1的组合.在CLI中,相同的数据如下所示:

get ip['85.166.4.140'];
=> (counter=county_finnmark, value=4)
=> (counter=county_id_20020, value=4)
=> (counter=municipality_alta, value=2)
=> (counter=municipality_id_20441, value=2)
Returned 4 results.
Run Code Online (Sandbox Code Playgroud)

问题

当使用限制为100的cql时,返回的结果可能会在记录中间停止,如下所示:

key           | column1               | value
---------------+-----------------------+-------
  85.166.4.140 |       county_finnmark |     4
  85.166.4.140 |       county_id_20020 |     4
Run Code Online (Sandbox Code Playgroud)

将这些留给"行"(列):

  85.166.4.140 | …
Run Code Online (Sandbox Code Playgroud)

cassandra cql3

7
推荐指数
1
解决办法
4715
查看次数

是否可以在不定义Cassandra中的列的情况下插入/写入数据?

我试图了解Cassandra数据模型的基本原理.我正在使用CQL.据我所知,必须先定义架构,然后才能插入新列.如果有人需要添加任何列,可以使用ALTER TABLE并将INSERT值插入该新列.

但是在cassandra权威指南中写道,Cassandra的架构较少.

In Cassandra, you don’t define the columns up front; you just define the column
families you want in the keyspace, and then you can start writing data without defining
the columns anywhere. That’s because in Cassandra, all of a column’s names are
supplied by the client.

我感到困惑,没有找到任何预期的答案.有人可以向我解释或告诉我,如果我错过了什么吗?

提前致谢.

cql cassandra cql3 cassandra-2.0

7
推荐指数
1
解决办法
1722
查看次数

如何在同一分区中保留2个Cassandra表

我尝试阅读有关数据存储博客和文档但未找到任何具体内容

有没有办法让Cassandra中的2个表属于同一个分区?例如:

CREATE TYPE addr (
  street_address1 text,
  city text,
  state text,
  country text,
  zip_code text,
);

CREATE TABLE foo (
  account_id timeuuid,
  data text,
  site_id int,
  PRIMARY KEY (account_id)
};

CREATE TABLE bar (
  account_id timeuuid,
  address_id int,
  address frozen<addr>,
  PRIMARY KEY (account_id, address_id)
);
Run Code Online (Sandbox Code Playgroud)

在这里,我需要确保这两个表/ CF都将存在于同一个分区,对于同一个account_id,这两组数据都可以从同一个节点获取

任何指针都非常感谢.

此外,如果有人在使用UDT(用户定义类型)方面有一些经验,我想了解向后兼容性如何工作.如果我修改"addr"UDT以获得更多属性(例如zip_code2 int和name text),具有这些属性的旧行如何工作?它甚至兼容吗?

谢谢

cassandra datastax-enterprise cql3 datastax-java-driver datastax

7
推荐指数
1
解决办法
971
查看次数

在CQL Cassandra中查找非主键列的不同值

我使用以下代码创建表:

CREATE KEYSPACE mykeyspace
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
USE mykeyspace;
CREATE TABLE users (
  user_id int PRIMARY KEY,
  fname text,
  lname text
);
INSERT INTO users (user_id,  fname, lname)
  VALUES (1745, 'john', 'smith');
INSERT INTO users (user_id,  fname, lname)
  VALUES (1744, 'john', 'doe');
INSERT INTO users (user_id,  fname, lname)
  VALUES (1746, 'john', 'smith');
Run Code Online (Sandbox Code Playgroud)

我想找到lname列的不同值(不是PRIMARY KEY).我想得到以下结果:

 lname
-------
 smith
Run Code Online (Sandbox Code Playgroud)

通过使用SELECT DISTINCT lname FROM users; 但是因为lname不是PRIMARY KEY我得到以下错误:

InvalidRequest: …
Run Code Online (Sandbox Code Playgroud)

select cql distinct cassandra cql3

7
推荐指数
2
解决办法
1万
查看次数