在Cassandra中创建表和创建列家族有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Cassandra中创建表和创建列家族有什么区别?相关的知识,希望对你有一定的参考价值。

我需要从性能和查询方面的细节,我从一些网站上了解到,在使用columnfamily时只能给出一个密钥,如果是这样你会给我的密钥空间建议什么,我需要使用group by,order by,count,sum ,ifnull,concat,join,有时是嵌套查询。

答案

回答你提出的原始问题:列族和表是一回事。

  • 名称“列族”用于较旧的Thrift API
  • 名称“table”用于较新的CQL API

有关API的更多信息,请访问:http://wiki.apache.org/cassandra/API

如果您需要使用“group by,order by,count,sum,ifnull,concat,joins和有时嵌套查询”,那么您可能不想使用Cassandra,因为它不支持大多数。

CQL支持COUNT,但最多只支持10000.它支持ORDER BY,但仅支持群集密钥。你提到的其他事情根本不受支持。

另一答案

请参阅文档:https://cassandra.apache.org/doc/old/CQL-3.0.html

它指定CQL的LRM支持TABLE关键字,只要支持COLUMNFAMILY。

这证明了TABLE和COLUMNFAMILY是同义词。

另一答案

在cassandra中,table和columnfamily之间没有区别。他们是一个概念。

另一答案

列族与关系数据库的表有些相关,具有分布差异甚至可能是理想主义的特征。

想象您有一个可能包含15列的用户实体,在关系数据库中,您可能希望将列分成基于小相关列的结构,我们都知道这些结构为表。在像Cassandra这样的分布式数据库中,您将能够将所有这些表条目连接成一个长行,因此如果您将使用profiler / db管理器,您将看到一个包含15列而不是2/3表的表。另一个有趣的事情是,每个列族都写入不同的节点,可能在不同的集群上,并被行键识别,这意味着您将拥有所有列族的单个键,而不需要维护PK或每个表的FK并保持它们之间的关系,具有1-1,1-n,nn关系。简单!

以上是关于在Cassandra中创建表和创建列家族有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 中创建表和主键问题

如何通过 PowerShell 或 ARM 模板在 Azure 数据资源管理器中创建表和摄取映射

通过终端在 InfluxDB 中创建表

无法使用 JPA 在 H2 中创建表和加载数据

创建一个 MYSQL 存储过程以在不同的数据库中创建表

在配置单元中创建表时向列添加默认值