71

有谁知道这两种 CQL 数据类型textvarcharCassandra 之间的区别?Cassandra 文档将这两种类型都描述为“UTF-8 编码字符串”,仅此而已。

4

5 回答 5

84

text只是一个别名varchar

文档:

编辑
这是C* 1.2 文档的链接。text vs varchar 信息仍然相同,但是本文档包含一些额外的数据类型。

EDIT v2 文档链接已更新为 C* 3 的文档。我找不到 C* 1.2 文档的好替代品。

于 2013-07-08T15:34:06.187 回答
12

可能您的意思是 CQL 存储类型,如果不是,请忽略我的回答。

在 CQL 中,一直存在试图与 cassandra 内部保持距离的趋势。这是好事还是坏事,有待解释。然而,相关的是,在最新版本的 CQL 中,开发人员一直在尝试提出对 cassandra 内部没有那么深入的人更熟悉的语法。

如果您要查看这个 SO 问题,您会很好地说明这种情况: 在工作 Datastax API(使用新的二进制协议)时在 Cassandra 中创建列族或表

在最近的 CQL 版本中,开始出现一些别名,这些别名与 cassandra 不同,但对 DBA 来说非常熟悉。例如,cassandra ColumnFamily 的本机已使用 Table 进行别名,而 text 只是 varchar 的别名,反之亦然。同样,这是否是一件好事,这是一个见仁见智的问题。

因此,总而言之,您可以互换使用 varchar 和 text。

于 2013-07-08T15:32:11.973 回答
5

Cassandra CQL 数据类型textvarchar是彼此的同义词/别名。

  1. 与 Varchar 关联的数据类型是blob(blob 的最大理论大小为2 GB
  2. 与文本关联的数据类型是 Varchar (这意味着即使您使用了文本,但 Cassandra 在内部将其视为Varchar
  3. blob 类型关联不会产生性能问题,因为 Cassandra 以恒定的十六进制数字存储数据。
  4. 由于 Cassandra根据我们设计表 的方式使用主键(分区键、聚类列)查询正确的坐标,因此读取速度会更快。在此处输入图像描述 在此处输入图像描述
于 2018-10-17T17:55:19.850 回答
4

当我开始使用 Cassandra 时,这也让我感到震惊。

text 和 varchar 都是 UTF8 编码的字符串,并且是彼此的同义词,也就是说它们完全相同。

作为补充说明,如果一个人来自 MS SQL 之类的关系世界,可能还会犹豫将这些类型(尤其是 TEXT)用作实体的主要字段。TEXT 通常与大块文本内容相关联,这些文本内容不会尖叫到第 3 范式关系思维的主键。但由于所有 Cassandra 类型本质上都以十六进制字节数组的形式存储在磁盘上,因此将它们用作主键时并没有真正显着的性能。

于 2016-05-28T13:09:37.073 回答
0

卡桑德拉也是如此。text 和 varchar 都是 UTF8 编码的字符串,因此它们完全相同。

CQL 数据类型

于 2021-05-15T03:59:14.417 回答