有谁知道这两种 CQL 数据类型text
和varchar
Cassandra 之间的区别?Cassandra 文档将这两种类型都描述为“UTF-8 编码字符串”,仅此而已。
5 回答
text
只是一个别名varchar
!
文档:
编辑
这是C* 1.2 文档的链接。text vs varchar 信息仍然相同,但是本文档包含一些额外的数据类型。
EDIT v2 文档链接已更新为 C* 3 的文档。我找不到 C* 1.2 文档的好替代品。
可能您的意思是 CQL 存储类型,如果不是,请忽略我的回答。
在 CQL 中,一直存在试图与 cassandra 内部保持距离的趋势。这是好事还是坏事,有待解释。然而,相关的是,在最新版本的 CQL 中,开发人员一直在尝试提出对 cassandra 内部没有那么深入的人更熟悉的语法。
如果您要查看这个 SO 问题,您会很好地说明这种情况: 在工作 Datastax API(使用新的二进制协议)时在 Cassandra 中创建列族或表
在最近的 CQL 版本中,开始出现一些别名,这些别名与 cassandra 不同,但对 DBA 来说非常熟悉。例如,cassandra ColumnFamily 的本机已使用 Table 进行别名,而 text 只是 varchar 的别名,反之亦然。同样,这是否是一件好事,这是一个见仁见智的问题。
因此,总而言之,您可以互换使用 varchar 和 text。
当我开始使用 Cassandra 时,这也让我感到震惊。
text 和 varchar 都是 UTF8 编码的字符串,并且是彼此的同义词,也就是说它们完全相同。
作为补充说明,如果一个人来自 MS SQL 之类的关系世界,可能还会犹豫将这些类型(尤其是 TEXT)用作实体的主要字段。TEXT 通常与大块文本内容相关联,这些文本内容不会尖叫到第 3 范式关系思维的主键。但由于所有 Cassandra 类型本质上都以十六进制字节数组的形式存储在磁盘上,因此将它们用作主键时并没有真正显着的性能。
卡桑德拉也是如此。text 和 varchar 都是 UTF8 编码的字符串,因此它们完全相同。