BASE DE DATOS NO RELACIONAL

¿Qué son las bases de datos NoSQL?

Resultado de imagen para base de datos no relacional
Las bases de datos NoSQL están diseñadas específicamente para modelos de datos específicos y tienen esquemas flexibles para crear aplicaciones modernas. Las bases de datos NoSQL son ampliamente reconocidas porque son fáciles de desarrollar, su funcionalidad y el rendimiento a escala. Usan una variedad de modelos de datos, que incluyen documentos, gráficos, clave-valor, en-memoria y búsqueda. Esta página incluye recursos para ayudarlo a comprender mejor las bases de datos NoSQL y comenzar a usarlas.

¿Cómo funciona una base de datos NoSQL (no relacionales)?
Las bases de datos NoSQL utilizan una variedad de modelos de datos para acceder y administrar datos, como documentos, gráficos, clave-valor, en-memoria y búsqueda. Estos tipos de bases de datos están optimizados específicamente para aplicaciones que requieren grandes volúmenes de datos, baja latencia y modelos de datos flexibles, lo que se logra mediante la flexibilización de algunas de las restricciones de coherencia de datos en otras bases de datos.

    En una base de datos relacional, un registro de libros a menudo se enmascara (o "normaliza") y se almacena en tablas separadas, y las relaciones se definen mediante restricciones de claves primarias y externas. En este ejemplo, la tabla Libros tiene las columnas ISBN, Título del libro y Número de edición, la tabla Autores tiene las columnas IDAutor y Nombre de autor y, finalmente, la tabla Autor-ISBN tiene las columnas IDAutor e ISBN. El modelo relacional está diseñado para permitir que la base de datos aplique la integridad referencial entre tablas en la base de datos, normalizada para reducir la redundancia y, generalmente, está optimizada para el almacenamiento.

    En una base de datos NoSQL, el registro de un libro generalmente se almacena como un documento JSON. Para cada libro, el elemento, ISBN, Título del libro, Número de edición, Nombre autor y IDAutor se almacenan como atributos en un solo documento. En este modelo, los datos están optimizados para un desarrollo intuitivo y escalabilidad horizontal.

¿Por qué debería usar una base de datos NoSQL?

Las bases de datos NoSQL se adaptan perfectamente a muchas aplicaciones modernas, como dispositivos móviles, web y juegos, que requieren bases de datos flexibles, escalables, de alto rendimiento y altamente funcionales para proporcionar excelentes experiencias de usuario.
    Flexibilidad: las bases de datos NoSQL generalmente ofrecen esquemas flexibles que permiten un desarrollo más rápido y más iterativo. El modelo de datos flexible hace que las bases de datos NoSQL sean ideales para datos semiestructurados y no estructurados.
    Escalabilidad: las bases de datos NoSQL generalmente están diseñadas para escalar usando clústeres distribuidos de hardware en lugar de escalar añadiendo servidores caros y sólidos. Algunos proveedores de la nube manejan estas operaciones fuera del alcance, como un servicio completamente administrado.
    Alto rendimiento: la base de datos NoSQL está optimizada para modelos de datos específicos (como documentos, clave-valor y gráficos) y patrones de acceso que permiten un mayor rendimiento que el intento de lograr una funcionalidad similar con bases de datos relacionales.
    Altamente funcional: las bases de datos NoSQL proporcionan API altamente funcionales y tipos de datos que están diseñados específicamente para cada uno de sus respectivos modelos de datos.

Tipos de bases de datos NoSQL

Resultado de imagen para base de datos no relacional
Clave-valor: las bases de datos clave-valor son altamente divisibles y permiten escalado horizontal a escalas que otros tipos de bases de datos no pueden alcanzar. Los casos de uso como juegos, tecnología publicitaria e IoT se prestan particularmente bien con el modelo de datos clave-valor. Amazon DynamoDB está diseñado para proporcionar una latencia de milisegundos constate de un solo dígito para cualquier escala de cargas de trabajo. Este rendimiento sistemático es uno de los principales elementos que explican por qué la característica de historias de Snapchat, que incluye la carga de trabajo de escritura de almacenamiento más grande de Snapchat, se trasladó a DynamoDB.

 Documentos: en el código de aplicación, los datos se representan a menudo como un objeto o un documento de tipo JSON porque es un modelo de datos eficiente e intuitivo para los desarrolladores. Las bases de datos de documentos facilitan a los desarrolladores el almacenamiento y la consulta de datos en una base de datos mediante el uso del mismo formato de modelo de documento que emplean en el código de aplicación. La naturaleza flexible, semiestructurada y jerárquica de los documentos y las bases de datos de documentos permite que evolucionen según las necesidades de las aplicaciones. El modelo de documentos funciona bien con catálogos, perfiles de usuario y sistemas de administración de contenido en los que cada documento es único y evoluciona con el tiempo. Amazon DocumentDB (con compatibilidad para MongoDB) y MongoDB son bases de datos de documentos conocidas que proporcionan API poderosas e intuitivas para un desarrollo flexible e iterativo.

 Gráficos: el propósito de una base de datos de gráficos es facilitar la creación y la ejecución de aplicaciones que funcionan con conjuntos de datos altamente conectados. Los casos de uso típicos para una base de datos de gráficos incluyen redes sociales, motores de recomendaciones, detección de fraude y gráficos de conocimiento. Amazon Neptune es un servicio de base de datos de gráficos completamente administrado. Neptune admite tanto el modelo de Property Graph como el Resource Description Framework (RDF), que ofrece la opción de dos API de gráficos: TinkerPop y RDF/SPARQL. Las bases de datos de gráficos populares incluyen Neo4j y Giraph.

 En memoria: las aplicaciones de juegos y tecnología publicitaria tienen casos de uso como tablas de clasificación, tiendas de sesión y análisis en tiempo real que requieren tiempos de respuesta de microsegundos y pueden tener grandes picos de tráfico en cualquier momento. Amazon ElastiCache ofrece Memcached y Redis, para servir cargas de trabajo de baja latencia y alto rendimiento, como McDonald’s, en las que no se pueden servirse con almacenes de datos basados en disco. Amazon DynamoDB Accelerator (DAX) es otro ejemplo de un almacén de datos especialmente diseñado. DAX hace que DynamoDB lea una orden de magnitud más rápida.

 Buscar: muchas aplicaciones generan registros para ayudar a los desarrolladores a solucionar problemas. Amazon Elasticsearch Service (Amazon ES) está diseñado para proporcionar visualizaciones en tiempo real y análisis de datos generados por máquinas al indexar, agregar y buscar registros y métricas semiestructuradas. Amazon ES también es un poderoso motor de búsqueda de alto rendimiento para casos de uso de búsqueda de texto completo. Expedia está utilizando más de 150 dominios de Amazon ES, 30 TB de datos y 30 mil millones de documentos para una variedad de casos de uso críticos, que van desde el monitoreo operativo y la resolución de problemas, hasta el seguimiento de la pila de aplicaciones distribuidas y la optimización de precios.


SQL (relacional) en comparación con NoSQL (no relacional)

Durante décadas, el modelo de datos predominante utilizado para el desarrollo de aplicaciones era el modelo de datos relacional empleado por bases de datos relacionales como Oracle, DB2, SQL Server, MySQL y PostgreSQL. No fue sino hasta mediados y finales de la década del 2000 que otros modelos de datos comenzaron a adoptarse y aumentó su uso significativamente. Para diferenciar y categorizar estas nuevas clases de bases de datos y modelos de datos, se acuñó el término "NoSQL". Con frecuencia, los términos "NoSQL" y "no relacional" se usan indistintamente.

Cargas de trabajo óptimas

Las bases de datos relacionales están diseñadas para aplicaciones de procesamiento de transacciones online (OLTP) altamente coherentes y transaccionales, y son buenas para el procesamiento analítico online (OLAP).            Las bases de datos clave-valor, documentos, gráficos y en memoria de NoSQL están diseñadas para OLTP para una serie de patrones de acceso a datos que incluyen aplicaciones de baja latencia. Las bases de datos de búsqueda NoSQL están diseñadas para hacer análisis sobre datos semiestructurados. 

Modelo de datos   
El modelo relacional normaliza los datos en tablas conformadas por filas y columnas. Un esquema define estrictamente las tablas, las filas, las columnas, los índices, las relaciones entre las tablas y otros elementos de las bases de datos. La base de datos impone la integridad referencial en las relaciones entre tablas.
 Las bases de datos NoSQL proporcionan una variedad de modelos de datos, que incluyen documentos, gráficos, clave-valor, en-memoria y búsqueda.




Propiedades ACID           

Las bases de datos relacionales ofrecen propiedades de atomicidad, coherencia, aislamiento y durabilidad (ACID):

  •     La atomicidad requiere que una transacción se ejecute por completo o no se ejecute en absoluto.
  •     La coherencia requiere que una vez confirmada una transacción, los datos deban acoplarse al esquema de la base de datos.
  •     El aislamiento requiere que las transacciones simultáneas se ejecuten por separado.
  •     La durabilidad requiere la capacidad de recuperarse de un error inesperado del sistema o de un corte de energía y volver al último estado conocido.

Las bases de datos NoSQL a menudo hacen concesiones al flexibilizar algunas de las propiedades ACID de las bases de datos relacionales para un modelo de datos más flexible que puede escalar horizontalmente. Esto hace que las bases de datos NoSQL sean una excelente opción para casos de uso de baja latencia y alto rendimiento que necesitan escalar horizontalmente más allá de las limitaciones de una sola instancia.
Rendimiento Normalmente, el rendimiento depende del subsistema de disco. Se necesita la optimización de consultas, índices y estructura de tabla para lograr el máximo rendimiento.   El rendimiento es, por lo general, depende del tamaño del clúster de hardware subyacente, la latencia de red y la aplicación que efectúa la llamada.
Escalado Las bases de datos relacionales generalmente escalan en forma ascendente las capacidades de computación del hardware o la ampliación mediante la adición de réplicas para cargas de trabajo de solo lectura. Las bases de datos NoSQL normalmente se pueden particionar porque los patrones de acceso de valores clave son escalables mediante el uso de arquitectura distribuida para aumentar el rendimiento que proporciona un rendimiento constante a una escala casi ilimitada.
API     Solicita almacenar y recuperar datos que están comunicados mediante consultas que se ajustan a un lenguaje de consulta estructurado (SQL). Estas consultas son analizadas y ejecutadas por la base de datos relacional.Las API basadas en objetos permiten a los desarrolladores almacenar y recuperar fácilmente estructuras de datos en memoria. Las claves de partición permiten que las aplicaciones busquen pares de clave-valor, conjuntos de columnas o documentos semiestructurados que contengan atributos y objetos de aplicación serializados.


MONGODB


Resultado de imagen para mongodbEs un sistema de base de datos NoSQL orientado a documentos de código abierto.En lugar de guardar los datos en tablas, tal y como se hace en las bases de datos relacionales, MongoDB guarda estructuras de datos BSON (una especificación similar a JSON) con un esquema dinámico, haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.



MongoDB es una base de datos adecuada para su uso en producción y con múltiples funcionalidades. Esta base de datos se utiliza mucho en la industria,1​ contando con implantaciones en empresas como MTV Network,2​ Craiglist,3​ BCI o Foursquare.

El código binario está disponible para los sistemas operativos Windows, GNU/Linux, OS X y Solaris.



Características principales



Consultas ad hoc



MongoDB soporta la búsqueda por campos, consultas de rangos y expresiones regulares. Las consultas pueden devolver un campo específico del documento pero también puede ser una función definida por el usuario para su mejor ocupacion.JavaScript
Indexación

Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible hacer índices secundarios. El concepto de índices en MongoDB es similar al empleado en base de datos relacionales..
Replicación

Balanceo de carga

MongoDB puede escalar de forma horizontal usando el concepto de [shard.14​ El desarrollador elige una clave de sharding, la cual determina cómo serán distribuidos los datos de una colección. Los datos son divididos en rangos (basado en la clave de sharding) y distribuidos a través de múltiples shard. Cada shard puede ser una réplica set. MongoDB tiene la capacidad de ejecutarse en múltiple servidores, balanceando la carga y/o replicando los datos para poder mantener el sistema funcionando en caso que exista un fallo de hardware. La configuración automática es fácil de implementar bajo MongoDB y se pueden agregar nuevas servidores a MongoDB con el sistema de base de datos funcionando.

Almacenamiento de archivos

MongoDB puede ser utilizado como un sistema de archivos, aprovechando la capacidad de MongoDB para el balanceo de carga y la replicación de datos en múltiples servidores. Esta funcionalidad, llamada GridFS15​ e incluida en la distribución oficial, implementa sobre los drivers, no sobre el servidor16​, una serie de funciones y métodos para manipular archivos y contenido. En un sistema con múltiple servidores, los archivos pueden ser distribuidos y replicados entre los mismos de forma transparente, creando así un sistema eficiente tolerante a fallos y con balanceo de carga.

Agregación

MongoDB proporciona un framework de agregación que permite realizar operaciones similares al "GROUP BY" de SQL. El framework de agregación está construido como un pipeline en el que los datos van pasando a través de diferentes etapas en los cuales estos datos son modificados, agregados, filtrados y formateados hasta obtener el resultado deseado. Todo este procesado es capaz de utilizar índices si existieran y se produce en memoria. Asimismo, MongoDB proporciona una función MapReduce que puede ser utilizada para el procesamiento por lotes de datos y operaciones de agregación.
Ejecución de JavaScript del lado del servidor

MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas.




Fragmentación (sharding)

Si estás desarrollando un servicio que se va haciendo popular o los niveles de acceso a base de datos son cada vez más altos, empezarás a notar que tu base de datos está siendo atacada por un tráfico creciente y tu servidor esté sufriendo por los altos niveles de stress y te podrías ver en la necesidad de actualizar tu infraestructura para soportar la demanda.

Aquí entra en juego el sharding, es el modo en el que hacemos nuestra base de datos escalable. En lugar de tener una colección en una base de datos, la pondríamos en varias bases de datos distribuidas, de modo que a la hora de consultar los datos de dicha colección, los recuperemos como si de una única base de datos se tratase. Mongo se encargará de averiguar de manera transparente en qué base de datos se encuentran los datos.

Casos de uso

La base de datos MongoDB es adecuada para los siguientes usos:20​

Almacenamiento y registro de eventos
Sistemas de manejo de documentos y contenido
Comercio electrónico
Juegos
Sistemas con alto volumen de lecturas
Aplicaciones móviles
Almacén de datos operacional de sitios web
Almacenamiento de comentarios
Votaciones
Registro de usuarios
Perfiles de usuarios
Sesiones de datos
Proyectos que utilizan metodologías de desarrollo iterativo o ágiles
Manejo de estadísticas en tiempo real
MongoDB es utilizado para uno o varios de estos casos por varias empresas.

Manipulación de datos: colecciones y documentos

MongoDB guarda la estructura de los datos en documentos BSON con un esquema dinámico, lo que implica que no existe un esquema predefinido. Los elementos de los datos se denominan documentos y se guardan en colecciones. Una colección puede tener un número indeterminado de documentos. Comparando con una base de datos relacional, se puede decir que las colecciones son como tablas y los documentos son registros en la tabla. La diferencia es que en una base de datos relacional cada registro en una tabla tiene la misma cantidad de campos, mientras que en MongoDB cada documento en una colección puede tener diferentes campos. En un documento, se pueden agregar, eliminar, modificar o renombrar nuevos campos en cualquier momento,22​ ya que no hay un esquema predefinido.

Lenguajes de programación soportados
C
C++
C# / .NET
Erlang
Haskell
J#
Java
JavaScript
Lisp
Node.js
Perl
PHP
Python
Ruby
Delphi
Scala


Instrumentos de MongoDB

Los siguientes comandos pueden ser instalados para el manejo y la administración del sistema de base de datos:

mongo23​
Shell interactivo que permite a los desarrolladores y administradores ver, insertar, eliminar y actualizar datos en su base de datos. Este también permite entre otras funciones la replicación de datos, configuración de sharding, apagar los servidores, ejecutar JavaScript y todos los comandos que se puedan realizar.


mongostat24
Resultado de imagen para mongodb
Instrumento de línea de comandos que muestra en resumen una lista de estadísticas de una instancia de MongoDB en ejecución. Esto te permite visualizar cuantas inserciones, actualizaciones, eliminaciones, consultas y comandos se han ejecutado, pero también cuanta memoria está utilizando y cuanto tiempo ha estado cerrada la base de datos.

mongotop25​
Instrumento de línea de comandos que provee un método para dar seguimiento a la cantidad de tiempo que dura una lectura o escritura de datos en una instancia. También provee estadísticas en el nivel de cada colección.

mongosniff26​
Instrumento de línea de comandos que provee un sniffing en la base de datos haciendo un sniffing en el tráfico de la red que va desde y hacia MongoDB.

mongoimport27​/mongoexport28​
Instrumento de línea de comandos que facilita la importación exportación de contenido desde JSON, CSV o TSV. También tiene el potencial de importar o exportar hacia otros formatos.

mongodump29​/mongorestore30​
Instrumento de línea de comandos para la creación de una imagen binaria del contenido de la base de datos. Estos comandos son utilizados para la estrategia de copias de seguridad en MongoDB.


MariaDB

Resultado de imagen para mariadbEs un sistema de gestión de bases de datos derivado de MySQL con licencia GPL . Es desarrollado por Michael (Monty) Widenius, la fundación MariaDB y la comunidad de desarrolladores de software libre.​ Introduce dos motores de almacenamiento nuevos, uno llamado. Tiene una alta compatibilidad con MySQL ya que posee las mismas órdenes, interfaces, API y bibliotecas, siendo su objetivo poder cambiar un servidor por otro directamente.

Este SGBD surge a raíz de la compra de Sun Microsystems ​ por parte de Oracle. MariaDB es una bifurcación directa de MySQL que asegura la existencia de una versión de este producto con licencia GPL. Widenius decidió crear esta variante porque estaba convencido de que el único interés de Oracle en MySQL era reducir la competencia que MySQL suponía para el mayor proveedor de bases de datos relacionales del mundo, que es Oracle.

Software de terceros

Hay bastantes paquetes privativos y libres de terceros diseñados para MySQL que también están disponibles para integrarse con MariaDB. Algunos ejemplos son:

  • DBEdit: Una aplicación de administración libre para MariaDB y otras bases de datos.
  • dbForge Studio for MySQL: Aplicación propietaria de gestión de bases de datos MySQL compatible con MariaDB.
  • Navicat: Una serie de aplicaciones propietarias de gestión de bases de datos para Windows, Mac OS X y Linux.
  • SQLyog: Aplicación propietaria de gestión de bases de datos MySQL compatible con MariaDB para Windows y Linux.
  • HeidiSQL: Un cliente de fuente abierta y libre para MySQL, 100% compatible con MariaDB, incluido con el paquete MSI para Windows de MariaDB desde la versión 5.2.7.5​6​
  • phpMyAdmin: Una aplicación web de administración libre para MySQL compatible con MariaDB.

Versiones

La versión de desarrollo de MariaDB es la 10.0.7​ Está construida sobre la versión 5.5, con algunas características de MySQL 5.6 y otras prestaciones nuevas no encontradas en ninguna otra versión anterior.




Diferencias con MySQL

Mecanismos de almacenamiento
Además de los mecanismos de almacenamiento estándar MyISAM, Blackhole, CSV, Memory y Archive, también se incluyen en la versión fuente y binaria de MariaDB los siguientes:
Aria (alternativa a MyISAM resistente a caídas)
XtraDB (reemplazo directo de InnoDB)
PBXT (en MariaDB 5.1, 5.2 y 5.3. Deshabilitada en 5.5)
FederatedX (reemplazo directo de Federated)
OQGRAPH — nuevo en 5.2
SphinxSE — nuevo en 5.2
IBMDB2I. Eliminada por Oracle de MySQL 5.1.55 pero se incluye en el código de MariaDB hasta la versión 5.5.
Cassandra, en MariaDB 10.0 (otros mecanismos no-sql se incluirán en MariaDB)
Sequence, aparecido con MariaDB 10.0.3

Facilidad de uso

Proporciona estadísticas de índices y tabla, para lo que añade nuevas tablas en INFORMATION_SCHEMA y nuevas opciones a los comandos FLUSH y SHOW para identificar la causa en la carga del SGBD.
Los comandos ALTER TABLE y LOAD DATA INFILE dejan de ser opacos e informan del progreso.
La precisión para tipo de datos TIME, DATETIME, y TIMESTAMP ampliada al microsegundo.
Introducidas características estilo NoSQL, como HandlerSocket que proporciona acceso directo a tablas InnoDB saltándose la capa SQL.
Columnas dinámicas, que proporcionan al usuario columnas virtuales en las tablas.

Prestaciones

El optimizador de MariaDB -que se encuentra en el núcleo de cualquier SGBD- funciona claramente más rápido con cargas complejas.

En la replicación se han introducido sustanciosas mejoras, por ejemplo el “group commit for the binary log” que acelera la replicación hasta el doble.
Eliminación de tablas. El acceso a tablas a través de views acelera el acceso.

Testeo

Más juegos de test en la distribución.
Parches para los tests.
Distintas combinaciones de configuración y sistema operativo para los tests.
Eliminación de tests innecesarios, como "no testar la característica X si no la he incluido en mi ejecutable".

Menos errores y alertas

Los juegos de testeo han permitido reducir los errores sin introducir nuevos.
Las alertas de compilación están relacionadas, y los desarrolladores las han intentado reducir.

¿Cuando usar MariaDB?

MariaDB se puede usar en cualquier lugar donde antes se usaba MySQL. Como se trata de un sistema compatible, todo software que antes usase MySQL es capaz de seguir funcionando igualmente con MariaDB. Por tanto, se puede usar MariaDB en cualquier proyecto de nueva creación, así como intercambiar MySQL por MariaDB en prácticamente todos los proyectos que puedan estar ya en producción. El paso es inmediato y no requiere cambiar nada en el código, simplemente instalar MariaDB y volver a crear las bases de datos y tablas en el nuevo sistema.

¿Por qué usar MariaDB?

Resultado de imagen para mariadb
MariaDB ha seguido el desarrollo del sistema gestor MySQL, implementando diversas mejoras y nuevas funcionalidades. Las mejoras muchas veces afectan directamente al rendimiento o permiten optimizar mejor las bases de datos, por lo que usar MariaDB siempre será una opción interesante. Además, nos garantizamos que vamos a disfrutar de un software con mayor crecimiento y progresión que el propio MySQL.

Entre las novedades que ya han sido implementadas en MariaDB, podemos destacar:
Nuevos motores de almacenamiento como Aria, que permite sustituir a MyISAM con algunas mejoras, y XtraDB, que viene a evolucionar InnoDB.
Nuevas características disponibles, relacionadas directamente con las características disponibles en bases de datos NoSQL.

Nueva gestión de conexiones con la base de datos, que permite multiplicar el número de accesos de manera concurrente.
Nuevos motores de funcionamiento en cluster, como Galera, que nos permiten interesantes posibilidades de cara a la adopción Cloud.
Además, al tratarse de una comunidad muy dinámica y abierta a los desarrolladores, MariaDB garantiza la aparición más rápida de parches, que puedan solucionar eventuales problemas de seguridad.


MariaDB se puede usar desde la mayoría de sistemas de administración existentes para MySQL, como PhpMyAdmin o HeidiSQL, y es compatible con aplicaciones tan populares como WordPress, Drupal, etc. La compatibilidad es tal que muchas veces el uso de MariaDB en lugar de MySQL es transparente para desarrolladores o administradores de sistemas. Prueba de ello es que, para arrancar los servicios de MariaDB, o para hacer login en el sistema gestor por medio de línea de comandos, se usan los mismos mecanismos ya conocidos en MySQL.


AMAZON DYNAMODB

Resultado de imagen para DYNAMODB
 DynamoDB es un servicio de base de datos noSQL ofrecido por Amazon como parte de Amazon Web Services. DynamoDB expone un modelo de datos similar y deriva su nombre de Dynamo (un sistema de almacenamiento interno utilizado inicialmente para su propio sitio web), pero tiene una implementación subyacente diferente.

 Dynamo tenía un diseño multimaestro que requería que el cliente resolviera conflictos de versiones y DynamoDB usa replicación síncrona en múltiples centros de datos para una alta durabilidad y disponibilidad. DynamoDB fue anunciado por Amazon CTO Werner Vogels el 18 de enero de 2012.

Descripción general

DynamoDB difiere de otros servicios de Amazon al permitir a los desarrolladores comprar un servicio basado en el rendimiento, en lugar de almacenamiento. Si tiene Auto Scaling habilitado, la base de datos escalará automáticamente. Además, los administradores pueden solicitar cambios de rendimiento y DynamoDB extenderá los datos y el tráfico en una serie de servidores mediante unidades de estado sólido, lo que permite un rendimiento predecible. Ofrece integración con Hadoop a través de Elastic MapReduce.

Solicitudes

Métricas relacionadas con la creación de un Índice Secundario Global (Global Secondary Index)
Estas métricas se pueden rastrear utilizando la consola de administración de AWS, utilizando la interfaz de línea de comandos de AWS o una herramienta de supervisión que se integra con Amazon CloudWatch.

Beneficios

Rendimiento a escala
DynamoDB admite algunas de las aplicaciones de escala más grandes del mundo y proporciona tiempos de respuesta en milisegundos de un solo dígito a cualquier escala. Puede crear aplicaciones con capacidad de almacenamiento y procesamiento prácticamente ilimitada. Las tablas globales de DynamoDB replican sus datos en varias regiones de AWS para darle acceso rápido y local a los datos para sus aplicaciones distribuidas globalmente. Para casos de uso que requieren un acceso aún más rápido con latencia de microsegundos, DynamoDB Accelerator (DAX) proporciona caché en memoria completamente administrada.



Sin servidor

Con DynamoDB, no hay servidores que aprovisionar, parchear o administrar, y no hay software que instalar, mantener o utilizar. DynamoDB aumenta o reduce automáticamente las tablas para ajustar la capacidad y mantener el rendimiento. La disponibilidad y la tolerancia a errores están integradas, por lo que no es necesario tener en cuenta estas capacidades a la hora de diseñar sus aplicaciones. DynamoDB proporciona los modos de capacidad bajo demanda y de capacidad aprovisionada para que pueda optimizar los costos mediante la especificación de la capacidad por carga de trabajo o el pago de los recursos que consume.

Listo para el uso empresarial

DynamoDB admite las transacciones ACID para que pueda crear aplicaciones de vital importancia para el negocio a escala. DynamoDB cifra todos los datos de forma predeterminada y proporciona un control de acceso e identidad detallado en todas las tablas. 

Puede crear copias de seguridad completas de cientos de terabytes de datos al instante sin que el rendimiento afecte a sus tablas, y recuperarlas en cualquier momento en los 35 días anteriores sin tiempo de inactividad. DynamoDB también cuenta con el respaldo de un acuerdo de nivel de servicio para garantizar la disponibilidad.

Aplicaciones

Resultado de imagen para DYNAMODBAplicaciones web sin servidor
Cree aplicaciones web eficientes que ajusten su escala automáticamente. No necesita mantener servidores y las aplicaciones cuentan con alta disponibilidad automatizada.

Back-ends móviles
Use DynamoDB y AWS AppSync para crear aplicaciones web y móviles interactivas con actualizaciones en tiempo real, acceso a datos sin conexión y sincronización de datos con resolución de conflictos integrada.

Microservicios

Cree microservicios flexibles y reutilizables mediante el uso de DynamoDB como un almacén de datos sin servidor para lograr un rendimiento estable y ágil.


COUCHBASE

Resultado de imagen para couchbaseOriginalmente conocido como Membase, es un proyecto de código abierto, un paquete de software distribuido (del inglés arquitecturas shared-nothing) multi-modelo orientado a base de datos documental y que está optimizado para aplicaciones interactivas.Estas aplicaciones pueden servir a muchos usuarios al mismo tiempo mediante la creación, almacenamiento, recuperación, agregación, manipulación y presentación de datos. Para soportar este tipo de necesidades, Couchbase Server está diseñado para proporcionar acceso a documentos de valor-clave (del inglés key - value documents) o documentos JSON de fácil escala, con baja latencia y alto rendimiento sostenido. Está diseñado para ser agrupado a partir de una sola máquina a gran escala que abarca muchas máquinas (clúster).

El Servidor de Couchbase proporciona compatibilidad con el protocolo de cliente memcached, agregando persistencia de disco, replicación de datos, reconfiguración del clúster en vivo, reequilibrio y multiusuario con partición de datos.

Detalles
Membase fue desarrollado por varios dirigentes del proyecto memcached, que habían fundado la compañía, NorthScale, para desarrollar un almacén de datos claves-valor con la simplicidad, velocidad y escalabilidad de memcached, pero que también proporcionara el almacenamiento, la persistencia y las capacidades de consulta de una base de datos. El código fuente membase original fue aportado por NorthScale, y por los co-patrocinadores de Zynga y Naver (entonces conocido como NHN) a un nuevo proyecto sobre membase.org en junio de 2010.

Los fundadores del proyecto Membase y Membase, Inc. anunciaron una fusión con CouchOne (una empresa con muchas de las principales figuras detrás de CouchDB) con una mezcla de proyecto asociado. La empresa fusionada fue llamada Couchbase, Inc. En enero de 2012, Couchbase lanzó Couchbase Server 1.8.

Arquitectura

Cada nodo de Couchbase consta de un servicio de datos, servicio de índice, servicio de consulta y componente de administrador de clúster. A partir de la versión 4.0, los tres servicios se pueden distribuir para ejecutarse en nodos separados del clúster si es necesario. En términos del teorema CAP de Eric Brewer, Couchbase es normalmente un sistema de tipo CP lo que significa que proporciona consistencia de datos y tolerancia de partición, o puede ser configurado como un sistema de punto de acceso (AP) con varios clústeres.

Administrador de clústeres

El administrador del clúster supervisa la configuración y el comportamiento de todos los servidores de un clúster de Couchbase. Configura y supervisa el comportamiento entre nodos, así como la gestión de flujos de replicación y operaciones de reequilibrio. También proporciona funciones de agregación y de consenso métricas en el clúster y una interfaz de gestión de clústeres REST. El gestor de clúster utiliza el lenguaje de programación Erlang y Open Telecom Platform.

Replicación y conmutación por error

La replicación (informática) dentro de los nodos de un clúster se puede controlar con varios parámetros. En diciembre de 2012, la replicación también fue soportada entre los diferentes centros de datos.



Gestor de datos

El gestor de datos almacena y reintenta documentos en respuesta a las operaciones de datos de las aplicaciones. De forma asíncrona escribe datos en el disco después de reconocer al cliente. En la versión 1.7 y posteriores, las aplicaciones pueden asegurar opcionalmente que los datos se escriban en más de un servidor o en disco antes de reconocer una escritura al cliente.

Los parámetros definen las edades de los elementos que afectan cuando los datos se mantienen y cómo se gestiona la memoria máxima y la migración desde la memoria principal al disco. Soporta conjuntos de trabajo mayores que una cuota de memoria por "nodo" o "cubo". Los sistemas externos pueden suscribirse a los flujos de datos filtrados, apoyando, por ejemplo, indexación de búsqueda con texto completo, análisis de datos o archivo.

Formato de datos

Un documento es la unidad más básica de manipulación de datos en Couchbase Server. Los documentos se almacenan en formato JSON, sin esquemas predefinidos.

Memoria caché de objetos gestionados

Couchbase Server incluye una caché integrada multi-hilo de objetos, que implementa las API compatibles con memcached tales como get, set, delete, append, prepend, etc.

Motor de almacenamiento

Couchbase Server tiene un diseño de almacenamiento tail-append que es inmune a la corrupción de datos, asesinos OOM o pérdida repentina del poder. Los datos se escriben en el archivo de datos de forma append-only, lo que permite a Couchbase hacer principalmente escrituras secuenciales para actualizar y proporcionar patrones de acceso optimizados de E/S en el disco.

Rendimiento

Una referencia de rendimiento realizado por Altoros en 2012, compara Couchbase Server con otras tecnologías. Cisco Systems publicó un punto de referencia que mide la latencia y el rendimiento de Couchbase Server con una carga de trabajo mixta en 2012.

Licenciamiento y soporte

Resultado de imagen para couchbaseCouchbase Server es una versión empaquetada del software de código abierto de CouchBase y está disponible en una edición de la comunidad sin recientes correcciones de errores con licencia Apache 2.0.9​ y una edición para uso comercial.10​ Couchbase Server está disponible para los sistemas operativos Ubuntu, Debian, Red Hat, SUSE, Oracle Linux, Microsoft Windows y Mac OS X.

Couchbase ha apoyado herramientas de desarrollo de software de los lenguajes de programación .Net, PHP, Ruby, Python, C, Node.js, Java, and Go.

N1QL

El lenguaje de consulta N1QL (del inglés non-first normal form query language), se utiliza para la búsqueda de datos en el servidor. Se anunció en marzo de 2015, como "SQL para documentos".


El modelo de datos N1QL es N1NF (del inglés non-first normal form) con soporte para atributos anidados y normalización orientada a dominio. El modelo de datos N1QL también es un superconjunto apropiado y una generalización del modelo relacional.

No hay comentarios:

Publicar un comentario