2010-03-19 10 views
10

Espero que haya alguien que pueda ayudarme a sugerir un modelo de datos adecuado para ser implementado usando la base de datos nosql Apache Cassandra. Más de lo que necesito para trabajar con grandes cargas y grandes cantidades de datos.Sugerir el modelo de datos de Cassandra para un esquema existente

simplificado tengo 3 tipos de objetos:

  • producto
  • Tag
  • ProductTag

producto:

key - string key 
name - string 
.... - some other fields 

Tag:

key - string key 
name - unique tag words 

ProductTag:

product_key - foreign key referring to product 
tag_key - foreign key referring to tag 
rating - this is rating of tag for this product 

Cada producto puede tener 0 o muchas etiquetas. La etiqueta se puede asignar a 1 o muchos productos. La relación de medios entre productos y etiquetas es de muchos a muchos en términos de bases de datos relacionales.

El valor de "evaluación" se actualiza de "muy" a menudo.

que necesita que se ejecute las siguientes consultas

  • Selección de objetos de teclas
  • Seleccionar etiquetas para productos ordenados por categoría
  • productos Selección por fin etiqueta de calificación
  • calificación
  • Actualización de clave_de_producto y tag_key

Lo más importante es hacer que estas consultas sean realmente rápidas en grandes cantidades de datos, teniendo en cuenta que la calificación se actualiza constantemente.

Respuesta

2

Algo como esto:

Products : { // Column Family 
    productA : { //Row key 
     name: 'The name of the product' // column 
     price: 33.55 // column 
     tags : 'fun, toy' // column 
    } 
} 

ProductTag : { // Column Family 
    fun : { //Row key 
     timeuuid_1 : productA // column 
     timeuuid_2 : productB // column 
    }, 
    toy : { //Row key 
     timeuuid_3 : productA // column 
    } 
} 

ACTUALIZACIÓN
Marque esta Model to store biggest score

+0

¿Qué hay de lista etiquetas de productos ordenados por categoría? ¿O enumerar productos por una etiqueta ordenada por clasificación? Dicha consulta requeriría el uso de 2 índices al mismo tiempo para que sea efectiva –

+0

Tiene sentido. Gracias por el enlace! Otra idea que estoy considerando es utilizar herramientas externas como la búsqueda de esfinges o quizás lucandra para seleccionar objetos ordenados por clasificación. La búsqueda de texto completo de Sphinx funciona bien para tales tareas, pero no admite actualizaciones de índice "en tiempo real". –

Cuestiones relacionadas