B2-T3 SGBD relacionales orientadas a objetos y NoSQL: características y componentes. Flashcards
¿Qué es el sharding?
Es el proceso por el cual se fragmenta una base de datos, en una o varias una partición horizontal de datos en una base de datos o motor de búsqueda. Cada fragmento se mantiene en una instancia de servidor de base de datos separada para distribuir la carga.
Algunos datos dentro de una base de datos permanecen presentes en todos los fragmentos, pero otros aparecen solo en un único fragmento.
¿Cuales son los principios de BASE?
-Basically Available: El sistema debe garantizar cierto nivel de disponibilidad
-Soft state: se prioriza la propagación de datos. Delegando el control de inconsistencias a elementos externos.
-Eventually consistent: Este principio establece que con el tiempo el sistema convergerá a un estado coherente.
¿Que dice el Teorema CAP o conjetura de Weber?
Principio fundamental en el diseño de sistemas distribuidos.
Es imposible para un sistema de cómputo distribuido garantizar simultáneamente: la consistencia (Consistency), disponibilidad (Availability) y la tolerancia al particionado (Partition Tolerance).
Consistencia
Todos los nodos ven la misma información
Disponibilidad
Toda petición tiene que recibir una respuesta
Tolerancia al particionado
El sistema debe seguir funcionando aunque haya fallos de comunicaciones.
¿Qué gestores cumplen a la vez las condiciones de Consistencia y Disponibilidad?
Sistemas de BBDD relacionales (RDBMS)
¿Qué gestores cumplen a la vez las condiciones de Disponibilidad y Tolerancia al particionado?
-Riak
-Cassandra
-couchDB
-SimpleDB
-Dynamo
-Voldemort
¿Qué gestores cumplen a la vez las condiciones de Consistencia y Tolerancia al particionado ?
-HBase -MongoDB (topología Maestro/esclavo)
-Redis
-BigTable
BBDD de tipo Clave-Valor
Almacenan datos como pares de clave-valor. Son útiles para aplicaciones que necesitan rápidas búsquedas de claves.
Amazon SimpleDB
Base de Datos distribuida escrita en Erlang. por Amazon.com. Se utiliza como servicio web junto con Amazon Elastic Compute Cloud (EC2) y Amazon S3 y forma parte de Amazon Web Services.
BD de clave-valor.
Listado BBDD de tipo Clave-Valor
-Redis
-Riak
-Voldemort
-ArangoDB()
-Memcached
-DynamoDB
-SimpleDB
Amazon DynamoDB
Servicio de base de datos noSQL ofrecido por Amazon como parte de Amazon Web Services.
Ofrece un almacén de datos clave-valor rápido y persistente con soporte integrado para replicación, escalado automático, cifrado en reposo y copia de seguridad bajo demanda, entre otras características.
BD de clave valor y orientada a documentos.
Memcached
BD de clave-valor. Sistema distribuido de propósito general para caché basado en memoria. Muy usado en la actualidad por múltiples sitios web.
Es empleado para el almacenamiento en caché de datos u objetos en la memoria RAM, reduciendo así las necesidades de acceso a un origen de datos externo.
Su funcionamiento se basa en una tabla hash distribuida a lo largo de varios equipos.
ArangoDB
ArangoDB es un sistema de base de datos multimodelo desarrollado por ArangoDB Inc. Admite tres modelos de datos (gráficos, documentos JSON, clave/valor)
Usa AQL (ArangoDB Query Language) similar a SQL, y proporciona GraphQL.
Permite transacciones ACID, pero solo si los datos no están fragmentados.
Foxx framework para implementar Microservicios.
Utiliza RocksDB como motor de almacenamiento.
Redis (Remote Dictionary Server)
Redis es un motor de base de datos en memoria, basado en el almacenamiento en tablas de hashes (clave/valor) pero que opcionalmente puede ser usada como una base de datos durable o persistente.
Modelo de licencias dual: RSALv2 y SSPLv1
Usuarios notables: Twitter, Airbnb, Tinder, Yahoo, Adobe, Hulu Amazon y OpenAI.
Riak
Es un almacén de datos de valores clave NoSQL distribuido que ofrece alta disponibilidad, tolerancia a fallos, simplicidad operativa y escalabilidad.
Opera bajo la Apache License 2.0
Soporta oficialmente Ruby, Java, Erlang and Python.
Usuarios notables: AT&T y GitHub
BBDD de tipo Columnares
Almacenan datos en columnas en lugar de filas
Listado de BBDD de tipo Columnares
-Cassandra
-HBase
-ScyllaDB
-HyperTable
-BigTable
Hypertable
Fue un proyecto de software de código abierto para implementar un sistema de gestión de bases de datos inspirado en publicaciones sobre el diseño de Google ‘s Bigtable.
BigTable
Es un servicio de base de datos NoSQL de valores clave y columnas anchas totalmente administrado para grandes cargas de trabajo analíticas y operativas como parte del portafolio de Google Cloud.
Es distribuido, de alta eficiencia y propietario. Está construido sobre GFS (Google File System), Chubby Lock Service, y algunos otros servicios y programas de Google.
Apache HBase
Es un sistema gestor de base de datos distribuida no relacional de código abierto modelada a partir de Google BigTable y escrita en Java. Su desarrollo forma parte del proyecto Hadoop de la Fundación de Software Apache y se ejecuta sobre HDFS (el sistema de archivos distribuidos de Hadoop).
Apache Cassandra (Creada por Facebook y usado por Twiter)
Se trata de un software NoSQL distribuido y basado en un modelo de almacenamiento híbrido entre key-value y «tabular», de código abierto que está escrito en Java. Permite grandes volúmenes de datos en forma distribuida.
Su objetivo principal es la escalabilidad lineal y la disponibilidad. Cuenta con un diseño híbrido que combina un almacén tabular y un almacén de claves y valores. Está diseñado para almacenar datos para aplicaciones que requieren un rendimiento rápido de lectura y escritura.
Cassandra Query Language (CQL).
CQL es una API flexible similar a SQL que permite a los desarrolladores ejecutar declaraciones de lenguaje de definición de datos (DDL) y lenguaje de manipulación de datos (DML).
BBDD de tipo Documentos
Almacenan datos en forma de documentos (generalmente JSON o BSON). Son flexibles y permiten modelos de datos complejos
MongoDB
Base de datos orientado a documentos, multiplataforma y disponible en código fuente. Clasificado como un producto de base de datos NoSQL, MongoDB utiliza documentos similares a JSON con esquemas opcionales (BSON).
Licenciado bajo la Server Side Public License (SSPL), source-available.
Tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas.
Implementa el sharding eficientemente.
Comandos de MongoDB
mongo - Shell interactivo para leer, insertar, actualizar o visulaizar datos
mongostat - resumen una lista de estadísticas de una instancia
mongotop - da seguimiento a la cantidad de tiempo que dura una lectura o escritura de datos en una instancia
mongosniff - provee un sniffing en la base de datos haciendo un sniffing en el tráfico de la red que va desde y hacia MongoDB.
mongoimport/mongoexport - facilita la importación exportación de contenido desde JSON, CSV o TSV y otros formatos.
mongodump/mongorestore - creación de una imagen binaria del contenido de la base de datos (copias de seguridad)
Listado de BBDD de tipo Documentos
-MongoDB
-CouchDB
-OrientDB
-TerraStore
-ArangoDB
-DynamoDB
Apache CouchDB
Gestor de bases de datos de código abierto, cuyo foco está puesto en la facilidad de su uso y en ser “una base de datos que asume la web de manera completa”.
Emplea JSON para almacenar los datos, JavaScript como lenguaje de consulta por medio de MapReduce y HTTP como API.
Facilidad con la que permite hacer replicaciones.
Implementa una forma de control de concurrencia multiversión (Multiversion Concurrency Control) a fin de evitar la necesidad de bloquear el archivo de base de datos durante las escrituras.
TerraStore
Base de datos documental. Los datos son accecibles mediante HTTP
OrientDB
Sistema de gestión de bases de datos NoSQL de código abierto escrito en Java. BD multimodelo, que admite modelos de grafos, documentos y objetos, las relaciones se gestionan como en las bases de datos de grafos con conexiones directas entre registros.
BBDD de tipo Grafos
Almacenan datos como nodos y relaciones. Son útiles para representar redes y conexiones entre datos.
Listado de BBDD de tipo Grafos
-Neo4j
-OrientDB
-ArangoDB
-Amazon Neptune
-FlockDB
-InfiniteGraph
-HyperGraphDB
-AllegroGraph
Neo4j
Motor de persistencia embebido, basado en disco, implementado en Java, completamente transaccional, que almacena datos estructurados en grafos en lugar de en tablas.
Licencia dual: AGPLv3 / comercial.
Es accesible desde software escrito en otros lenguajes utilizando el lenguaje de consulta Cypher a través de un endpoint HTTP transaccional o mediante el protocolo binario “Bolt”.
Protocolo Bolt (Bolt)
Protocolo de red orientado a la conexión que se utiliza para la comunicación cliente-servidor en aplicaciones de bases de datos. Opera a través de una conexión TCP o WebSocket.
Amazon Neptune
BD de grafos. Se utiliza como un servicio web y forma parte de Amazon Web Services (AWS). Admite RDF de W3C, y sus respectivos lenguajes de consulta Apache TinkerPop’s Gremlin, openCypher y SPARQL.
ODMG (Object Data Management Group)
Se usa tanto para definir el grupo de personas y empresas encargadas de desarrollar el modelo de objetos para persistencia, así como para la definición de dicho estándar.
Este modelo especifica los elementos que se definirán, y en qué manera se hará, para la consecución de persistencia en las bases de datos orientadas a objetos que soporten el estándar.
Consta de un lenguaje de definición de objetos, ODL, que especifica los elementos de este modelo
Conceptos clave del modelo de objetos soportados por las BDOO
Encapsulación: Oculta información al resto de objetos para impedir conflictos o un acceso incorrecto.
Herencia: Jerarquía de clases a partir de la que los objetos heredan comportamientos.
Polimorfismo: Propiedad de una operación que permite aplicarse a objetos de distinta tipología.
Características mandatorias de la BDOO
Debe soportar objetos complejos.
Identidad del objeto.
Encapsulamiento.
Tipos o clases.
Concurrencia.
Recuperación en caso de fallos.
Completación computacional.
Persistencia de datos y manejador de almacenamiento secundario
Facilidad de query
Tipos de datos extensible
Características opcionales BDOO
Herencia múltiple: Tipos o clases deben ser capaces de heredar de sus supertipos o superclases los atributos y los métodos.
Diseño de transacciones o versiones.
Chequeo de tipos e inferencia de distribución.
Características abiertas
Son los puntos donde existen distintas opciones
El paradigma de la programación.
La representación del sistema y su uniformidad.
Otros BBDD de tipo Orientas a Objetos
Realm.io
InterSystems Caché.
Intersystems IRIS.
Giga spaces.
ObjectBox.
GemStone/S
BD orientada Objetos. Es un software propietario, sus características permiten una alta disponibilidad en línea en cualquier momento. Utiliza como lenguaje central de consulta a Smalltalk.
Wakanda
BD orientada a objetos. Es una de las más recientes. Esta construida bajo licencia opensource. Es especial para desarrollo web y móvil con aplicaciones en JavaScript.
Esta soportada en Linux, Microsoft Windows y MacOs. Permite la vinculación de diversos módulos o aplicaciones de trabajo que le permiten al desarrollador tener el control necesario sobre su código.
Objectivity/DB
Base de datos de objetos, producida por Objectivity, Inc.
Permite a las aplicaciones almacenar los objetos estándar de C, C, Java o Python persistentemente, sin mapearlos.
Soporta lenguajes populares orientados a objetos, así como SQL /ODBC y XML. Es compatible con las plataformas Linux, Macintosh, UNIX y Windows, facilitando la interoperabilidad a través de diferentes idiomas y entornos de hardware.
Versant
Es un sistema gestor de base de datos orientada a objetos (SGBDOO) desarrollado por Versant Corporation.
ObjectStore
Orientada a objetos, está diseñada para manejar datos creados por aplicaciones que utilizan técnicas de programación orientada a objetos, evitando la sobrecarga de mapeo objeto-relacional requerida cuando se utilizan datos orientados a objetos con una base de datos relacional. Fue innovadora en el uso del lenguaje C++ para hacer transparente el acceso a la base de datos(sobrecarga del operador new()).
Zope Object Database (ZODB)
Es una base de datos orientada a objetos para almacenar de forma transparente y persistente objetos en el lenguaje de programación Python. Se incluye como parte de Zope, un Servidor de aplicaciones Web, pero también puede ser utilizado independientemente de Zope.
ObjectDB
Base de datos orientada a objetos para Java. Se puede utilizar en modo cliente-servidor y en modo incrustado (en proceso).
No proporciona su propia API propietaria. Por lo tanto, el trabajo con ObjectDB requiere JPA o JDO incluidas en Java, no de ORM. Soporta los lenguajes de consulta. JDO Query Language (JDOQL), que se basa en la sintaxis de Java, y JPA Query Language (JPQL), que se basa en la sintaxis de SQL.
ZooDB
Es un ODBMS de código abierto de Java puro que admite la API JDO 3.0.
DB4O (DataBase 4 (for) Objects)
Novedoso motor de base de datos orientada a objetos desarrollado por la compañia db4objects, Inc.
Las claves innovadoras de este producto es su alto rendimiento (sobre todo en modo embebido) y el modelo de desarrollo que proporciona a las aplicaciones para su capa de acceso a datos, el cual propugna un abandono completo del paradigma relacional de las bases de datos tradicionales.
BBDD de tipo XML
Constituye un sistema software que da persistencia a datos almacenados en formato XML. Estos datos pueden ser interrogados, exportados y serializados. Las bases de datos XML están generalmente asociadas con las bases de datos documentales.
Listado de BBDD de tipo XML
-BaseX
-eXist
-Sedna
-Quizx
-Berkeley DBXML
-Apache X Indice