gpt4 book ai didi

cassandra - CQL 表中的空列

转载 作者:行者123 更新时间:2023-12-02 22:25:13 25 4
gpt4 key购买 nike

我目前正在尝试将一个项目从 Cassandra 的 Thrift 界面(我越来越喜欢它)迁移到 CQL。我有以下困扰我的“问题”。我创建一个事件表:

CREATE TABLE events (
eventKey uuid PRIMARY KEY,
type decimal,
severity decimal,
source inet
);

当我坚持使用 CQL 时,一切看起来都很棒。为了更好地理解,我在 CLI 中查看了它,发现对于每个条目(thrift 行),我都有一个空列:

[default@test] list events;
Using default limit of 100
Using default cell limit of 100
-------------------
RowKey: a9ddffba-3c30-4119-add8-966dddb38490
=> (name=, value=, timestamp=1396364167269000)
=> (name=type, value=0000000001fe, timestamp=1396364167269000)
=> (name=severity, value=00000000ff, timestamp=1396364167269000)
=> (name=source, value=0000000000000065, timestamp=1396364167269000)
-------------------
RowKey: a9ddffba-3c30-4119-add8-966aaab384a0
=> (name=, value=, timestamp=1396363462812000)
=> (name= source, value=0000000000000065, timestamp=1396363462812000)
-------------------
RowKey: a9ddffba-3c30-4119-add8-966aaab38490
=> (name=, value=, timestamp=1396364010098000)
=> (name= source, value=0000000000000066, timestamp=1396364010098000)

据我了解,这是因为我没有使用紧凑模式,因此 Cassandra 创建一个列作为列名称的索引。如果我使用宽行,即如果我的主键看起来像(eventKey,类型,严重性),那么这是非常有意义的。但是,我不明白在这种情况下我如何需要它,虽然它只是一个空列,但它仍然会生成一些额外的但(我认为)不必要的数据量。对此有什么想法吗?我错过了什么吗?

如果我使用紧凑存储,则不会创建列。但是,我无法真正更改架构,因为“错误请求:无法从紧凑存储表中删除列”——有人也可以向我解释一下吗?特别是因为它可以在 CLI 中实现,而且我一直在阅读如何在 CQL 中完成在 thrift 中可以完成的所有操作,甚至更多。

最佳答案

那些“空”列是 Cassandra 内部使用的“CQL 行”标​​记。是的,这些需要额外的存储空间,但它们使您可以灵活地在以后更改架构。

使用COMPACT STORAGE将不会产生存储开销,但表的架构将一成不变。

http://www.datastax.com/dev/blog/thrift-to-cql3 有一个很好的解释

关于cassandra - CQL 表中的空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22790444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com