lunes, 25 de febrero de 2019

Conclusión


Las bases de datos NoSQL son ya una opción más en la cartera de alternativas para almacenar los datos de tus aplicaciones. Existen varios tipos de ellas, pero en general su objetivo principal es resolver los problemas de performance y de escalabilidad.



Una base de datos documental está constituida por un conjunto de programas que almacenan, recuperan y gestionan datos de documentos o datos de algún modo estructurados. Este tipo de bases de datos constituyen una de las principales subcategorías dentro de las denominadas bases de datos NoSQL. A diferencia de las bases de datos relacionales, estas bases de datos están diseñadas alrededor de una noción abstracta de "Documento".

viernes, 22 de febrero de 2019

Aplicaciones y Usos de las Bases de Datos Documentales

Aplicaciones
Es importante mencionar los casos de éxito en la utilización de bases de datos NoSQL documentales por parte de las compañías, debido al prestigio de dichas compañías y los beneficios obtenidos gracias a la implementación de soluciones NoSQL documentales.

Foursquare
Es una red social cuya actividad consiste en permitir a sus usuarios realizar check-in en lugares concretos (marcar lugares como visitados a medida que el usuario los visita y compartir la localización con amigos y contactos). Cuando Foursquare decidió migrar a MongoDB, su capa de backend consistía en una única base de datos relacional. Debido al crecimiento exponencial que experimentó desde su creación en 2009 hasta pocos años después, los ingenieros de Foursquare decidieron evaluar, entre otras soluciones, bases de datos NoSQL. Finalmente encontraron en MongoDB la base de datos que les permitía solucionar tanto sus necesidades más inmediatas, como las, previsiblemente, pudieran surgirles más adelante

MTV Networks
Aparte del canal de TV y de las webs de cada país (mtv.com, mtv.es, etc) es propietaria de un conjunto de sitios tales como spike.tv, gametrailers.com, entre otros, los cuales tienen unas estadísticas de tráfico y accesos incluso mayores que la web de la propia MTV. El equipo de la web de MTV evaluó migrar su base de datos relacional a un modelo NoSQL de cara a facilitar el escalado y un posible cambio de modelo de datos rápido de cara a cambiar ciertos aspectos del desarrollo de la web.


Disney
Con la implementación de MongoDB 10gen, por parte de Disney, se obtuvo la independencia en el almacenamiento de la información y el desarrollo de las aplicaciones lo cual proporciona un mayor control sobre los datos.




Usos
La necesidad de usar una base de datos documental u otro tipo de base de datos para administrar los datos dependerá del caso de uso. Las bases de datos documentales son útiles para cargas de trabajo que requieren un esquema flexible que permita un desarrollo rápido e iterativo.

Perfiles de usuario
Como las bases de datos documentales tienen un esquema flexible, pueden almacenar documentos que tengan atributos y valores de datos diferentes. Las bases de datos documentales son una solución práctica para los perfiles online en los que diferentes usuarios proporcionan diferentes tipos de información. Mediante una base de datos documental, puede almacenar cada perfil de usuario de forma eficaz almacenando solo los atributos que son específicos de cada usuario.
Las bases de datos documentales administran fácilmente este nivel de detalle y fluidez.


Big data en tiempo real
Históricamente, la capacidad de extraer información de datos operativos se ha visto obstaculizada por el hecho de que las bases de datos operativas y las bases de datos de análisis se mantenían en diferentes entornos: informes operativos y de negocio, respectivamente. Ser capaces de extraer información operativa en tiempo real es fundamental en un entorno empresarial altamente competitivo. Mediante el uso de bases de datos documentales, una empresa puede almacenar y administrar datos operativos de cualquier origen e incluir los datos de forma simultánea en el motor de BI elegido para su análisis. 

Administración de contenido
Para administrar eficazmente el contenido, debe poder recopilar y agrupar contenido de una variedad de orígenes y enviárselo al cliente. Debido a su esquema flexible, las bases de datos documentales son perfectas para recopilar y almacenar cualquier tipo de datos. Puede utilizarlas para crear e incorporar nuevos tipos de contenido, incluido el contenido generado por el usuario, como imágenes, comentarios, y vídeos.

Referencias:
AWS. (23 de enero del 2019). Amazon Web Services. Obtenido de: Amazon Web Services: https://docs.aws.amazon.com/es_es/documentdb/latest/developerguide/document-database-use-cases.html

Gomez R. (27 de Junio de 2017).Universidad Carlos 3 de Madrid. Obtenido de Universidad Carlos 3  de Madrid:  https://core.ac.uk/download/pdf/44310803.pdf

Mancilla S. Universidad de San Carlos. (Agosto 2017). .Obtenido de Universidad de San Carlos: http://biblioteca.usac.edu.gt/tesis/08/08_0709_CS.pdf

jueves, 21 de febrero de 2019

Principales manejadores

MongoDB
Es uno de las bases de datos NoSQL más importantes hoy en día. Siendo una base de datos NoSQL, no usa filas y columnas habituales que tanto asociamos con la gestión de bases de datos relacionales. Su arquitectura se basa en colecciones y documentos. La unidad básica de datos en esta base de datos consiste en un conjunto de pares clave-valor.

  • MongoDB nos proporciona una interesante combinación entre tecnología y datos para una obtener una adecuada ventaja competitiva.
  • Es el más idóneo para aplicaciones de misión crítica, ya que hace reducir considerablemente los riesgos.
  • Aumenta progresivamente el tiempo de valuación y disminuye el costo total de propiedad
  • Construye aplicaciones que regularmente no podría ser posible con las bases de datos tradicionales.



Escalabilidad de los datos en MongoDB
Es excepcional la escalabilidad de MongoDB, cuenta con la opción de escalar sus datos a través de múltiples centros de datos distribuidos en ubicaciones geográficamente diversas, de igual manera facilita cada vez más la obtención de datos y la escalabilidad a demanda.

MongoDB tiene un conjunto integrado de funciones que le permite derivar análisis y visualización de datos, realizar procesamiento en memoria, procesamiento de gráficos, búsqueda de texto y replicación global, ofreciendo una amplia variedad de aplicaciones en tiempo real usando solo la aplicación MongoDB.


Ventajas de MongoDB
  • Plataforma de datos distribuidos
  • Desarrollo rápido e iterativo
  • Modelo de datos flexible
  • TCO reducido (costo total de propiedad)
  • Conjunto de características integrado


Características de MongoDB
  • Cualquier campo en el documento puede ser indexado.
  • Compatibilidad con la replicación del esclavo maestro.
  • La base de datos puede ejecutarse en varios servidores. Los datos se duplican para proteger el sistema en caso de falla del hardware.
  • Admisión de MapReduce y herramientas de agregación.
  • Fácil administración en caso de fallas.
  • Está sin esquema escrito en C ++
  • La combinación de MongoDB y JavaScript funciona bien ya que la base de datos usa el lenguaje en lugar de los procedimientos.

CouchDB
Es una base de datos no relacional “NoSQL” y cuyo propósito principal es el de hacer la replicación de los datos en múltiples dispositivos de la forma más sencilla posible. Es algo así como una fuente de almacenamiento KVS para guardar blobs de JSON (documents), con agregados como validaciones de datos, querying y autenticación integrada de usuarios.

De esta forma, tenemos una API muy completa para el manejo de nuestros datos y con autenticación incorporada, todo corriendo en una misma instancia, y con capacidad para replicarse y sincronizarse con otras instancias o con otros entornos compatibles de una forma rápida, sencilla y automatizada.




  • Una de sus interesantes características es que los datos son accesibles a través de una API Rest. Este sistema es utilizado por compañías como Credit Suisse y la BBC.
  • CouchDB proporciona una ventaja interesante (consecuencia de su posición en el teorema anterior) y es que permite que bases de datos se sincronicen de un modo automático y simple. Si tenemos un dispositivo móvil y se queda sin conexión, al recuperarse se resincroniza la información de la base de datos.

Redis
Redis es una base de datos NoSQL, de tipo clave-valor. Los valores pueden ser de varios tipos: cadenas, hashes, listas, conjuntos o conjuntos ordenados. Tiene sistemas get/set, incrementos/decrementos de números, operaciones de listas, de conjuntos, etc. también dispone de mecanismos publicación/subscripción (para uso como si fuese un sistema MQ), expiración de datos (para uso como sistema de caché), replicación maestro-esclavo y evaluación de código escrito en Lua.


Además de todo esto, Redis se destaca por ser una base de datos con un rendimiento muy elevado, esto es porque se define como una base de datos en memoria con persistencia para datos (que puede ser desactivada). Sus creadores indican que la comparación con otros sistemas tiene matices. En su página web oficial, la sección de benchmark, reseñan algunos datos a tener en cuenta en las comparaciones:


  • Redis es un servidor, por lo que la comparación con sistemas de almacenaje de datos integrados como SQLite, Berkeley DB, Tokyo/Kyoto Cabinet, etc. no es posible, ya que Redis tiene comunicación a través de un protocolo y la red.
  • Redis responde siempre a las peticiones, a diferencia de otros sistemas como MongoDB que no notifica o no da conocimiento sobre las operaciones de escritura, o MySQL que permite retrasar las inserciones.
  • Redis es síncrono, por lo que para realizar un benchmark no se puede hacer sobre una sola y misma conexión, hay que habilitar varias conexiones hacia el servidor.
  • Redis es una base de datos en memoria, por lo que sería raro o extraño compararla con sistemas transaccionales como MySQL o PostgreSQL, entre otros. Para estar en igualdad de condiciones habría que emplear AOF en Redis y alguna política de fsync.
  • Redis es un servidor mono-hilo, esto quiere decir que no aprovecha los beneficios de los sistemas con varias CPUs o multi-core, por lo que su comparación con sistemas multi-hilo en los que sí se aprovechan estas características, es igualmente desventajoso para Redis. No obstante, se pueden lanzar varios Redis en modelo maestro-esclavo si se requiere.

Referencia: 
(08 de marzo del 2018). Experto en Big data. Obtenido de Expertos en Big data:  https://expertoenbigdata.com/que-es-mongodb/

Canales R. (27 de Noviembre del 2018). Adictos al trabajo. Obtenido de Adictos al trabajo: https://www.adictosaltrabajo.com/2018/11/27/primeros-pasos-con-couchdb/

Torres S. (19 de Septimebre del 2018). Woopi Obtenido de Woopi: https://woopi.com.ar/blog/2018/09/19/couchdb-exploit-vulnerabilidad-y-ejecucion-remota/

Rubio M. (21 de Junio del 2016). Altenwald Obtenido de Altenwald: https://altenwald.org/2012/06/21/redis-nosql-de-alto-rendimiento/

¿Qué son las bases de datos documentales?

Cuando hablamos de bases de datos documentales, nos referimos a un conjunto de información estructurada en registros y almacenada en un soporte electrónico legible desde un ordenador. Cada uno de los registros compone una unidad autónoma de información que puede estar a su vez estructurada en diferentes campos o tipos de datos que se almacenan en dicha base de datos. Por ejemplo, entre los campos se pueden encontrar: nombre del documento, título, palabras clave que caracterizan el tema tratado en el documento, fecha o autor. Para cada uno de los documentos que componen la base de datos es necesario hacer un registro, de esta manera, se puede recuperar dicho registro y determinado documento.


Tal y como ya te hemos contado, hoy en día las empresas tienen que trabajar con una gran cantidad de documentación y es muy complicado gestionar todos los documentos diarios que se generan. Por este motivo, ahora más que nunca, es imprescindible contar con un sistema de bases de datos documental en la empresa. 

Estas son algunas de las ventajas que aporta el uso de las bases de datos documentales:

  • Capaces de almacenar cualquier tipo de información en forma de texto.
  • Facilidad de poder manejar una gran cantidad de información, de forma rápida y en muy poco tiempo.
  • Aumenta el rendimiento general de la empresa al poder recuperar los documentos de forma ágil y fácil.
  • Poseen un lenguaje de consulta fácil e intuitivo.
  • Capaz de manejar una gran cantidad de datos.
  • Escalabilidad.
  • Ahorra espacio.
  • Programa fácilmente copias de seguridad.
  • Ahorra papel, y por lo tanto colabora con el medio ambiente.
  • Evita errores en la consulta de información.

A diferencia de las filas y las columnas, las bases de datos NoSQL mantienen los datos en los documentos. Estos documentos siguen un mínimo de reglas estándares para que la base de datos pueda entenderlo durante el post-procesamiento.

El formato utilizado podría ser JSON, XML, YAML, etc., pero, por unas buenas razones, para las bases de datos documentales NoSQL el formato elegido es JSON. Un documento JSON es simplemente más compacto y más legible.


JSON (JavaScript Object Notation) es un formato de representación de datos formulado por el lenguaje de programación JavaScript. Pero gracias a su naturaleza textual, también es utilizado por todos los otros lenguajes de programación.

La ventaja principal del formato JSON reside en su facilidad de uso, tanto por los seres humanos como por los ordenadores. El formato JSON tiene tres fundamentos básicos:

  • Pares de valores clave o atributos.
  • Incrustación de objetos JSON.
  • Matrices. 


Referencia:
2017. SoftDoit. Obtenido de SoftDoit: https://www.softwaredoit.es/software-gestion-documental-guias/que-son-las-bases-de-datos-documentales.html

(2019). Kyocera. Obtenido de Kyocera: https://smarterworkspaces.kyocera.es/blog/las-bases-datos-documentales/                                                  

¿Qué es una Base de Datos NoSQL?

Cuando hablamos de base datos NoSQL, nos referimos a una amplia clase de sistemas de gestión de datos (mecanismos para el almacenamiento y recuperación de datos) que difieren, en aspectos importantes, del modelo clásico de relaciones entre entidades (o tablas) existente en los sistemas de gestión bases de datos relacionales, siendo el más destacado el que no usan SQL como lenguaje principal de consulta.



Las bases de datos NoSQL están orientadas a los documentos y le permiten almacenar y recuperar datos en formatos que no sean tablas.

Estas no tienen esquemas, no usan SQL como el principal lenguaje de consultas, no garantizan la propiedad ACID, los datos almacenados no requieren estructuras fijas como tablas,  normalmente no soportan operaciones JOIN, ni garantizan completamente ACID (atomicidad, coherencia, aislamiento y durabilidad), y habitualmente escalan bien horizontalmente, hacen uso amplio de la memoria principal del computador, resuelven el problema de los altos volúmenes de información y la inmensa cantidad de consultas y transacciones diarias. En resumen, no son relacionales.

Referencia:
Araujo A. (19 de Abril del 2016). El Blog de Oracle de España. Obtenido de El Blog de Oracle de España: https://blogs.oracle.com/spain/qu-es-una-base-de-datos-nosql

Cesar B. (22 de Noviembre del 2016). Iberus Tecnologia. Obtenido de Iberus Tecnologia: https://www.hiberus.com/crecemos-contigo/que-son-las-bases-de-datos-nosql/