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

问题描述 投票:26回答:4

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

cassandra cassandra-cli
4个回答
42
投票

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

  • 名称“列族”用于较旧的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,但仅支持群集密钥。你提到的其他事情根本不受支持。


2
投票

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

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

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


2
投票

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


-1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.