Cassandra 中元组和用户定义类型的区别是什么

use*_*659 2 cassandra datastax

有人能告诉我 Cassandra 中元组和用户定义类型之间的区别吗

jac*_*zhu 6

Datastax文件

当您不需要添加新字段时,您可以使用元组作为用户定义类型的替代方法。

用户定义的类型使您可以更灵活地更改字段数量,以防您以后需要更新数据,并允许您为每个字段指定有意义的名称。UDT 如何工作的经典示例是地址。

CREATE TYPE mykeyspace.address (
  street_number int,
  street text,
  city text,
  zip_code int,
  phones set<text>
);
Run Code Online (Sandbox Code Playgroud)

并创建表

CREATE TABLE users (
  id uuid PRIMARY KEY,
  address frozen <address>
);  
Run Code Online (Sandbox Code Playgroud)

元组等价物是

CREATE TABLE users (
  id uuid PRIMARY KEY,
  address <tuple<int, text, text, int, set<text>>
);
Run Code Online (Sandbox Code Playgroud)

因此,元组最适合字段名称不重要的固定数量的收集数据(地址列绝对不是一个好的用例;字段很重要——street_number并且zip_code可能会被混淆——你将无法稍后添加详细字段)。UDT 将允许这样做,并且还允许您按字段名称进行查询。

此外,在性能上没有显着差异。