Tipos de bases de datos por Juan del Ángel Oláez González
1.
2. De una manera simple, es un contenedor que permite
almacenar la información de forma ordenada con diferentes
propósitos y usos. Por ejemplo, en una base de datos se
puede almacenar información de diferentes departamentos
(Ventas, Recursos Humanos, Inventarios, entre otros). El
almacenamiento de la información por sí sola no tiene un
valor, pero si combinamos o relacionamos la información con
diferentes departamentos nos puede dar valor. Por ejemplo,
combinar la información de las ventas del mes de junio del
2014 para el producto ‘X’ en la zona norte nos da un
indicativo del comportamiento de las ventas en un periodo de
tiempo.
3. Existen muchas empresas con diferentes giros y dependiendo
del giro será el tipo de procesamiento que se le dará a la
información, esto determinará el tipo de base de datos a utilizar.
Existen diferentes tipos de bases de datos pero las más
comunes son las OLTP y OLAP.
Las bases de datos de tipo OLTP (On Line Transaction
Processing) también son llamadas bases de datos dinámicas lo
que significa que la información se modifica en tiempo real, es
decir, se insertan, se eliminan, se modifican y se consultan
datos en línea durante la operación del sistema. Un ejemplo es
el sistema de un supermercado donde se van registrando cada
uno de los artículos que el cliente está comprando y a su vez el
sistema va actualizando el Inventario.
4. Los pasos para organizar los datos en tu tabla son los siguientes:
1. Dale un nombre a tu tabla, para ellos sigue los consejos que te acabamos
de dar.
2. Identifica los objetos, observa el listado de información que quieres alojar en
la base de datos, analízala e identifica esos objetos. Nombre, dirección, edad,
RUT, pueden ser algunos de esos objetos.
3. Identifica y crea una tabla distinta según tus objetos. Puede que sea mejor
separar la información de contacto de la información personal en distintas
bases de datos.
4. Identifica los atributos para cada objeto; separa la información que se
almacena lo que más te sea posible. Por ejemplo, si almacenas nombres de
personas en una tabla, puede separar el nombre en primer nombre y apellido.
Hacer esto te permitirá ordenar por el apellido, lo que será más útil de si
llegaran a estar juntas.
5. Define y nombra columnas por cada atributo que identificaste en el paso
anterior. Da a cada columna un nombre que identifique claramente la
información que contiene. Los nombres de columna deben ser una sola
palabra, sin espacios. Por ejemplo, PrimerNombre ó primer_nombre
5. Algunas palabras están reservadas por MySQL y SQL para su propio uso y no se puede utilizar
como nombres de columna. Algunas de las palabras que se utilizan actualmente en SQL o se
reservan para uso futuro, son ADD, ALL, AND, CREATE, DROP,GROUP, ORDER, RETURN,
SELECT, SET, TABLE, USE, WHERE, y muchos otras que no se puede utilizar como nombres
de columna. Para una lista completa de las palabras reservadas, consulte el manual de MySQL
en línea en www.mysql.com/doc/en/Reserved_words.html.
6. Identificar la clave principal.
Cada fila de una tabla necesita un identificador único. Ninguna fila de una tabla debe ser
exactamente igual a otra. Al diseñar tu tabla, tú decides qué columna tiene el identificador único,
llamado la clave principal.
7. Definir los valores predeterminados.
Puede definir un valor predeterminado que MySQL asignará a un campo cuando no hay datos
introducidos en él. Por ejemplo, si tu aplicación almacena una dirección que incluye un país,
puedes especificar, Chile como el predeterminado. Si el usuario no escribe un país, Chile será
automáticamente ingresado.
8. Identificar las columnas que requieren datos.
Puedes especificar que a ciertas columnas no se les permite estar vacías (también llamado
NULL). Por ejemplo, la columna que contiene la clave primaria no puede estar vacío. Eso
significa que MySQL no creará la fila y devolverá un mensaje de error. El valor puede ser un
espacio en blanco o una cadena vacía (por ejemplo, “”).
6.
7. Según la variabilidad de la base de datos
Bases de datos estáticas
Son bases de datos únicamente de lectura, utilizadas
primordialmente para almacenar datos históricos que
posteriormente se pueden utilizar para estudiar el comportamiento
de un conjunto de datos a través del tiempo, realizar proyecciones,
tomar decisiones y realizar análisis de datos para
Bases de datos dinámicas
Son bases de datos donde la información almacenada se modifica con
el tiempo, permitiendo operaciones como actualización, borrado y
edición de datos, además de las operaciones fundamentales de
consulta. Un ejemplo, puede ser la base de datos utilizada en un
sistema de información de un supermercado.
8. SQL (por sus siglas en inglés Structured Query
Language; en español lenguaje de consulta
estructurada) es un lenguaje específico del dominio que
da acceso a un sistema de gestión de bases de datos
relacionales que permite especificar diversos tipos de
operaciones en ellos. Una de sus características es el
manejo del álgebra y el cálculo relacional que permiten
efectuar consultas con el fin de recuperar, de forma
sencilla, información de bases de datos, así como hacer
cambios en ellas.
9. SQL fue uno de los primeros lenguajes comerciales para
el modelo relacional de Edgar Frank Codd como se
describió en su papel de 1970 El modelo relacional de
datos para grandes bancos de datos compartidos. A pesar
de no adherirse totalmente al modelo relacional descrito
por Codd, pasó a ser el lenguaje de base de datos más
usado.
SQL pasó a ser el estándar del Instituto Nacional
Estadounidense de Estándares (ANSI) en 1986 y de
la Organización Internacional de Normalización (ISO) en
1987. Desde entonces, el estándar ha sido revisado para
incluir más características. A pesar de la existencia de
ambos estándares, la mayoría de los códigos SQL no son
completamente portables entre sistemas de bases de
datos diferentes sin ajustes.
10. En informática, NoSQL (a veces llamado "no sólo SQL")
es una amplia clase de sistemas de gestión de bases de
datos que difieren del modelo clásico de SGBDR (Sistema
de Gestión de Bases de Datos Relacionales) en aspectos
importantes, siendo el más destacado que no
usan SQL como lenguaje principal de consultas. Los datos
almacenados no requieren estructuras fijas como tablas,
normalmente no soportan operaciones JOIN, ni garantizan
completamente ACID (atomicidad, consistencia,
aislamiento y durabilidad), y habitualmente escalan
bien horizontalmente. Los sistemas NoSQL se denominan
a veces "no sólo SQL" para subrayar el hecho de que
también pueden soportar lenguajes de consulta de tipo
SQL.
11. Por lo general, los investigadores académicos
se refieren a este tipo de bases de datos
como almacenamiento estructurado, término
que abarca también las bases de datos
relacionales clásicas. A menudo, las bases de
datos NoSQL se clasifican según su forma de
almacenar los datos, y comprenden categorías
como clave-valor, las implementaciones
de BigTable, bases de datos documentales,
y bases de datos orientadas a grafos.
12. Microsoft SQL Server es un sistema de manejo de bases de datos
del modelo relacional, desarrollado por la empresa Microsoft.
El lenguaje de desarrollo utilizado (por línea de comandos o mediante
la interfaz gráfica de Management Studio) es Transact-SQL(TSQL),
una implementación del estándar ANSI del lenguaje SQL, utilizado
para manipular y recuperar datos (DML), crear tablas y definir
relaciones entre ellas (DDL).
Dentro de los competidores más destacados de SQL Server
están: Oracle, MariaDB, MySQL, PostgreSQL. SQL Server ha estado
tradicionalmente disponible solo para sistemas operativos Windows de
Microsoft, pero desde 2017 también está disponible para Linux y
Docker containers.
Puede ser configurado para utilizar varias instancias en el mismo
servidor físico, la primera instalación lleva generalmente el nombre del
servidor, y las siguientes - nombres específicos (con un guion invertido
entre el nombre del servidor y el nombre de la instalación).
13. Oracle Cloud es la nube más amplia e
integrada del sector con opciones de
despliegue que van desde la nube pública
hasta el centro de datos. Oracle Cloud ofrece
los mejores servicios en software como servicio
(SaaS), datos como servicio (DaaS), plataforma
como servicio (PaaS) e infraestructura como
servicio (IaaS). Oracle Cloud ayuda a las
organizaciones a aportar innovación y
transformar su negocio mediante el aumento de
la agilidad, la disminución de los costos y la
reducción de la complejidad de TI.
14. MongoDB es una base de datos orientada a documentos. Esto quiere decir que en lugar de guardar los datos
en registros, guarda los datos en documentos. Estos documentos son almacenados en BSON, que es una
representación binaria de JSON.
Una de las diferencias más importantes con respecto a las bases de datos relacionales, es que no es
necesario seguir un esquema. Los documentos de una misma colección - concepto similar a una tabla de una
base de datos relacional -, pueden tener esquemas diferentes.
Imaginemos que tenemos una colección a la que llamamos Personas. Un documento podría almacenarse de la
siguiente manera:
{ Nombre: "Pedro", Apellidos: "Martínez Campo", Edad: 22, Aficiones: ["fútbol","tenis","ciclismo"], Amigos: [ {
Nombre:"María", Edad:22 }, { Nombre:"Luis", Edad:28 } ] } El documento anterior es un clásico documento
JSON. Tiene strings, arrays, subdocumentos y números. En la misma colección podríamos guardar un
documento como este:
{ Nombre: "Luis", Estudios: "Administración y Dirección de Empresas", Amigos:12 } Este documento no sigue el
mismo esquema que el primero. Tiene menos campos, algún campo nuevo que no existe en el documento
anterior e incluso un campo de distinto tipo.
Esto que es algo impensable en una base de datos relacional, es algo totalmente válido en MongoDB.
En esta base de datos no existen las transacciones. Aunque nuestra aplicación puede utilizar alguna técnica
para simular las transacciones, MongoDB no tiene esta capacidad. Solo garantiza operaciones atómicas a nivel
de documento. Si las transacciones son algo indispensable en nuestro desarrollo, deberemos pensar en otro
sistema.
Tampoco existen los JOINS. Para consultar datos relacionados en dos o más colecciones, tenemos que hacer
más de una consulta. En general, si nuestros datos pueden ser estructurados en tablas, y necesitamos las
relaciones, es mejor que optemos por un RDBMS clásico.
Y para finalizar, están las consultas de agregación. MongoDB tiene un framework para realizar consultas de
este tipo llamado Aggregation Framework. También puede usar Map Reduce. Aún así, estos métodos no llegan
a la potencia de un sistema relacional. Si vamos a necesitar explotar informes complejos, deberemos pensar en
utilizar otro sistema. Eso sí, esta es una brecha que MongoDB va recortando con cada versión. En poco tiempo
esto podría dejar de ser un problema.
15. ¿Cómo funciona MongoDB?
MongoDB está escrito en C++, aunque las consultas se hacen pasando
objetos JSON como parámetro. Es algo bastante lógico, dado que los propios
documentos se almacenan en BSON. Por ejemplo:
db.Clientes.find({Nombre:"Pedro"}); La consulta anterior buscará todos los
clientes cuyo nombre sea Pedro.
MongoDB viene de serie con una consola desde la que podemos ejecutar los
distintos comandos. Esta consola está construida sobre JavaScript, por lo que
las consultas se realizan utilizando ese lenguaje. Además de las funciones de
MongoDB, podemos utilizar muchas de las funciones propias de JavaSciprt.
En la consola también podemos definir variables, funciones o utilizar bucles.
Si queremos usar nuestro lenguaje de programación favorito, existen drivers
para un gran número de ellos. Hay drivers oficiales para C#, Java, Node.js,
PHP, Python, Ruby, C, C++, Perl o Scala. Aunque estos drivers están
soportados por MongoDB, no todos están en el mismo estado de madurez.
Por ejemplo el de C es una versión alpha. Si queremos utilizar un lenguaje
concreto, es mejor revisar los drivers disponibles para comprobar si son
adecuados para un entorno de producción
16. ¿Dónde se puede utilizar MongoDB?
Aunque se suele decir que las bases de datos NoSQL tienen un ámbito de
aplicación reducido, MongoDB se puede utilizar en muchos de los
proyectos que desarrollamos en la actualidad.
Cualquier aplicación que necesite almacenar datos semi estructurados puede
usar MongoDB. Es el caso de las típicas aplicaciones CRUD o de muchos de
los desarrollos web actuales.
Eso sí, aunque las colecciones de MongoDB no necesitan definir une
esquema, es importante que diseñemos nuestra aplicación para seguir uno.
Tendremos que pensar si necesitamos normalizar los datos, denormalizarlos o
utilizar una aproximación híbrida. Estas decisiones pueden afectar al
rendimiento de nuestra aplicación. En definitiva el esquema lo definen las
consultas que vayamos a realizar con más frecuencia.
MongoDB es especialmente útil en entornos que requieran escalabilidad. Con
sus opciones de replicación y sharding, que son muy sencillas de configurar,
podemos conseguir un sistema que escale horizontalmente sin demasiados
problemas.
17. ¿Cómo se instala MongoDB?
La instalación de una instancia del servidor es un
juego de niños. Simplemente tenemos que bajar
los binarios para nuestro sistema operativo. Hay
versiones par Windows, Linux y MacOs. Una vez
bajados podremos arrancar el servicio de
MongoDB con un solo comando.
mongod --dbpath data Con este comando
arrancamos el servicio mongod, que empezará a
escuchar peticiones por el puerto 27017. Es
importante indicar el parámetro --dbpath, con la
ruta dónde se almacenarán los ficheros de nuestra
base de datos
18. Oracle NoSQL Database es una base de datos de valor-
clave distribuida tipo NoSQL de Oracle Corporation.
Proporciona semántica transaccional para manipulación
de datos, escalabilidad horizontal y administración y
supervisión sencillas.
Oracle NoSQL Database proporciona un modelo de datos
muy simple para el desarrollador de la aplicación. Cada
fila se identifica mediante una clave única, y también tiene
un valor, de longitud arbitraria, que es interpretada por la
aplicación. La aplicación puede manipular (insertar, borrar,
actualizar, leer) una sola fila en una transacción. La
aplicación también puede realizar un análisis iterativo, no
transaccional de todas las filas en la base de datos.
19. Arquitectura Oracle NoSQL Database se basa en el motor de almacenamiento de alta
disponibilidad Oracle Berkeley DBJava Edition. Además de eso, agrega una capa de servicios para su uso en
entornos distribuidos para proporcionar un almacenamiento clave / valor altamente disponible y distribuido,
adecuado para aplicaciones de gran volumen y sensibles a la latencia.
A este respecto, una revisión de Infoworld menciona que Oracle compró la compañía que desarrolló Berkeley
DB, Sleepycat Software .
Sharding y replicaciónOracle NoSQL Database es un sistema cliente-servidor, fragmentado , compartido y
nada . Los datos en cada fragmento se replican en cada uno de los nodos que comprenden el
fragmento. Proporciona un paradigma clave-valor simple para el desarrollador de la aplicación. La clave principal
de un registro es el hash para identificar el fragmento al que pertenece el registro. La base de datos Oracle
NoSQL está diseñada para admitir cambios dinámicos de la cantidad de fragmentos en respuesta a la
disponibilidad de hardware adicional. Si la cantidad de fragmentos cambia, los pares clave-valor se redistribuyen
dinámicamente entre el nuevo conjunto de fragmentos, sin que sea necesario apagar el sistema y
reiniciarse. Un fragmento está formado por un único nodo principal elegible que puede servir para solicitudes de
lectura y escritura, y varias réplicas (generalmente dos o más) que pueden servir para solicitudes de lectura. Las
réplicas se mantienen actualizadas mediante la replicación de transmisión. Cada cambio en el nodo maestro se
confirma localmente en el disco y también se propaga a las réplicas.
Administración y supervisión del sistema Oracle NoSQL Database proporciona un servicio de administración, al
que se puede acceder desde una consola web o una interfaz de línea de comandos (CLI). Este servicio admite
la funcionalidad principal, como la capacidad de configurar, iniciar, detener y monitorear un nodo de
almacenamiento, sin requerir esfuerzo manual con archivos de configuración, scripts de shell u operaciones de
bases de datos explícitas. Además, también permite que los agentes Java Management Extensions
(JMX) o Simple Network Management Protl(SNMP) estén disponibles para la supervisión. Esto permite a los
clientes de administración sondear información sobre el estado, las métricas de rendimiento y los parámetros
operativos del nodo de almacenamiento y sus servicios administrados.
20. datos transaccionales se entregan a todos los nodos de réplica con políticas de durabilidad
flexibles por transacción. En el caso de que el nodo de réplica principal falle, un proceso de
elección de conmutación automática basado en PAXOS basado en consenso minimiza el tiempo
de inactividad. Tan pronto como el nodo fallido se repare, vuelve a unirse al fragmento, se
actualiza y luego está disponible para procesar las solicitudes de lectura. Por lo tanto, el servidor
Oracle NoSQL Database puede tolerar fallas de nodos dentro de un fragmento y también
múltiples fallas de nodos en fragmentos distintos
La colocación correcta de maestros y réplicas en el hardware del servidor (bastidores e
interruptores de interconexión) por parte de Oracle NoSQL Database tiene como objetivo
aumentar la disponibilidad en los servidores básicos.
Equilibrio de carga transparenteOracle NoSQL Database Driver divide los datos en tiempo real y
los distribuye uniformemente en los nodos de almacenamiento. Es topología de red y consciente
de la latencia, enruta las operaciones de lectura y escritura al nodo de almacenamiento más
apropiado para optimizar la distribución y el rendimiento de la carga.
Transacción conforme a ACIDLa base de datos Oracle NoSQL
proporciona transacciones compatibles con ACID para operaciones completas de Crear, Leer,
Actualizar y Eliminar (CRUD), con durabilidad ajustable y garantías transaccionales de
coherencia. También puede ejecutar una secuencia de operaciones como una única
unidad atómica , siempre y cuando todos los registros va a ser operado compartir el mismo Key
Key Path.
21. Alta disponibilidad y tolerancia a fallas La base de datos Oracle NoSQL proporciona
una replicación de base de datos de réplica única y múltiple. Los Formato de datos
JSONOracle NoSQL Database tiene soporte para la serialización de datos Avro , que
proporciona un formato de datos binarios compacto basado en esquemas. Avro le
permite definir un esquema (usando JSON) para los datos contenidos en el valor de un
registro y también es compatible con la evolución del esquema. Topología inteligente
configurable Los administradores del sistema indican cuánta capacidad está disponible
en un nodo de almacenamiento determinado, lo que permite que nodos de
almacenamiento más capaces alojen varios nodos de replicación. Una vez que el sistema
conoce la capacidad de los nodos de almacenamiento en una configuración,
automáticamente asigna nodos de replicación de forma inteligente. Esto está destinado a
un mejor equilibrio de carga para el sistema, un mejor uso de los recursos del sistema y
la minimización del impacto del sistema en caso de fallo del nodo de
almacenamiento. Smart Topology también admite centros de datos, lo que garantiza que
se asigne inicialmente un conjunto completo de réplicas a cada centro de datos.
Configuración elástica "Elasticidad" se refiere a la expansión dinámica en línea del clúster
desplegado. Se pueden agregar más nodos de almacenamiento para aumentar la
capacidad, el rendimiento, la confiabilidad o todo lo anterior. Oracle NoSQL Database
incluye una función de planificación de topología, con la cual un administrador puede
modificar la configuración de una base de datos NoSQL mientras la base de datos aún
está en línea. Esto le permite al administrador:
22. Aumente la distribución de datos: aumentando el número de
fragmentos en el clúster, lo que aumenta el rendimiento de
escritura.
Aumente el factor de replicación: asignando nodos de
replicación adicionales a cada fragmento, lo que aumenta el
rendimiento de lectura y la disponibilidad del sistema.
Reequilibrar almacén de datos: al modificar la capacidad de un
nodo (s) de almacenamiento, el sistema puede reequilibrarse,
reasignando nodos de replicación a los nodos de
almacenamiento disponibles, según corresponda.
El comando de reequilibrio de topología permite al
administrador mover nodos de replicación y / o particiones
desde nodos sobre utilizados en nodos de almacenamiento
subutilizados o viceversa
23. Administración y supervisión del sistema Oracle NoSQL
Database proporciona un servicio de administración, al que se
puede acceder desde una consola web o una interfaz de línea
de comandos (CLI). Este servicio admite la funcionalidad
principal, como la capacidad de configurar, iniciar, detener y
monitorear un nodo de almacenamiento, sin requerir esfuerzo
manual con archivos de configuración, scripts de shell u
operaciones de bases de datos explícitas. Además, también
permite que los agentes Java Management Extensions
(JMX) o Simple Network Management Protocol, (SNMP) estén
disponibles para la supervisión. Esto permite a los clientes de
administración sondear información sobre el estado, las
métricas de rendimiento y los parámetros operativos del nodo
de almacenamiento y sus servicios administrados.
24. Apache Cassandra es una base de datos NoSQL distribuida y basada en un
modelo de almacenamiento de «clave-valor», de código abierto que está
escrita en Java. Permite grandes volúmenes de datos en forma distribuida. Por
ejemplo, lo usa Twitter para su plataforma. Su objetivo principal es la
escalabilidad lineal y la disponibilidad. La arquitectura distribuida de
Cassandra está basada en una serie de nodos iguales que se comunican con
un protocolo P2P con lo que la redundancia es máxima. Está desarrollada
por Apache Software Foundation.
Cassandra ofrece soporte robusto para múltiples centros de datos, con la
replicación asincrónica sin necesidad de un servidor maestro, que permiten
operaciones de baja latencia para todos los clientes.
Cassandra también ofrece un gran rendimiento. En 2012, investigadores de la
Universidad de Toronto que estudian los sistemas NoSQL concluyeron que "En
términos de escalabilidad, hay un claro ganador a través de nuestros
experimentos. Cassandra logra el más alto rendimiento para el número
máximo de nodos en todos los experimentos", aunque "esto tiene como precio
una alta latencia de escritura y lectura"
25. Descentralizado: Todos los nodos del clúster tiene el mismo rol. No
hay un único punto de fallo. Los datos se distribuyen a través del
clúster (por lo que cada nodo contiene datos diferentes). No existe un
nodo maestro por lo que cada nodo puede dar servicio a cualquier
solicitud.
Soporta replicación y replicación de múltiples data center: Las
estrategias de replicación son configurables . Cassandra está
diseñado como un sistema distribuido, para el despliegue de un gran
número de nodos a través de múltiples centros de datos. La
arquitectura distribuida de Cassandra está diseñado para desplegarse
sobre múltiples data center, tener redundancia y recuperarse ante
desastres.
Escalabilidad: El rendimiento de leer y escribir aumenta linealmente a
medida que se añaden nuevos nodos. Se pueden agregar nuevos
nodos sin necesidad de interrumpir la ejecución de la aplicación.
26. Tolerancia a fallos:Los datos se replican
automáticamente a múltiples nodos para
recuperarse frente a fallos. Cassandra soporta
replicación a través de múltiples datacenter. Se
puede reemplazar nodos que presenten fallos sin
tiempo de inactividad o interrupción de la
aplicación.
Consistencia:Se ofrece la elección de el nivel de
consistencia para las lecturas y escrituras.Un
ejemplo posible de consulta utilizando consistencia
es el siguiente: SELECT * FROM users WHERE
state='TX' USING CONSISTENCY QUORUM