Acceso con llave de alta & # 8208-velocidad con nosql
Clave # 8208-valor tiendas en NoSQL son todos acerca de la velocidad. Puede usar varias técnicas para maximizar esa velocidad, a partir de datos de almacenamiento en caché, a tener varias copias de los datos, o el uso de las estructuras de almacenamiento más adecuados.
Conteúdo
Datos de almacenamiento en caché en la memoria
Debido a que los datos son de fácil acceso cuando se almacena en la memoria de acceso aleatorio (RAM), la elección de una clave # 8208-tienda de valor que almacena los datos en la memoria RAM puede acelerar significativamente el acceso a los datos, aunque sea a costa de los mayores costos del servidor.
A menudo, sin embargo, esta compensación vale la pena hacer. Usted puede calcular fácilmente qué porcentaje de sus datos almacenados se solicita con frecuencia. Si conoces a cinco por ciento en general, se solicita cada pocos minutos, a continuación, tomar cinco por ciento de su tamaño de los datos y añadir ese número como espacio de memoria RAM de repuesto a través de sus servidores de bases de datos.
Tenga en cuenta que el sistema operativo, otras aplicaciones y el servidor de base de datos tienen requisitos de memoria, también.
Replicación de datos a los esclavos
En # 8208-valor almacenes de claves, una clave particular, se almacena en uno de los servidores del clúster. Este proceso se llama particionamiento clave. Esto significa que, si se solicita constantemente esta tecla, este nodo recibirá la mayor parte de las solicitudes. Este nodo, por lo tanto, será más lenta que la velocidad de su solicitud de media, lo que podría afectar a la calidad del servicio a los usuarios.
Para evitar esta situación, algunos Clave # 8208-valor tiendas de Apoyo a la adición leer # 8208-sólo réplicas, también conocidos como esclavos. Redis, Riak, y Aerospike son buenos ejemplos. La replicación permite la clave para ser almacenado varias veces a través de varios servidores, lo que aumenta la velocidad de respuesta, pero a costa de más hardware.
Algunas # 8208-valor tiendas clave garantizar que las réplicas de la llave siempre tendrá el mismo valor que el maestro. Esta garantía se llama ser plenamente coherente. Si hay una actualización ocurre en el servidor maestro manteniendo pulsada la tecla, todas las réplicas están garantizados para estar al día.
No todos tecla # 8208-valor tiendas garantizan este estatus (Riak, por ejemplo), así que si es importante estar al día a la milésima de segundo, a continuación, elija una base de datos cuyas réplicas son plenamente compatibles (como Aerospike).
El modelado de datos en # 8208-valor almacenes de claves
Muchos tecla # 8208-valor tiendas apoyan sólo las estructuras básicas de sus tipos de valor, dejando el programador de la aplicación con la tarea de interpretar los datos. Compatibilidad de tipos de datos simple típicamente incluye cadenas, enteros, JSON y valores binarios.
Para muchos casos de uso, esto funciona bien, pero a veces un poco más el acceso granular a los datos es útil. Redis, por ejemplo, soporta los siguientes tipos de valores de datos:
Cuerda
Lista
Set
Conjunto Ordenada
Mapas Hash
Matrices de bits
Registros HyperLOG
Conjuntos ordenados se pueden consultar para hacer coincidir los rangos de valores - al igual que la consulta de un índice de los valores ordenados por fecha, lo cual es muy útil para la búsqueda de un subconjunto de datos mecanografiados.
Operando en los datos
Redis incluye operaciones para incrementar y disminuir directamente valores clave, sin tener que hacer una lectura # 8208-modificación # 8208-actualización (RMU) conjunto de pasos. Puede hacerlo en una sola transacción para asegurarse de que ninguna otra aplicación cambia el valor durante una actualización. Estos datos # 8208 operaciones específicas de tipo incluyen añadir y eliminar elementos a las listas y conjuntos, también.
Incluso puede proporcionar la funcionalidad de autocompletado en la interfaz de usuario de una aplicación utilizando el comando Redis ZRANGEBYLEX. Este comando recupera un juego de llaves que coincide parcialmente una cadena. Por lo tanto, si usted fuera a escribir " NoSQL para " en la barra de búsqueda de una aplicación construida sobre Redis, verías la sugerencia " NoSQL For Dummies ".
Evaluar Redis
Redis se enorgullece de ser una llave # 8208-tienda de valor muy ligera pero increíblemente rápido. Originalmente fue diseñado para ser una en el # 8208-memoria de la llave # 8208-tienda de valor, pero ahora cuenta con el almacenamiento de datos en disco # 8208 con sede en.
Puede utilizar Redis para salvaguardar datos al permitir AOF (anexar único archivo) Modo e instruyendo Redis forzar datos a disco en cada consulta (conocido como forzada fsync enrojecimiento). AOF hace retrasar las escrituras, por supuesto, sino que proporciona un mayor nivel de durabilidad para datos. Tenga en cuenta, sin embargo, que todavía es posible perder hasta un segundo de comandos.
También, Redis añadió recientemente el apoyo a la agrupación. De hecho, en el momento de escribir estas líneas, el apoyo de la agrupación Redis está en la fase de pruebas beta. Afortunadamente, Redis utiliza un modelo de clúster 8208 nada # compartida, con los maestros para las llaves y esclavos particulares que no están directamente escriben por un cliente- sólo el maestro hace. Proporcionar compartida # 8208-nada agrupación debería hacer más fácil para Redis para implementar la agrupación fiable de lo que es para bases de datos que permiten escribe a todas las réplicas.
Si quieres un muy alto # 8208-velocidad, en el # 8208-memoria capa de almacenamiento en caché frente a otra base de datos - MongoDB o Riak se utilizan comúnmente con Redis - luego evaluar Redis como una opción. Como apoyo a la agrupación y datos durabilidad evoluciona, quizá Redis puede superar a otras bases de datos back # 8208 de gama.