【问题标题】:Cassandra: text vs varcharCassandra:文本与 varchar
【发布时间】:2013-07-05 23:56:21
【问题描述】:

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

【问题讨论】:

  • 您能提供文档的链接吗?我从来没有听说过。然而,我听说的是 AsciiType 和 UTF8Type,它们之间的区别应该是不言而喻的。
  • @baba 这些是 CQL3 使用的名称。
  • 是的,我花了一段时间,但我想 :)

标签: database cassandra


【解决方案1】:

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

在 CQL 中,一直存在试图远离 cassandra 内部结构的趋势。这是好事还是坏事,有待解释。然而,相关的是,在最新版本的 CQL 中,开发人员一直在尝试提出对不深入 cassandra 内部结构的人来说更熟悉的语法。

如果您要查看这个 SO 问题,您会很好地说明这种情况: Creating column family or table in Cassandra while working Datastax API(which uses new Binary protocol)

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

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

【讨论】:

    【解决方案2】:

    text 只是varchar 的别名!

    文档:

    编辑
    这是C* 1.2 docs 的链接。 text vs varchar 的信息还是一样的,但是这个文档包含了一些额外的数据类型。

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

    【讨论】:

    • 你能参考你在哪里发现 TEXT 是 VARCHAR 的别名吗?在任何给定的链接中都找不到它
    • Ctrl + F for "alias" 不会产生你想要的答案。在 CQL3 文档 - Apache 链接中搜索“有关本机数据类型的信息”,您将看到 varchar 和 text 的描述,它们是相同的。还有this
    • @analogue About data types 表示内部 UTF8Type 匹配 CQL 名称 text, varchar,我认为它们是别名。
    • 您的所有链接现在都指向 404 页,除了 Documentation on Datatypes in CQL - Datastax 现在重新路由到 Datastax's landing page
    • @Marko 感谢您指出这一点,很难跟上。我已经更新了链接,但我找不到一个很好的替代 Cassandra 1.2 文档的替代方法,该文档包含关于数据类型的详细信息。
    【解决方案3】:

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

    text 和 varchar 都是 UTF8 编码的字符串,互为同义词,也就是说它们是完全一样的。

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

    【讨论】:

      【解决方案4】:

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

      1. 与 Varchar 关联的数据类型为 blob(blob 的最大理论大小为 2 GB
      2. text 关联的数据类型是 Varchar(这意味着即使您使用过 text 但 Cassandra 在内部将其视为 Varchar
      3. blob 类型关联不会产生性能问题,因为 Cassandra 以恒定的十六进制数字存储数据。
      4. 由于 Cassandra 使用 主键(分区键、聚类列) 查询 右坐标,读取速度会更快,具体取决于我们设计表的方式。

      【讨论】:

        【解决方案5】:

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

        CQL Data types

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-14
          • 2012-09-27
          • 2016-11-18
          • 1970-01-01
          • 2013-09-05
          • 2021-02-06
          • 2011-11-15
          • 1970-01-01
          相关资源
          最近更新 更多