Introducción a las bases de datos (Parte 8: Gestores de bases de datos más populares)

  En entradas anteriores se ha explicado qué es un gestor de bases de datos y los pormenores de su funcionamiento básico.
  La presente entrada recorrerá  los sistemas de gestión de bases de datos más utilizados, que no son necesariamente los únicos y/o los mejores, pero sí aquellos que poseen mayor aceptación por parte de los usuarios informáticos que trabajan con bases de datos.
  Esta reseña no profundizará en los pormenores de cada uno de los sistemas de gestión de bases de datos de los que tratará, sino que explicará lo más breve y claramente posible las características más destacables de cada uno de ellos.
  En primer lugar, debe recordarse que un gestor de bases de datos convierte el acceso a los datos y su gestión en una aplicación cerrada, interponiéndose entre los usuarios y los ficheros, y haciéndose cargo de todos los problemas de explotación, mantenimiento y comprobación de los datos. De esta manera, el usuario pierde de vista todos los detalles relativos al almacenamiento físico de los datos tratando con ellos sólo a través de un lenguaje conceptual sencillo.

ACCESS


  Este gestor de bases de datos viene incluido en el paquete ofimático denominado Microsoft Office, por lo que también es conocido como Microsoft Access.
  Access utiliza los conceptos de bases de datos relacionales y puede manejarse por medio de consultas e informes. Está adaptado para recopilar datos de otras utilidades del mismo paquete al que pertenece, como Excel, SharePoint, etc.
  La aplicación permite recopilar información relativa a un asunto o propósito particular (seguimiento de pedidos de clientes, el mantenimiento de una colección de música, etc.).
  A pesar de que Access no es simple, la curva de aprendizaje no es tan fuerte como lo es para gestores de bases de datos más potentes. Este sistema de gestión de bases de datos es ideal para crear una base de datos para un usuario personal, de pequeña empresa, o incluso una aplicacion de un solo usuario. El programa incluye una gran variedad de asistentes y plantillas diseñadas para simplificar el proceso de creación de bases de datos para diferentes tareas.
  Por otra parte, su acceso está diseñado fundamentalmente para un solo usuario en un ordenador. Varios usuarios pueden trabajar con una base de datos si se ha dividido mediante la herramienta "Divisor de base de datos" de Access. Este elemento separará la base de datos en un extremo posterior que contiene las tablas y un extremo delantero que contiene las herramientas de acceso a la información. El extremo posterior es colocado en una ubicación compartida. El extremo delantero es ubicado en el equipo informático de cada usuario. Para actualizar los formularios o consultas, se debe actualizar la copia de cada usuario.
  Además, las bases de datos de este gestor de bases de datos incluyen una limitación de tamaño de 2 GB, 32.768 objetos y 255 usuarios simultáneos. Estas limitaciones no supondrán un problema para la mayoría de los usuarios. Sin embargo, las grandes aplicaciones multiusuario, o incluso las bases de datos individuales, grandes, de un solo usuario, incluyendo los campos multimedia, rápidamente encontrarán las limitaciones. Enlazar dos o más bases de datos en Access elimina las limitaciones de tamaño, pero esto puede complicar la configuración de las mismas.
  Por último, Access trabaja con Visual Basic para que las aplicaciones puedan ofrecer una mayor funcionalidad. A pesar de que VBA es una solución de programación, esta se caracteriza por su sencillez. Se utiliza para automatizar tareas, crear formularios simplificados o vincular una base de datos a otra aplicación de Office.


CASSANDRA

    También conocido como Apache Cassandra, es un gestor de bases de datos NoSQL distribuido y basado en un modelo de almacenamiento de «clave-valor», 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. 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.
  Este sistema de gestión de bases de datos ofrece soporte robusto para múltiples centros de datos,​ con la replicación asincrónica sin necesidad de un servidor maestro, que permite operaciones de baja latencia [suma de retardos (circunstancia informática producida por la demora en la propagación y transmisión de paquetes dentro de la red) temporales dentro de una red] para todos los clientes.
 Además, Cassandra también ofrece un gran rendimiento, aunque, en algunos casos, a costa de una alta latencia de escritura y lectura.
  El modelo de datos de este gestor de bases de datos consiste en particionar las filas, que son reorganizadas en tablas.​ Las claves primarias de cada tabla tienen un primer componente que es la clave de partición. Dentro de una partición, las filas son agrupadas por las columnas restantes de la clave. Las demás columnas pueden ser indexadas por separado de la clave primaria.​
  Las tablas se pueden crear, eliminar y alterar en tiempo de ejecución sin bloquear actualizaciones y consultas.​
  Cassandra no soporta uniones o subconsultas, sino que enfatiza en la desnormalización a través de características como colecciones.​
  En las versiones iniciales utilizaba un API propia para poder acceder a la base de datos. En los últimos tiempos están apostando por un lenguaje denominado CQL (Cassandra Query Language, no confundir con Contextual Query Language) que posee una sintaxis similar a SQL aunque con muchas menos funcionalidades. Esto hace que iniciarse en el uso de la misma sea más sencillo. Permite acceder en Java desde JDBC.


MARIADB

  Se trata de un sistema de gestión de bases de datos derivado de MySQL con licencia GPL (General Public License). Introduce dos motores de almacenamiento nuevos, uno llamado Aria y otro llamado XtraDB. Tiene una alta compatibilidad con MySQL puesto que posee las mismas órdenes, interfaces, API y bibliotecas, siendo su objetivo poder cambiar un servidor por otro directamente.
  Este gestor de bases de datos es una bifurcación directa de MySQL que asegura la existencia de una versión de este producto con licencia GPL. Sin embargo, aunque, en la práctica, MariaDB reemplaza directamente a la misma versión de MySQL, existen ciertas diferencias entre ambos:

  •   Mecanismos de almacenamiento: Además de los mecanismos de almacenamiento estándar MyISAM, Blackhole, CSV, Memory y Archive, y las mencionados más arriba, también se incluyen en la versión fuente y binaria de MariaDB los siguientes: PBXT (deshabilitada en la versión 5.5), FederatedX, OQGRAPH, SphinxSE, 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, y Sequence.
  •   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 gestor de bases de datos; además, los comandos ALTER TABLE y LOAD DATA INFILE dejan de ser opacos e informan del progreso; por otra parte, la precisión para tipo de datos "TIME", "DATETIME", y "TIMESTAMP" ha sido ampliada al microsegundo; también se han introducido características estilo NoSQL, como HandlerSocket, que proporciona acceso directo a tablas InnoDB saltándose la capa SQL; sus columnas son dinámicas,  proporcionando al usuario columnas virtuales en las tablas; y las subconsultas funcionan correctamente.
  •   Prestaciones: El optimizador de MariaDB (que se encuentra en el núcleo de cualquier sistema de gestión de bases de datos) funciona claramente más rápido con cargas complejas; además, en la replicación se han introducido sustanciosas mejoras; la eliminación de tablas; el acceso a tablas a través de vistas ("views", en inglés) acelera el acceso.
  •   Testeo: Más juegos de test en la distribución; nuevos parches para los tests; distintas combinaciones de configuración y sistema operativo para estos; eliminación de tests innecesarios, como "no testar la característica X si no la he incluido en mi ejecutable".
  •   Menor número de errores y alertas: Los juegos de testeo han permitido reducir los errores sin introducir nuevos; por su parte, las alertas de compilación están relacionadas, y los desarrolladores las han intentado reducir.

MONGODB

  Se trata de un sistema de base de datos NoSQL orientado a documentos, desarrollado bajo el concepto de código abierto.
  En lugar de guardar los datos en tablas como se hace en las base de datos relacionales, MongoDB guarda estructuras de datos en documentos similares a JSON con un esquema dinámico (este gestor de bases de datos utiliza una especificación llamada BSON), haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.
  Este gestor de bases de datos 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 JavaScript definida por el usuario.
  Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible hacer índices secundarios. El concepto de índices en este sistema de gestión de bases de datos es similar a los encontrados en las bases de datos relacionales.
  Además, MongoDB soporta el tipo de replicación primario-secundario. Cada grupo de primario y sus secundarios se denomina "replica set".​ El primario puede ejecutar comandos de lectura y escritura. Los secundarios replican los datos del primario y sólo se pueden usar para lectura o para copia de seguridad, pero no se pueden realizar escrituras. Los secundarios tienen la habilidad de poder elegir un nuevo primario en caso de que el primario actual deje de responder.
  Por otra parte, este gestor de bases de datos se puede escalar de forma horizontal usando el concepto de fragmento (“shard”, en inglés).​ El desarrollador elige una clave de fragmentación, la cual determina cómo serán distribuidos los datos de una colección. Los datos son divididos en rangos (basados en la clave de fragmentación) y distribuidos a través de múltiples fragmentos. Cada fragmento puede ser una replica set. MongoDB tiene la capacidad de ejecutarse en múltiples 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 este sistema de gestión de bases de datos, y se pueden agregar nuevos servidores al mismo con el sistema de base de datos funcionando.
  MongoDB puede ser utilizado como un sistema de archivos, tomando la ventaja de la capacidad que tiene este gestror de bases de datos para el balanceo de carga y la replicación de datos utilizando múltiples servidores para el almacenamiento de archivos. Esta función se llama GridFS15​ y es, más bien, una implementación en los controladores, no en el servidor, por lo que está incluida en los controladores oficiales que la compañía de este sistema de gestión de bases de datos desarrolla. Estos controladores exponen funciones y métodos para la manipulación de archivos y contenido a los desarrolladores. En un sistema con múltiples servidores, los archivos pueden ser distribuidos y replicados entre los mismos y de una forma transparente, de esta forma, se crea un sistema eficiente que maneja fallos y balanceo de carga.
  Este gestor de bases de datos también proporciona un entorno de trabajo ("framework", en inglés) de agregación que permite realizar operaciones similares a las que se obtienen con el comando SQL GROUP BY. El entorno de trabajo de agregación está construido como una tubería en la que los datos van pasando a través de diferentes etapas en las 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.
  Al mismo tiempo, MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas.
  No obstante, este gestor de bases de datos, aunque garantiza ACID (características de los parámetros que permiten clasificar las transacciones de los sistemas de gestión de bases de datos) dentro del mismo documento, no implementa las propiedades ACID multidocumento, lo que genera que la base de datos no asegure la durabilidad, la integridad, la consistencia y el aislamiento requeridos obligatoriamente en las transacciones. Es posible que en futuras versiones esto se solucione.


MYSQL

  MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo licencia dual: Licencia pública general/Licencia comercial por Oracle Corporation y está considerada como la base datos de código abierto más popular del mundo,​ y una de las más populares en general junto a Oracle y Microsoft SQL Server, sobre todo para entornos de desarrollo web.
  La base de datos se distribuye en varias versiones, una Community, distribuida bajo la Licencia pública general de GNU, versión 2, y varias versiones Enterprise, para aquellas empresas que quieran incorporarlo en productos privativos.
  Este gestor de bases de datos administra estas de forma muy rápida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la modificación de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el que va a utilizar este sistema de gestión de bases de datos, es importante monitorizar de antemano el rendimiento para detectar y corregir errores tanto de SQL como de programación.
  Inicialmente, MySQL carecía de elementos considerados esenciales en las bases de datos relacionales, tales como integridad referencial y transacciones. A pesar de ello, atrajo a los desarrolladores de páginas web con contenido dinámico, justamente por su simplicidad.
  Poco a poco los elementos de los que carecía este gestor de bases de datos están siendo incorporados tanto por desarrollos internos, como por desarrolladores de software libre. Entre las características disponibles en las últimas versiones se puede destacar:
  •   Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas igualmente.
  •   Disponibilidad en gran cantidad de plataformas y sistemas.
  •  Posibilidad de selección de mecanismos de almacenamiento que ofrecen diferentes velocidades de operación, soporte físico, capacidad, distribución geográfica, transacciones...
  •   Transacciones y claves foráneas.
  •   Conectividad segura.
  •   Replicación.
  •   Búsqueda e indexación de campos de texto.

  En resumen, MySQL es un sistema de administración relacional de bases de datos. Una base de datos relacional archiva datos en tablas separadas en vez de colocar todos los datos en un gran archivo. Esto permite velocidad y flexibilidad. Las tablas están conectadas por relaciones definidas que hacen posible combinar datos de diferentes tablas sobre pedido.

Este gestor de bases de datos es software de fuente abierta. Fuente abierta significa que es posible para cualquier persona usarlo y modificarlo. Cualquier persona puede bajar el código fuente de MySQL y usarlo sin pagar. Cualquier interesado puede estudiar el código fuente y ajustarlo a sus necesidades. MySQL usa el GPL (GNU General Public License) para definir qué puede hacer y qué no puede hacer con el software en diferentes situaciones. Si un usuario no se ajusta al GPL o requiere introducir código MySQL en aplicaciones comerciales, puede comprar una versión comercial licenciada.


POSTGRESQL


  Este es un sistema de gestión de bases de datos relacional orientado a objetos y libre, publicado bajo la licencia PostgreSQL, similar a la BSD o la MIT.
  PostgreSQL no tiene un gestor de defectos, haciendo muy difícil conocer el estado de sus defectos.
  Posee, entre otras, las siguientes características:
  •   Alta concurrencia: Mediante un sistema denominado MVCC ("Acceso concurrente multiversión", por sus siglas en inglés) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una visión consistente.
  •   Amplia variedad de tipos nativos: Este gestor de bases de datos provee nativamente soporte para: Números de precisión arbitraria, texto de longitud ilimitada, figuras geométricas (con una variedad de funciones asociadas), direcciones IP (IPv4 e IPv6), bloques de direcciones estilo CIDR, direcciones MAC, y matrices. Por otra parte, los usuarios también pueden crear sus propios tipos de datos, los que pueden ser por completo indexables gracias a la infraestructura GiST de PostgreSQL.
  •   Funciones: Bloques de código que se ejecutan en el servidor. Pueden ser escritos en varios lenguajes, con la potencia que cada uno de ellos da, desde las operaciones básicas de programación, tales como bifurcaciones y bucles, hasta las complejidades de la programación orientada a objetos o la programación funcional. Los disparadores ("triggers", en inglés) son funciones enlazadas a operaciones sobre los datos.
  •   Ventajas: Seguridad en términos generales, integridad en las bases de datos: restricciones en el dominio, integridad referencial, afirmaciones ("Assertions", en inglés), disparadores, autorizaciones, conexión a otros gestores de bases de datos, transacciones y respaldos.


SQL SERVER

  Este 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).
  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 guión invertido entre el nombre del servidor y el nombre de la instalación).
  Entre sus múltiples características se encuentran:
  •   Soporte de transacciones.
  •   Soporta procedimientos almacenados.
  •   Incluye también un entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente.
  •   Permite trabajar en modo cliente-servidor, donde la información y los datos se alojan en el servidor y los terminales o clientes de la red sólo acceden a la información.
  •   Además, permite administrar información de otros servidores de datos.
  En el manejo de SQL mediante líneas de comando se utiliza el SQLCMD, osql, o PowerShell.

  Para el desarrollo de aplicaciones más complejas (tres o más capas), SQL Server incluye interfaces de acceso para varias plataformas de desarrollo, entre ellas .NET, pero el servidor sólo está disponible para sistemas operativos.
  T-SQL (Transact-SQL) es el principal medio de interacción con el servidor, el cual permite realizar las operaciones claves en este gestor de bases de datos, incluyendo la creación y modificación de esquemas de base de datos, inserción y modificación de datos en la base de datos, así como la administración del servidor como tal. Esto se realiza mediante el envío de sentencias en T-SQL y declaraciones que son procesadas por el servidor y los resultados (o errores) regresan a la aplicación cliente.
  Cada versión de SQL Server posee, a su vez, distintas versiones con distintos precios (para cada versión) que dependen también en la configuración física del servidor. Sus versiones principales son:
  •   Enterprise: Contempla todas las características (deshabilitadas en otras ediciones). Es el tipo de versión con más privilegios existente en el mercado.
  •   Developer: Una edición con las mismas características que la anterior, con el fin de ser instalada solamente en ambiente de desarrollo y no en producción. Si se desarrolla para una edición Standard hay que tener en cuenta las características deshabilitadas para esta versión.
  •   Standard: Una versión limitada según la configuración del servidor y sus características, diseñada para servidores inferiores.
  •   Express: Una versión gratuita que posibilita la creación de bases de datos limitadas con características básicas, con el fin de apoyar aplicaciones que necesiten una solución simple para almacenamiento de una cantidad limitada de datos, o usuarios que sus recursos y necesidades son limitados.
  •   SQL Azure: Es una versión de SQL Server en la nube, que permite pagar mensualmente por el servicio sin la necesidad de mantener un servidor físico. La empresa paga sólo por el servicio, y el servicio es manejado a través de torres de servidores en distintos lugares en el mundo. Con SQL Azure no es necesario instalar, mantener o actualizar un servidor físico; a pesar que este servicio depende de aspectos relacionados a problemas de seguridad con respecto a su presencia fuera de la empresa y a la disponibilidad de conexión a Internet.
  
  Espero que este artículo haya sido del gusto del lector. Si es así, aguardo que lo comente y/o lo comparta, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.