使用 Cassandra (CQL 3) 实现类似表的堆栈

Posted

技术标签:

【中文标题】使用 Cassandra (CQL 3) 实现类似表的堆栈【英文标题】:Implementing a stack like table with Cassandra (CQL 3) 【发布时间】:2015-08-15 09:09:17 【问题描述】:

首先,请您多多包涵,如果这是一个愚蠢的问题,我深表歉意。

我有一张这样的桌子。

create table users (
cname text,
--anything else like counter or timestamp
primary key (cname)
);

我需要做的就是用那个表实现一个类似堆栈的结构。

会有很多插入和删除操作。

面临的问题:

1) 我尝试使用时间戳。我使用dateof(now()) 成功插入,但我只想删除最后一条记录 (???)。另外,通过将cname,t(其中t 的类型为timestamp)作为主键,我得到了我不想要的多余的cname。

2) 我尝试使用counter,但我觉得它很复杂。此外,我可能有多个线程或客户端执行插入/删除操作。所以,我想离开它。

3) 另外,我不会知道 cname 的值。因此,在 where 子句中需要键的查询是不可能的。所以我想我需要将主键更改为其他变量。

请帮助我前进。我觉得这有点困难,因为没有好书可供 cql 学习。

【问题讨论】:

【参考方案1】:

堆栈和队列是 cassandra (http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets) 中的反模式 - 您可以实现它们,但您需要充分了解内部原理,然后才能在不犯可怕错误的情况下做到这一点。很明显,您可能还没有达到那个水平。

您认为需要将 cassandra 用于堆栈有什么原因?

是的,您的主键的第一部分(称为分区键)需要您知道,所以如果您不知道 cname,它可能不太适合您的主键。您对数据/使用模式了解多少?也许时间桶?

【讨论】:

以上是关于使用 Cassandra (CQL 3) 实现类似表的堆栈的主要内容,如果未能解决你的问题,请参考以下文章

执行简单的CQL操作

Cassandra 3.11.1 地理空间支持

Cassandra CQL - NoSQL 或 SQL

Cassandra Cql 范围选择

从 SoapUI 连接到 Cassandra 3.0.3(使用 9042)

使用 CQL3 在 Cassandra 中进行数据版本控制