Cassandra: enumera los 10 registros modificados más recientemente

Tengo problemas para intentar modelar mis datos de modo que pueda consultar eficientemente a Cassandra para los últimos 10 registros (cualquier número en realidad) que se modificaron más recientemente. Cada registro tiene una columna last_modified_date que la aplicación establece al insertar / actualizar el registro.

He excluido las columnas de datos de este código de ejemplo.

Tabla de datos principal (contiene solo una fila por registro):

CREATE TABLE record (
    record_id int,
    last_modified_by text,
    last_modified_date timestamp,
    PRIMARY KEY (record_id)
);
Solución 1 (falla)

Traté de crear una tabla separada, que utilizaba un orden de clave de agrupación.

Tabla (una fila para cada registro; solo insertando la última fecha de modificación):

CREATE TABLE record_by_last_modified_index (
    record_id int,
    last_modified_by text,
    last_modified_date timestamp,
    PRIMARY KEY (record_id, last_modified_date)
) WITH CLUSTERING ORDER BY (last_modified_date DESC);

Consulta:

SELECT * FROM record_by_last_modified_index LIMIT 10

Esta solución no funciona ya que el orden de agrupación solo se aplica al orden de los registros con la misma clave de partición. Como cada fila tiene una clave de partición diferente (record_id), los resultados de la consulta no incluyen los registros esperados.

Solución 2 (ineficiente)

Otra solución que he intentado es simplemente consultar a Cassandra para todos los valores record_id y last_modified_date, ordenarlos y elegir los primeros 10 registros en mi aplicación. Esto es claramente ineficiente y no escalará bien.

Solución 3

Una última solución, que consideré, es usar la misma clave de partición para todos los registros y usar el orden de agrupamiento para asegurar que los registros estén ordenados correctamente. El problema con esa solución es que los datos no se dividirán correctamente en los nodos, ya que todos los registros tendrían la misma clave de partición. Eso me parece un no titular.

Respuestas a la pregunta(3)

Su respuesta a la pregunta