有人知道在 Cassandra 中两种 CQL 数据类型 text和 varchar之间的区别吗?Cassandra 文档将这两种类型描述为“ UTF-8编码的字符串”,仅此而已。
text
varchar
也许你指的是 CQL 存储类型,如果不是,请忽略我的回答。
在 CQL 中有一个持续的趋势,试图远离 Cassandra 的内部。这究竟是好事还是坏事,还有待解释。然而,最新版本的 CQL 开发人员一直在尝试提出一种语法,这种语法对于那些对 Cassandra 的内部知识没有那么深入的人来说更为熟悉。
如果你看看这个 SO 问题,你会得到一个很好的例子: 在使用 Datastax API (使用新的二进制协议)时,在 Cassandra 中创建列族或表
在最近的 CQL 版本中,一些别名开始出现,这些别名对 Cassandra 来说是陌生的,但对 DBA 来说却是非常有名的。例如,Cassandra ColumnFamily 的原生文件使用 Table 别名,text 只是 varchar 的别名,反之亦然。同样,这是一个看法问题,如果这是一件好事或不。
因此,总之,您可以交换使用 varchar 和 text。
text只是 varchar的化名!
文件:
剪辑 这是 C * 1.2文件的链接。文本与 varchar 信息仍然是相同的,但是这个文档包含一些额外的数据类型。
编辑 v2 文档链接已更新到 C * 3的文档。我找不到 C * 1.2文档的好替代品。
当我和卡珊德拉开始的时候,我也很吃惊。
Text 和 varchar 都是 UTF8编码的字符串,它们是彼此的同义词,也就是说它们是完全相同的东西。
作为附加说明,如果您来自 MS SQL 这样的关系世界,那么您可能也不愿意使用这些类型(特别是 TEXT)作为实体的主要字段。文本通常与大块的文本内容联系在一起,这些文本内容对于第三常态的关系思维来说并不是主要的关键。但是,由于所有 Cassandra 类型基本上都以十六进制字节数组的形式存储在磁盘上,因此在使用它们作为主键时并没有真正显著的性能。
Cassandra CQL 数据类型 短信和 Varchar是彼此的同义词/别名。
对 Cassandra 来说也是一样的,text 和 varchar 都是 UTF8编码的字符串,所以它们是完全一样的。
数据类型