es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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);
“`

Tags:  , , , ,

Answer

  1. Avatar for 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.

Comments are closed.