La traducción de un conjunto de datos MySQL / query-puesto en la representación equivalente Cassandra

StackOverflow https://stackoverflow.com/questions/2413466

  •  19-09-2019
  •  | 
  •  

Pregunta

Considere una tabla de MySQL 500 millones fila con la siguiente estructura de la tabla ...

CREATE TABLE foo_objects (
  id int NOT NULL AUTO_INCREMENT,
  foo_string varchar(32),
  metadata_string varchar(128),
  lookup_id int,
  PRIMARY KEY (id),
  UNIQUE KEY (foo_string),
  KEY (lookup_id),
);

... que se realiza la consulta utilizando sólo las siguientes dos consultas ...

# lookup by unique string key, maximum of one row returned
SELECT * FROM foo_objects WHERE foo_string = ?;
# lookup by numeric lookup key, may return multiple rows
SELECT * FROM foo_objects WHERE lookup_id = ?;

Teniendo en cuenta esas consultas, ¿cómo representar el conjunto de datos dado usando Cassandra?

¿Fue útil?

Solución

tiene dos opciones:

(1) es una especie de tradicional: tener uno CF (columnfamily) con sus objetos foo, una fila por foo, una columna por campo. a continuación, crear dos factores de conversión de índices, donde la clave es una fila de los valores de cadena, y la clave de fila en la otra se lookup_id. Las columnas de las filas de índice son los identificadores de foo. Por lo que hacer un GET en el índice CF, a continuación, un Multiget en los identificadores regresó.

Tenga en cuenta que si se puede hacer lo mismo que Identificación del lookup_id entonces usted tiene un índice de menos de mantener.

Los clientes de alto nivel como lazyboy de Digg ( http://github.com/digg/lazyboy ) automatizará el mantenimiento de los FC índice para usted. Cassandra en sí no lo hace de forma automática (todavía).

(2) es como (1), pero se duplica la totalidad de los objetos foo en subcolumnas de las filas de índice (es decir, columnas el índice de nivel superior son supercolumns). Si usted no está realmente preguntando por el propio Identificación del foo, que no es necesario almacenarlo en su propio CF en absoluto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top