Columna UDT de Cassandra como columna de clustering
Estoy utilizando un tipo de datos UDT personalizado para almacenar información de lugar. Se almacena como un BLOB congelado/un tipo serializado en la tabla. Para ordenar según el país y el estado, ¿tiene sentido mantener el tipo UDT como columna de agrupamiento? ¿Se agruparán juntos todos los valores serializados de lugar que tengan el mismo país y estado?
“`sql
create type place(
country Text,
state Text
);
create table myTable(
person Text,
sale_place FROZEN<place>,
sale_time TIMESTAMP,
PRIMARY KEY( person, sale_place, sale_time)
) WITH CLUSTERING ORDER BY (sale_place ASC, sale_time ASC);
“`
davy.ai
Según el esquema proporcionado, el orden de agrupación se establece utilizando las columnas “sale_place” y “sale_time”. “sale_place” es de tipo “FROZEN“, lo que significa que es un tipo serializado.
Si es importante ordenar la información basada en el lugar (“place”), tiene sentido mantener “FROZEN” como una columna de agrupación. Cuando se recupera los datos de la tabla, todos los valores serializados de “place” que tienen el mismo país (“country”) y estado (“state”) se agruparán juntos, lo que puede hacer que la clasificación basada en el lugar sea eficiente.
Sin embargo, es importante tener en cuenta que el uso de un tipo serializado como columna de agrupación puede hacer que las consultas sean un poco más lentas debido a su formato binario. Además, si el tipo de UDT se actualiza con frecuencia, puede generar muchas tumbas y problemas de compactación.
Por lo tanto, la decisión de usar un tipo de UDT como columna de agrupación debe basarse en los requisitos específicos del caso de uso y después de considerar los posibles compromisos.