我知道,Cassandra通常会将所有列名转换为小写。
在Cassandra 的列名中使用驼峰大小写对性能有影响吗?
我在列中使用了双引号,并且能够将列名存储在驼峰大小写中,如下所示
CREATE TABLE test (
Foo int PRIMARY KEY,
"Bar" int
);
使用双引号存储列名是否会影响性能?
空间明智 没有。性能方面,没有。(好吧,即使假设你必须连接双引号,如果你使用准备好的语句,你也会发送一次,所以可以忽略不计(
在Cassandra 3上,名字只在sstables的标题上写一次(参考:http://thelastpickle.com/blog/2016/03/04/introductiont-to-the-apache-cassandra-3-storage-engine.html(。
必须始终提供双引号(例如 CQLSH(变得很奇怪,所以我通常不这样做。此外,从 Thrift 开始并迁移到 CQL 的旧集群也有很多这样的内容。因此,为了避免对起源的混淆(但有更好的方法来验证这一点(,最好不要使用引号。
我不相信有影响。我想说的是,CQL 的不区分大小写的性质仅用于简化查询,从以下答案可以看出:https://stackoverflow.com/a/28447941/824644
此外,由于Java(编写Cassandra的语言(中偏爱较小的骆驼大小写,这种行为似乎有动机。请参阅此 GitHub 问题中的讨论:https://github.com/reuzel/CqlSharp/issues/28
在性能方面没有影响。CQL 将不带引号的标识符下调。我知道这可能会给开发人员带来麻烦,因为处理驼峰或混合情况可能很容易,但如果您尝试通过 API 访问该表,那么您可能已经定义了一个映射到该表的类。我没有看到任何开销,您需要在通过 API 访问时更改表名等。
此外,当您有一个更大的开发团队时,将列命名为小写或使用下划线而不是驼峰大小写被视为一种很好的数据建模实践。这是由Cassandra默认完成的。如果您确实需要大小写,则只需使用双引号。