Text vs varchar

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

34351 次浏览

也许你指的是 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是彼此的同义词/别名。

  1. 与 Varchar 相关的数据类型为 一团(blob 的最大理论大小为 2GB)
  2. 短信相关联的数据类型是 Vchar (意味着即使您已经使用了 短信,但 Cassandra 内部将其视为 瓦查尔)
  3. Blob 类型关联不会造成性能问题,因为 Cassandra 以常数十六进制数存储数据。
  4. 由于 Cassandra 使用 主键(分区键,集群列)查询 坐标正确,读取速度将更快,这取决于我们如何设计表。 enter image description here enter image description here

对 Cassandra 来说也是一样的,text 和 varchar 都是 UTF8编码的字符串,所以它们是完全一样的。

数据类型