问题标签 [cql3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2420 浏览

performance - 使用 timeuuid 作为列名将日志数据写入 Cassandra 时性能不佳

按照ebay 技术博客datastax 开发人员博客中的指示,我在 Cassandra 1.2 中对一些事件日志数据进行建模。作为分区键,我使用“ddmmyyhh|bucket”,其中 bucket 是介于 0 和集群中节点数之间的任意数字。

数据模型

cqlsh:Log> CREATE TABLE transactions (yymmddhh varchar, bucket int, rId int, created timeuuid, data map, PRIMARY KEY((yymmddhh, bucket), created) );

(rId 标识触发事件的资源。)(映射是从 JSON 派生的键值对;键更改,但变化不大)

我假设这会转化为一个复合主键/行键,每小时有 X 个存储桶。我的列名比timeuuids。查询此数据模型按预期工作(我可以查询时间范围。)

问题在于性能:插入新行的时间不断增加。所以我在做某事。错了,但无法确定问题所在。

当我使用 timeuuid 作为行键的一部分时,性能在较高水平上保持稳定,但这会阻止我查询它(没有行键的查询当然会抛出有关“过滤”的错误消息)。

有什么帮助吗?谢谢!

更新

从映射数据类型切换到预定义的列名可以缓解这个问题。现在插入时间似乎保持在每次插入 <0.005 秒左右。

核心问题仍然存在: 我如何高效地使用“map”数据类型?对于数千个插入只有轻微变化的键来说,什么是一种有效的方法。

我在地图中使用数据的键大多保持不变。我理解datastax文档(由于声誉限制无法发布链接,抱歉,但很容易找到)说每个键创建一个额外的列 - 或者它是否为每个“地图”创建一个新列??那将是……我很难相信。

0 投票
1 回答
248 浏览

cassandra - CREATE TABLE 失败(错误的 CQL 版本)

使用 inet、多个主键和集合创建表失败。语法是正确的。

错误消息对主键(不匹配的括号)没有意义。删除它,我了解到除了某些情况外,inet 将无法工作。

我做错了什么,或者不了解使用 CQL3(接口或语法)?

以下也失败了

这有效

线索

DSE 3.0.x

[编辑] - 原来 DSE 安装了 Cassandra 1.1.x。

0 投票
3 回答
1400 浏览

cassandra - Cassandra 将性能问题插入到具有地图类型的表中

嗨,我正在尝试了解使用 cql3 将数据插入到具有地图类型的表中时遇到的这个问题。通常我可以在每个 cql3 线程中插入数据平均约 1000 iops 没有问题。一旦我添加了地图类型,插入在大约 100,000 个条目后超时并出现此错误:无法完成请求:一个或多个节点不可用。在多个节点上(甚至跨数据中心),我注意到插入期间 CPU 负载异常高。

每个节点的规格是:Cpu:16 核心内存:64GB

这是我设置的测试表架构。

卡桑德拉版本 1.2.4

更新:目前我们只是从其他 rdbms 导入数据。大约 100% 的时间,我们要么添加新行,要么向地图列添加新元素。我知道地图列可以拥有的元素数量的限制。

0 投票
4 回答
60330 浏览

nosql - Cassandra 中的 MAX()、DISTINCT 和 group by

我正在尝试改造一个 SQL 数据库 Cassandra,以便我可以找到与 SQL 查询等效的 Cassandra。我使用 CQL 3 和 Cassandra v1.2。我在 cassandra 中对 db 设计进行了建模,使其支持 order by 子句和非规范化表以支持连接操作。然而,当谈到 DISTINCT、SUM() 和 GROUPBY 等价物时,我在海上

这就像我过去几天工作的一个亮点。Cassandra 中有没有一种方法可以对数据库模式进行建模以支持此类查询?我想不出 Cassandra 有什么办法。如何使用 Cassandra 实现这样的查询?

我读到 Cassandra 上的配置单元层可能会使这些查询工作。我只是想知道这是否是 Cassandra 支持此类查询的唯一方法..?请建议任何其他可能的方法..

0 投票
1 回答
184 浏览

cassandra - 跟踪错误“对象不可迭代”

Cassandra 写入表的速度很慢(每次插入的写入延迟为 38 毫秒)。我试图通过打开跟踪来找出原因。但是我收到了这个错误,我不明白。请注意,插入本身确实成功。我正在使用 cassandra 1.2.5

错误:“NoneType”对象不可迭代

这是插入:

这是表格说明:

0 投票
1 回答
587 浏览

cassandra - 从 cqlsh (cql3) 中看不到添加到 cassandra-cli 中列族的新列

我在cql3中定义了一个表。描述它返回以下内容:

CREATE TABLE 结果(
id uuid PRIMARY KEY、
casename text、
result text、
run int、
user text
) WITH ...

我尝试使用这样一个事实,即这不应该限制列族并添加一个新的列值对:

但这不起作用。如果我使用 cassandra-cli,我可以使用标准集语法添加 sogginess 的值,并且该行正常保留。即使切换回 cql3,select * 查询也不会返回这个新列,也没有 describe 显示新列 sogginess。

这意味着您不能将任意数据添加到 cql3 中的行并且您受定义的架构的约束?如果没有,我该怎么做?

0 投票
2 回答
945 浏览

cassandra - Cassandra CQL3 更新单个宽行上的缓慢性能

我正在尝试使用以下 CQL3 语句将列族更新 50k 次:

这里要说明的重要一点是 partition_key 对于所有 50k 记录都是相同的。

我要么向 cassandra 发送此查询 50k 次,要么使用 BATCH ... APPLY BATCH 一次批量处理 5000 个;无论哪种方式,都需要大约 10 分钟,而没有网络延迟可言。我知道内部结构是一排宽的。这就是它慢的原因吗?

我的内部结构也正确吗?如果 CF 创建 CQL 如下所示:

然后我的内部 CF 将 partition_key 作为分区键,列键将是 column_key(0)#value_1, column_key(0)#value_2, column_key(0)#value_3, column_key(0)#value_4, coulmn_key(1)#值_1 .......

0 投票
2 回答
247 浏览

java - 卡桑德拉模式

我目前在 Cassandra 中设计了一个模式,但我想知道是否有更好的方法来做事。基本上,问题在于大多数(如果不是全部)读取都是动态的。我已经构建了一个分段系统作为读取动态自定义查询的应用程序服务(与 Ca​​ssandra 完全无关,但查询是严格的并且仅限于应用程序),它会继续查询 cassandra 并合并结果。

我已经将大多数列族设置为我认为好的那样宽,并且因为数据是非常密集的写入,所以使用复合键来划分负载。

这基本上是在 Cassandra 之上实现一个特定于应用程序的查询层,包括进行某种连接或合并操作。

此布局或流程是否有任何限制?

0 投票
2 回答
9583 浏览

cassandra - 使用 CQL3 在 Cassandra 中插入任意列

在 CQL3 之前,可以插入任意列,例如以日期命名的列:

根据这篇文章,CQL3 中的情况似乎有所不同。是否仍然可以插入任意列?这是我失败的尝试:

我在这里得到Bad Request: line 1:29 no viable alternative at input 'foo'

所以我尝试了一个稍微不同的表,因为这可能是复合键的限制:

再次与Bad Request: line 1:29 no viable alternative at input 'foo'

我在这里想念什么?

0 投票
2 回答
1583 浏览

cassandra - 带有 CQL3 的 Apache Cassandra 中的“无法在 PRIMARY KEY 部分创建索引”错误

我正在关注“Cassandra 专家的 CQL3”(http://www.datastax.com/dev/blog/cql3-for-cassandra-experts#comment-259613)文章。执行

工作正常。但是当试图运行时

我收到一个错误:

文章说它应该可以正常工作。这是一个错误还是我做错了什么?

我正在运行 Cassandra 1.2.4 并使用 JDBC 1.2.5 驱动程序连接到它。