Voldemort es un sistema de almacenamiento de valor clave distribuido
- Los datos se replican automáticamente en varios servidores.
- Los datos se particionan automáticamente para que cada servidor contenga solo un subconjunto de los datos totales
- Proporciona una consistencia ajustable (quórum estricto o consistencia eventual)
- La falla del servidor se maneja de manera transparente
- Motores de almacenamiento conectables: BDB-JE, MySQL, solo lectura
- Serialización conectable - Búferes de protocolo, Thrift, Avro y serialización de Java
- Los elementos de datos se versionan para maximizar la integridad de los datos en escenarios de falla sin comprometer la disponibilidad del sistema
- Cada nodo es independiente de otros nodos sin un punto central de falla o coordinación.
- Buen rendimiento de un solo nodo: puede esperar de 10 a 20.000 operaciones por segundo, según las máquinas, la red, el sistema de disco y el factor de replicación de datos
- Soporte para estrategias de colocación de datos conectables para respaldar cosas como la distribución entre centros de datos que están geográficamente alejados.
Comparación con bases de datos relacionales
- Voldemort combina el almacenamiento en caché de la memoria con el sistema de almacenamiento para que no se requiera un nivel de almacenamiento en caché separado (en cambio, el sistema de almacenamiento en sí es simplemente rápido)
- A diferencia de la replicación de MySQL, tanto las lecturas como las escrituras escalan horizontalmente
- El reparto de datos es transparente y permite la expansión del clúster sin reequilibrar todos los datos.
- La replicación y ubicación de datos se decide mediante una API simple para poder adaptarse a una amplia gama de estrategias específicas de la aplicación
- La capa de almacenamiento es completamente simulada, por lo que el desarrollo y las pruebas unitarias se pueden realizar en un sistema de almacenamiento en memoria desechable sin necesidad de un clúster real (o incluso un sistema de almacenamiento real) para realizar pruebas simples.
Configuración
- cluster.xml: contiene la información sobre todos los nodos (es decir, servidores) en el clúster, en qué nombre de host se encuentran, los puertos que usan, etc. Es exactamente lo mismo para todos los nodos de voldemort. No contiene parámetros de ajuste ni directorios de datos para esos nodos, ya que esa información no es pública para el clúster, sino que es específica de esa configuración de nodos en particular.
- stores.xml: contiene la información sobre todas las tiendas (es decir, tablas) en el clúster. Esto incluye información sobre el número necesario de lecturas correctas para mantener la coherencia, el número necesario de escrituras, así como cómo las claves y los valores se serializan en bytes. Es igual en todos los nodos del clúster.
- server.properties: contiene los parámetros de ajuste que controlan un nodo en particular. Esto incluye la identificación del nodo local para que sepa qué entrada en cluster.xml corresponde a sí mismo, también el tamaño de la agrupación de subprocesos, así como cualquier configuración necesaria para el motor de persistencia local como BDB o mysql. Este archivo es diferente en cada nodo. Finalmente, hay una variable de entorno, VOLDEMORT_HOME, que controla el directorio en el que residen los datos y la configuración. Puede ver un ejemplo de cómo se presenta la configuración en el subdirectorio config / del proyecto. Esto incluye configuraciones de muestra que puede modificar con sus propios detalles.
Configuración de clúster
<cluster> <!--
The name is just to help users identify this cluster from the gui -->
<name>mycluster</name>
<zone>
<zone-id>0</zone-id>
<proximity-list>1</proximity-list>
<zone>
<zone>
<zone-id>1</zone-id> <proximity-list>0</proximity-list>
<zone>
<server>
<id>0</id>
<host>vldmt1.prod.linkedin.com</host>
<http-port>8081</http-port>
<socket-port>6666</socket-port>
<admin-port>6667</admin-port>
<partitions>0,1,2,3</partitions>
<zone-id>0</zone-id>
</server>
<server>
<id>1</id>
<host>vldmt2.prod.linkedin.com</host>
<http-port>8081</http-port>
<socket-port>6666</socket-port>
<admin-port>6667</admin-port>
<partitions>4,5,6,7</partitions> <zone-id>1</zone-id> </server> </cluster> |
Gestión de BDB
Oracle NoSQL Database es una base de
datos NoSQL tipo clave-valor (del estilo de Redis o Voldemort): Sus principales características son: Arquitectura · Está construida sobre Oracle
Berkeley DB Java Edition sobre la que añade una capa de servicios para usarse
en entornos distribuidos Alta Disponibilidad y No-Single Point of
Failure
Balanceo de carga transparente: · El Driver de Oracle NoSQL particiona
los datos en tiempo real y los distribuye sobre los nodos de almacenaminto · Su topología rutea las operaciones
de escritura y lectura al nodo de almacenamiento más adecuado para optimizar
la distribución de carga y rendimiento Formato JSON · La version 2 añade sopote para
serialización con Avro, lo que permite definer un schema en JSON para los
datos almacenados Topologías configurables · Los administradores pueden indicar
cuanta capacidad está disponible en un nodo de almacenamiento permitiendo a
los nodos con más capacidad almacenar varios nodos de replicación Administación sencilla y
Monitorización: · Oracle NoSQL suministra un servicio
de administración, tanto por consola web
|
No hay comentarios:
Publicar un comentario
Por favor deja tu comentario, es valioso.