Gestión de datos en nosql

Una vez que logran las teclas de forma apropiada, ya está listo para diseñar la forma de almacenar datos con NoSQL y asegurarse de que es seguro y siempre accesible para el trabajo que tiene que hacer.

Los tipos de datos en las tiendas de clave-valor

Tiendas de clave-valor normalmente actúan como "cubos" de datos binarios. Algunas bases de datos proporcionan una fuerte tipificación de datos interna e incluso el apoyo de esquema. Otros simplemente proporcionan funciones auxiliares convenientes en sus controladores de cliente para serializar estructuras de datos de aplicación común a un almacén de claves-valor. Los ejemplos incluyen mapas, listas y conjuntos ordenados.

Oracle NoSQL puede funcionar en dos modos:

  • Tienda binaria simple

  • Apoyo esquema Avro altamente estructurada

Un esquema Avro es similar a un esquema de base de datos relacional - la aplicación de un conjunto muy estricto de las reglas de formato en notación javascript Object datos (JSON) almacenados en la base de datos, como se muestra aquí:

{nombre de usuario: "afowler", sessionid: 13452673, desde: 1408318745, tema: "bluesky"} 

Se define un esquema Avro utilizando un documento JSON. Este es un ejemplo del esquema Avro para los datos almacenados previamente mostrados:

{"type": "espacio de nombres" "registro": "com.example", "name": "UserSession", "campos": [{"name": ", escribe" "nombre de usuario": ["cadena", "nulo"]}, {"name": ", escribe" "sessionid": "int"}, {"name": "ya que", "tipo": "largo"}, {"name": "tema" , "tipo": ["cadena", "nulo"]}]} 

Un esquema Avro ofrece muy fuerte a escribir en la base de datos para cuando esquema es importante. En el ejemplo anterior, usted ve los datos de cadena, un identificador de sesión numérico, una fecha (milisegundos, ya que el tiempo Unix Epoch, como un entero largo), y el establecimiento de una personalización para el tema de utilizar en el sitio web.

Observe también que el tipo de nombre de usuario y el tema tiene dos opciones - cuerda y nulo, que es como se indica a Oracle NoSQL que los valores nulos son permitidos. Podrías haber dejado el tema como una cadena y proporcionado un parámetro de configuración adicional de "default": "bluesky".

Otras bases de datos NoSQL proporcionan índices secundarios sobre cualquier propiedad arbitraria de un valor que tiene contenido JSON. Riak, por ejemplo, proporciona índices secundarios sobre la base de documento de partición - básicamente, una propiedad conocida dentro de un documento JSON está indexado con un tipo. Esto permite consultas de rango (menor o mayor que) además de comparaciones iguales iguales y no simples. Riak arregla para ofrecer consultas de rango sin un esquema estricto - sólo definición de índice simple. Si los datos están ahí, se añade al índice.

Replicación de datos

Almacenamiento de varias copias de los mismos datos en otros servidores, o incluso bastidores de servidores, ayuda a asegurar la disponibilidad de datos si un servidor falla. Falla en el servidor ocurre principalmente en el mismo grupo.

Puede utilizar réplicas de dos maneras principales:

  • Maestro-esclavo: Todas las lecturas y escrituras suceda al maestro. Esclavos hacerse cargo y recibir solicitudes sólo si el maestro falla.

Replicación maestro-esclavo se utiliza normalmente en las tiendas de clave-valor-ACID compliant. Para habilitar la máxima coherencia, la tienda principal se escribe en y todas las réplicas se actualizan antes de completar la transacción. Este mecanismo se denomina en dos fases y crea la red extra y el tiempo de procesamiento de las réplicas.

  • Master-master: Lee y escribe pueden ocurrir en todos los nodos que gestionan una clave. No hay concepto de propietario partición una "primaria".

Réplicas Master-maestros son típicamente finalmente consistente, con el cúmulo de realizar una operación automática para determinar el último valor de una clave y la eliminación de más edad, los valores rancios.

En la mayoría de las tiendas de clave-valor, esto sucede lentamente - al tiempo de lectura. Riak es la excepción aquí porque tiene un servicio antientropía comprobación de consistencia durante las operaciones normales.

    Los datos de versiones

    A fin de que la resolución automática de conflictos, es necesario un mecanismo para indicar la versión más reciente de los datos. Finalmente almacenes de claves y valores consistentes lograr la resolución de conflictos de diferentes maneras.

    Riak utiliza un mecanismo de vector-reloj para predecir qué copia es la más reciente. Otras tiendas clave-valor utilizan marcas de tiempo simples para indicar estancamiento. Cuando los conflictos no se pueden resolver de forma automática, ambas copias de los datos se envían al cliente. Los conflictos de datos que se envían al cliente puede ocurrir en la siguiente situación:

    1. Cliente 1 escribe a réplica A Adam: {gusta: Cheese} '.

    2. Replica Una copia los datos a réplica B.

    3. Cliente 1 actualizaciones de datos de réplica de la A a la Adam: {gusta: Queso, odia: la luz del sol} '.

      En este punto, réplica de A no tiene tiempo suficiente para copiar los datos más recientes a réplica B.

    4. Cliente 2 actualizaciones de datos en réplica de B a Adam: {gusta: Dogs, odia: canguros} '.

      En este punto, réplica de A y B réplica están en conflicto y el cluster de base de datos no se pueden resolver de forma automática las diferencias.

    Un mecanismo alternativo es utilizar las marcas de tiempo y confiar en ellos para indicar los últimos datos. En tal situación, es de sentido común para la aplicación para comprobar que las marcas de tiempo leer el último valor antes de actualizar el valor.

    Se están revisando para el comprobar y establecer mecanismo, que básicamente significa 'Si la última versión sigue siendo la versión 2, a continuación, guarde mi versión 3'. Este mecanismo se conoce como veces leer actualización partido (RMU) o leer partido escritura (RSR). Este mecanismo es el mecanismo por defecto empleada por Oracle NoSQL, Redis, Riak, y Voldemort.




    » » » » Gestión de datos en nosql