Cassandra CQL 3.2.1 清除列数据
Posted
技术标签:
【中文标题】Cassandra CQL 3.2.1 清除列数据【英文标题】:Cassandra CQL 3.2.1 Clear column data 【发布时间】:2016-04-22 10:40:56 【问题描述】:我需要使用 CQL 从表中的列中清除数据 我在单个节点上尝试了以下测试,效果很好。
但这会在许多节点和不同的复制因子上运行吗?
DROP KEYSPACE IF EXISTS testColumnDrop;
CREATE KEYSPACE testColumnDrop WITH REPLICATION = 'class' : 'SimpleStrategy', 'replication_factor' : 1 ;
USE testColumnDrop;
CREATE TABLE contracts (
id varchar PRIMARY KEY,
licenses varchar
);
INSERT INTO contracts(id, licenses) VALUES('one', '"number":"1.0"');
INSERT INTO contracts(id, licenses) VALUES('two', '"number":"2.0"');
INSERT INTO contracts(id, licenses) VALUES('three', '"number":"3.0"');
SELECT * FROM contracts;
ALTER TABLE contracts DROP licenses;
ALTER TABLE contracts ADD licenses varchar;
SELECT * FROM contracts;
【问题讨论】:
【参考方案1】:来自 DataStax 文档:
ALTER DROP 从表定义中删除列,删除数据 与该列有关,并最终收回以前的空间 列使用。该列无法立即查询 被丢弃后。 实际的数据删除发生在压缩过程中; 数据将来不会包含在 SSTables 中。强制删除 在压缩发生之前删除的列,使用节点工具 upgradesstables 命令后跟一个 ALTER TABLE 语句,它 更新表元数据以注册 drop。
重新添加删除的列后,查询不返回值 在最后一次删除列之前写入。不要重新添加丢弃的 使用客户端提供的时间戳将列添加到表中,这不是 Cassandra 生成的写入时间。
您不能从使用 COMPACT STORAGE 定义的表中删除列 选项。
希望对你有帮助
【讨论】:
是的,我读到了,不确定它对上述内容是否足够具体 - 我已经在树节点集群上运行了脚本并且工作正常 - 但谢谢,很高兴在这里提供参考【参考方案2】:我使用 Docker 和三个节点的集群进行了尝试,效果很好
【讨论】:
以上是关于Cassandra CQL 3.2.1 清除列数据的主要内容,如果未能解决你的问题,请参考以下文章
解释 Cassandra 系统表“system_traces.events”中的“source_elapsed”列
python cql 驱动程序 - cassandra.ReadTimeout -“操作超时 - 仅收到 1 个响应。”