使用 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) 实现类似表的堆栈的主要内容,如果未能解决你的问题,请参考以下文章