在Cassandra专栏中使用camelCase的性能影响

时间:2018-01-30 11:05:34

标签: apache cassandra cassandra-3.0

我知道,Cassandra通常会将所有列名转换为小写。

在Cassandra的列名中使用camelCase会对性能产生影响吗?

我在列中使用了双引号,我可以将列名存储在camelCase中,如下所示

CREATE TABLE test (
  Foo int PRIMARY KEY,
  "Bar" int
);

使用双引号存储列名是否会对性能产生影响?

谢谢,
哈利

3 个答案:

答案 0 :(得分:2)

空间明智没有。表现明智,没有。 (好吧,即使假设您必须连接双引号,如果您使用准备好的语句,您将发送一次,因此它可以忽略不计)

在Cassandra 3上,名字只在sstables的Header上写一次(参考:http://thelastpickle.com/blog/2016/03/04/introductiont-to-the-apache-cassandra-3-storage-engine.html)。

必须始终提供双引号(例如CQLSH)非常奇怪,所以我通常不会这样做。 此外,以Thrift开始并迁移到CQL的旧群集有很多。因此,为了避免对起源的混淆(但有更好的方法来验证这一点),最好保留引号。

答案 1 :(得分:1)

我不相信这会产生影响。我会说CQL的不区分大小写的特性仅用于简化查询,正如您从这个答案中看到的那样:https://stackoverflow.com/a/28447941/824644

此外,由于Java中较低的驼峰情况(这是编写Cassandra的语言),似乎存在这种行为的动机。请参阅此GitHub问题中的讨论:https://github.com/reuzel/CqlSharp/issues/28

答案 2 :(得分:1)

明显没有影响性能。 CQL下载不带引号的标识符。 我知道它可能会给开发人员带来麻烦,因为它可能很容易处理骆驼或混合情况但是如果你试图通过API访问表,那么你可能已经定义了一个映射到该表的类。在通过API访问时,我没有看到需要更改表名等的任何开销。

此外,当你拥有一个更大的开发团队时,它被视为一种很好的数据建模实践,可以将列命名为小写或使用下划线而不是驼峰。这是由cassandra默认完成的。如果你真的需要套管,那么只需使用双引号。