我需要来自性能和查询方面的详细信息,我从某些网站了解到,在使用columnfamily时只能给出一个密钥,如果是这样,你会为我的密钥空间建议什么,我需要使用group by,order by,count,sum,ifnull,concat,join,以及有时嵌套查询。
答案 0 :(得分:43)
回答你提出的原始问题:列族与表是相同的。
有关API的更多信息,请访问: http://wiki.apache.org/cassandra/API
如果 需要 使用“group by,order by,count,sum,ifnull,concat,joins和有时嵌套查询”,那么你可能会说不想使用Cassandra,因为它不支持大多数。
CQL支持COUNT
,但最多只支持10000.它支持ORDER BY
,但仅支持群集密钥。你提到的其他事情根本不受支持。
答案 1 :(得分:2)
请参阅文档:https://cassandra.apache.org/doc/old/CQL-3.0.html
它指定在支持COLUMNFAMILY的地方,CQL的LRM支持TABLE关键字。
这证明TABLE和COLUMNFAMILY是同义词。
答案 2 :(得分:2)
在cassandra中,table和columnfamily之间没有区别。他们是一个概念。
答案 3 :(得分:0)
对于Cassandra 3+和cqlsh 5.0.1
要进行验证,请在键空间(ksp)内输入cqlsh提示符:
CREATE COLUMNFAMILY myTable (
... id text,
... name int
);
然后输入“ desc myTable”。
您会看到:
CREATE TABLE ksp.myTable (
... id text,
... name int
);
它们是同义词,Cassandra默认使用表。
答案 4 :(得分:0)
这里是理解概念的小例子。 键空间是一个包含列族、用户定义类型的对象。
创建keyspace大学 复制={'class':SimpleStrategy, 'replication_factor': 3};
创建表 University.student(roll int Primary KEY, 部门文字, 名称文字, 学期int)
'Create table', 表 'Student' 将在键空间 'University' 中创建,其中包含 RollNo、Name 和 dept 列。 RollNo 是主键。 RollNo 也是一个分区键。 所有数据都将在单个分区中。
在 Cassandra 中更改 Keyspace 时的关键方面
键空间名称:不能在 Cassandra 中更改键空间名称。
策略名称:可以通过指定新策略名称来更改策略名称。
复制因子:可以通过指定新的复制因子来改变复制因子。 DURABLE_WRITES :DURABLE_WRITES 值可以通过指定其值 true/false 来更改。默认情况下,它是真的。如果设置为 false,则不会将任何更新写入提交日志,反之亦然。
执行:这是已执行命令“Alter Keyspace”的快照,该命令将 DataCenter1 的密钥空间策略从“SimpleStrategy”更改为“NetworkTopologyStrategy”,并将复制因子从 3 更改为 1。
答案 5 :(得分:-1)
列族与关系数据库表有些相关,具有分布差异甚至可能是理想主义的特征。
映像您有一个可能包含15列的用户实体,在关系数据库中,您可能希望将列分成基于小相关列的结构,我们都知道这些结构为表。在像Cassandra这样的分布式数据库中,您将能够将所有这些表条目连接成一个长行,因此如果您使用profiler / db管理器,您将看到一个包含15列的单个表2/3表。另一个有趣的事情是,每个列族都写入不同的节点,可能在不同的集群上,并被行键识别,这意味着您将拥有所有列族的单个键,并且不需要为每个表维护PK或FK,并保持它们之间的关系为1-1,1-n,nn关系。简单!