Me gustaría utilizar Cassandra para almacenar información relacionada con la sesión. No tengo una sesión HTTP real, es un protocolo diferente, pero tiene el mismo concepto.Cassandra como sesión almacenar bajo carga pesada
Memcached estaría bien, pero me gustaría, además, persistir los datos. configuración
Cassandra:
- no replicado espacio clave
- sola familia de columnas, donde la clave es el identificador de sesión y cada columna dentro de las tiendas de fila única clave/valor - (
Map<String,Set<String,String>>
) - TTL columna = 10 minutos
- escritura CL = UNO
- leer CL = UNO
- 2.000 escribe/s
- 5.000 lecturas ejemplo
Datos/s:
session1:{ // CF row key
{prop1:val1, TTL:10 min},
{prop2:val2, TTL:10 min},
.....
{propXXX:val3, TTL:10 min}
},
session2:{ // CF row key
{prop1:val1, TTL:10 min},
{prop2:val2, TTL:10 min},
},
......
sessionXXXX:{ // CF row key
{prop1:val1, TTL:10 min},
{prop2:val2, TTL:10 min},
}
En este caso, la consistencia no es un problema, pero el rendimiento puede ser, especialmente S de disco.
Dado que los datos en mi sesión se van por poco tiempo, me gustaría evitar almacenarlos en el disco duro, excepto para el registro de commit.
Tengo algunas preguntas:
- columna expira en Memtable antes de enjuagar a SSTable, se Cassandra almacenar todos modos tales columna en SSTable (tirar de la cadena a HDD)?
- La replicación está deshabilitada para mi Espacio clave, en este caso no sería necesario almacenar dicha columna caducada en SSTable, ¿no?
- Cada CF hat max 10 columnas. En tal caso, habilitaría el caché de filas y desactivaría el caché de claves. Pero estoy esperando que mis datos estén todavía en disponibles en Memtable, en este caso podría deshabilitar toda la memoria caché, ¿verdad?
- ¿Alguna pista de configuración Cassandra para tal caso sesión de la tienda utilización sería muy apreciada :)
Gracias, Maciej
dices que quieres persistir los datos, pero también quieres TTL después de 10 minutos. – sdolgy
Este es un proceso importante y me gustaría asegurarme de que no se rompa –