37

我需要性能和查询方面的详细信息,我从某个站点了解到,使用列族时只能给出一个键,如果是这样,您对我的键空间有何建议,我需要使用 group by、order by、count、sum ,ifnull,concat,joins,有时还有嵌套查询。

4

6 回答 6

55

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

有关 API 的更多信息可以在这里找到: http ://wiki.apache.org/cassandra/API

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

CQL 支持COUNT,但最多只有 10000。它支持ORDER BY,但仅限于集群键。您提到的其他内容根本不支持。

于 2013-09-16T17:31:55.783 回答
5

在 cassandra 中,表和列族之间没有区别。它们是一个概念。

于 2018-03-06T08:21:27.517 回答
5

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

它指定 CQL 的 LRM 在支持 COLUMNFAMILY 的任何地方都支持 TABLE 关键字。

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

于 2017-02-16T21:21:32.930 回答
1

对于 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 默认使用 table。

于 2020-02-28T16:03:13.860 回答
1

这里的小例子来理解概念。键空间是一个包含列族、用户定义类型的对象。

使用 replication={'class':SimpleStrategy, 'replication_factor': 3} 创建键空间大学;

create table University.student(roll int Primary KEY, dept text, name text, termint)

'创建表',表'学生'将在键空间'大学'中创建,列RollNo,Name和dept。RollNo 是主键。RollNo 也是一个分区键。所有数据都将在单个分区中。

在 Cassandra 中更改 Keyspace 时的关键方面

Keyspace Name:在 Cassandra 中不能更改键空间名称。

策略名称:可以通过指定新策略名称来更改策略名称。

复制因子:可以通过指定新的复制因子来更改复制因子。 DURABLE_WRITES :DURABLE_WRITES 值可以通过指定其值 true/false 来更改。默认情况下,它是真的。如果设置为 false,则不会将任何更新写入提交日志,反之亦然。

执行:这是执行命令“Alter Keyspace”的快照,该命令将键空间策略从“SimpleStrategy”更改为“NetworkTopologyStrategy”,并将DataCenter1 的复制因子从3 更改为1。

于 2021-02-15T09:38:18.563 回答
-2

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

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

于 2015-02-16T09:06:27.770 回答