Articulo de referencia

Base de datos

Una sentencia SQL select y su resultado En informática , una base de datos es una colección organizada de datos o un tipo de almacenamiento de datos basado en el uso de un siste...

Página semiprotegida

Una sentencia SQL select y su resultado

En informática , una base de datos es una colección organizada de datos o un tipo de almacenamiento de datos basado en el uso de un sistema de gestión de bases de datos ( DBMS ), el software que interactúa con los usuarios finales , las aplicaciones y la propia base de datos para capturar y analizar los datos. El DBMS también incluye las herramientas básicas para administrar la base de datos. El conjunto formado por la base de datos, el DBMS y las aplicaciones asociadas se denomina sistema de base de datos . A menudo, el término "base de datos" se utiliza también de forma general para referirse a cualquier parte del DBMS, al sistema de base de datos o a una aplicación asociada a la base de datos.

Antes de que el almacenamiento y la recuperación digital de datos se generalizaran, las fichas se utilizaban para almacenar datos en una amplia gama de aplicaciones y entornos: en el hogar, para registrar y guardar recetas, listas de la compra, información de contacto y otros datos organizativos; en el ámbito empresarial, para registrar notas de presentaciones, investigaciones y apuntes de proyectos, e información de contacto; en las escuelas, como tarjetas didácticas u otros recursos visuales; y en la investigación académica, para guardar datos como citas bibliográficas o notas en un fichero de fichas . Los indexadores profesionales de libros utilizaban fichas para crear índices de libros hasta que fueron sustituidas por software de indexación en las décadas de 1980 y 1990.

Las bases de datos pequeñas se pueden almacenar en un sistema de archivos , mientras que las bases de datos grandes se alojan en clústeres de computadoras o en la nube . El diseño de bases de datos abarca técnicas formales y consideraciones prácticas, como el modelado de datos , la representación y el almacenamiento eficientes de datos, los lenguajes de consulta , la seguridad y la privacidad de los datos confidenciales, y los problemas de computación distribuida , incluyendo el soporte para el acceso concurrente y la tolerancia a fallos .

Los informáticos pueden clasificar los sistemas de gestión de bases de datos según los modelos de bases de datos que admiten. Las bases de datos relacionales se impusieron en la década de 1980. Estas modelan los datos como filas y columnas en una serie de tablas , y la gran mayoría utiliza SQL para escribir y consultar datos. En la década de 2000, las bases de datos no relacionales se popularizaron, conocidas colectivamente como NoSQL , debido a que utilizan lenguajes de consulta diferentes .

Terminología y descripción general

Formalmente, una "base de datos" se refiere a un conjunto de datos relacionados a los que se accede mediante un "sistema de gestión de bases de datos" (DBMS). Este sistema es un conjunto integrado de software que permite a los usuarios interactuar con una o más bases de datos y proporciona acceso a todos los datos que contienen (aunque pueden existir restricciones que limiten el acceso a datos específicos). El DBMS ofrece diversas funciones que permiten la entrada, el almacenamiento y la recuperación de grandes cantidades de información, así como la gestión de su organización.

Debido a la estrecha relación entre ambos, el término "base de datos" se utiliza a menudo de forma informal para referirse tanto a una base de datos como al sistema de gestión de bases de datos (DBMS) utilizado para manipularla.

Fuera del mundo de la tecnología de la información profesional , el término base de datos se usa a menudo para referirse a cualquier colección de datos relacionados (como una hoja de cálculo o un fichero de tarjetas), ya que los requisitos de tamaño y uso suelen requerir el uso de un sistema de gestión de bases de datos. [ 1 ]

Los sistemas de gestión de bases de datos (DBMS) existentes proporcionan diversas funciones que permiten la gestión de una base de datos y sus datos, las cuales se pueden clasificar en cuatro grupos funcionales principales:

  • Definición de datos : Creación, modificación y eliminación de definiciones que detallan cómo se deben organizar los datos.
  • Actualización : Inserción, modificación y eliminación de los datos en sí. [ 2 ]
  • Recuperación : Seleccionar datos según criterios específicos (por ejemplo, una consulta, una posición en una jerarquía o una posición en relación con otros datos) y proporcionarlos directamente al usuario o ponerlos a disposición para su posterior procesamiento por la propia base de datos o por otras aplicaciones. Los datos recuperados pueden estar disponibles de forma más o menos directa, sin modificaciones, tal como se almacenan en la base de datos, o en una nueva forma obtenida al alterarlos o combinarlos con datos existentes en la base de datos. [ 3 ]
  • Administración : registro y supervisión de usuarios, aplicación de la seguridad de los datos, supervisión del rendimiento, mantenimiento de la integridad de los datos, gestión del control de concurrencia y recuperación de información que se haya corrompido por algún evento, como un fallo inesperado del sistema. [ 4 ]

Tanto una base de datos como su SGBD se ajustan a los principios de un modelo de base de datos particular . [ 5 ] "Sistema de base de datos" se refiere colectivamente al modelo de base de datos, el sistema de gestión de bases de datos y la base de datos. [ 6 ]

Físicamente, los servidores de bases de datos son ordenadores dedicados que almacenan las bases de datos y ejecutan únicamente el sistema de gestión de bases de datos (DBMS) y el software relacionado. Suelen ser ordenadores multiprocesador con una amplia memoria y matrices de discos RAID para un almacenamiento estable. En entornos de procesamiento de transacciones de gran volumen , también se utilizan aceleradores de bases de datos por hardware, conectados a uno o más servidores mediante un canal de alta velocidad. Los DBMS constituyen el núcleo de la mayoría de las aplicaciones de bases de datos . Si bien pueden estar basados ​​en un núcleo multitarea personalizado con soporte de red integrado , los DBMS modernos suelen depender de un sistema operativo estándar para proporcionar estas funciones.

Dado que los sistemas de gestión de bases de datos (DBMS) constituyen un mercado importante , los proveedores de computadoras y almacenamiento suelen tener en cuenta los requisitos de los DBMS en sus propios planes de desarrollo. [ 7 ]

Las bases de datos y los sistemas de gestión de bases de datos (DBMS) se pueden clasificar según el/los modelo(s) de base de datos que admiten (como relacional o XML ), el/los tipo(s) de ordenador en el que se ejecutan (desde un clúster de servidores hasta un teléfono móvil ), el/los lenguaje (s) de consulta utilizados para acceder a la base de datos (como SQL o XQuery ) y su ingeniería interna, que afecta al rendimiento, la escalabilidad , la resiliencia y la seguridad.

Historia

El tamaño, las capacidades y el rendimiento de las bases de datos y sus respectivos sistemas de gestión de bases de datos (DBMS) han crecido exponencialmente. Estos aumentos de rendimiento fueron posibles gracias al progreso tecnológico en las áreas de procesadores , memoria , almacenamiento y redes informáticas . El concepto de base de datos surgió con la aparición de medios de almacenamiento de acceso directo, como los discos magnéticos , que se popularizaron a mediados de la década de 1960; los sistemas anteriores se basaban en el almacenamiento secuencial de datos en cinta magnética . El desarrollo posterior de la tecnología de bases de datos se puede dividir en tres épocas según el modelo o la estructura de datos: navegacional , [ 8 ] SQL/ relacional y post-relacional.

Los dos principales modelos iniciales de datos de navegación fueron el modelo jerárquico y el modelo CODASYL ( modelo de red ). Estos se caracterizaban por el uso de punteros (a menudo direcciones de disco físico) para seguir las relaciones entre los registros.

El modelo relacional , propuesto por primera vez en 1970 por Edgar F. Codd , se apartó de esta tradición al insistir en que las aplicaciones debían buscar datos por contenido, en lugar de seguir enlaces. El modelo relacional emplea conjuntos de tablas de estilo libro mayor, cada una utilizada para un tipo diferente de entidad . No fue hasta mediados de la década de 1980 que el hardware informático se volvió lo suficientemente potente como para permitir el despliegue generalizado de sistemas relacionales (DBMS más aplicaciones). Sin embargo, a principios de la década de 1990, los sistemas relacionales dominaban en todas las aplicaciones de procesamiento de datos a gran escala , y a partir de 2018Siguen siendo dominantes: IBM Db2 , Oracle , MySQL y Microsoft SQL Server son los sistemas de gestión de bases de datos (DBMS) más buscados . [ 9 ] El lenguaje de base de datos dominante, SQL estandarizado para el modelo relacional, ha influido en los lenguajes de base de datos para otros modelos de datos.

Las bases de datos orientadas a objetos se desarrollaron en la década de 1980 para superar el inconveniente de la incompatibilidad entre las bases de datos objeto-relacionales , lo que llevó a la acuñación del término "post-relacional" y también al desarrollo de bases de datos híbridas objeto-relacionales .

La siguiente generación de bases de datos post-relacionales, a finales de la década de 2000, se conoció como bases de datos NoSQL , introduciendo almacenes clave-valor rápidos y bases de datos orientadas a documentos . Una "siguiente generación" competidora, conocida como bases de datos NewSQL, intentó nuevas implementaciones que conservaban el modelo relacional/SQL, con el objetivo de igualar el alto rendimiento de NoSQL en comparación con los sistemas de gestión de bases de datos relacionales disponibles comercialmente.

Sistema de gestión de bases de datos (DBMS) de navegación de la década de 1960

Estructura básica del modelo de base de datos de navegación CODASYL

La introducción del término base de datos coincidió con la disponibilidad del almacenamiento de acceso directo (discos y tambores) a partir de mediados de la década de 1960. El término representó un contraste con los sistemas basados ​​en cintas del pasado, permitiendo el uso interactivo compartido en lugar del procesamiento por lotes diario . El Diccionario Oxford de la Lengua Inglesa cita un informe de 1962 de la System Development Corporation de California como el primero en utilizar el término "base de datos" en un sentido técnico específico. [ 10 ]

A medida que las computadoras aumentaban en velocidad y capacidad, surgieron varios sistemas de bases de datos de propósito general; a mediados de la década de 1960, varios de estos sistemas ya se utilizaban comercialmente. El interés por un estándar comenzó a crecer, y Charles Bachman , autor de uno de estos productos, el Integrated Data Store (IDS), fundó el Database Task Group dentro de CODASYL , el grupo responsable de la creación y estandarización de COBOL . En 1971, el Database Task Group presentó su estándar, que generalmente se conoció como el enfoque CODASYL , y pronto varios productos comerciales basados ​​en este enfoque entraron al mercado.

El enfoque CODASYL ofrecía a las aplicaciones la capacidad de navegar por un conjunto de datos enlazados que se organizaba en una gran red. Las aplicaciones podían encontrar registros mediante uno de tres métodos:

  1. Uso de una clave primaria (conocida como clave CALC, generalmente implementada mediante hash )
  2. Navegar por las relaciones (llamadas conjuntos ) de un registro a otro.
  3. Escanear todos los registros en orden secuencial

Los sistemas posteriores incorporaron árboles B para proporcionar rutas de acceso alternativas. Muchas bases de datos CODASYL también incluyeron un lenguaje de consulta declarativo para los usuarios finales (a diferencia de la API de navegación ). Sin embargo, las bases de datos CODASYL eran complejas y requerían una formación y un esfuerzo considerables para desarrollar aplicaciones útiles.

IBM también tuvo su propio sistema de gestión de bases de datos (DBMS) en 1966, conocido como Information Management System (IMS). IMS fue un desarrollo de software escrito para el programa Apollo en el System/360 . IMS era generalmente similar en concepto a CODASYL, pero utilizaba una jerarquía estricta para su modelo de navegación de datos en lugar del modelo de red de CODASYL. Ambos conceptos se conocieron posteriormente como bases de datos de navegación debido a la forma en que se accedía a los datos: el término fue popularizado por la presentación del Premio Turing de Bachman en 1973 , "El programador como navegador" . IBM clasifica a IMS como una base de datos jerárquica . IDMS y las bases de datos TOTAL de Cincom Systems se clasifican como bases de datos de red. IMS sigue en uso a fecha de 2014.. [ 11 ]

Década de 1970, sistemas de gestión de bases de datos relacionales

Edgar F. Codd trabajó en IBM en San José, California , en una oficina dedicada principalmente al desarrollo de sistemas de disco duro . [ 12 ] No estaba satisfecho con el modelo de navegación del enfoque CODASYL, en particular con la falta de una función de búsqueda. En 1970, escribió varios artículos que esbozaban un nuevo enfoque para la construcción de bases de datos, que finalmente culminó en el innovador libro A Relational Model of Data for Large Shared Data Banks . [ 13 ]

El artículo describía un nuevo sistema para almacenar y trabajar con grandes bases de datos. En lugar de almacenar los registros en una lista enlazada de registros de formato libre, como en CODASYL, la idea de Codd era organizar los datos en varias " tablas ", cada una destinada a un tipo diferente de entidad. Cada tabla contendría un número fijo de columnas con los atributos de la entidad. Una o más columnas de cada tabla se designaban como clave primaria , lo que permitía identificar de forma única las filas de la tabla; las referencias cruzadas entre tablas siempre utilizaban estas claves primarias, en lugar de direcciones de disco, y las consultas unían las tablas basándose en estas relaciones clave, mediante un conjunto de operaciones basadas en el sistema matemático del cálculo relacional (del que el modelo toma su nombre). La división de los datos en un conjunto de tablas normalizadas (o relaciones ) tenía como objetivo garantizar que cada "hecho" se almacenara solo una vez, simplificando así las operaciones de actualización. Las tablas virtuales, denominadas vistas, podían presentar los datos de diferentes maneras para distintos usuarios, pero las vistas no podían actualizarse directamente.

Codd utilizó términos matemáticos para definir el modelo: relaciones, tuplas y dominios, en lugar de tablas, filas y columnas. La terminología que ahora nos resulta familiar proviene de las primeras implementaciones. Posteriormente, Codd criticaría la tendencia de las implementaciones prácticas a alejarse de los fundamentos matemáticos en los que se basaba el modelo.

En el modelo relacional , los registros se "vinculan" mediante claves virtuales que no se almacenan en la base de datos, sino que se definen según sea necesario entre los datos contenidos en los registros.

El uso de claves primarias (identificadores orientados al usuario) para representar relaciones entre tablas, en lugar de direcciones de disco, tuvo dos motivaciones principales. Desde una perspectiva de ingeniería, permitió reubicar y redimensionar tablas sin una costosa reorganización de la base de datos. Pero Codd estaba más interesado en la diferencia semántica: el uso de identificadores explícitos facilitó la definición de operaciones de actualización con definiciones matemáticas claras, y también permitió definir operaciones de consulta en términos de la disciplina establecida del cálculo de predicados de primer orden ; debido a que estas operaciones tienen propiedades matemáticas claras, es posible reescribir consultas de maneras demostrablemente correctas, lo cual es la base de la optimización de consultas. No hay pérdida de expresividad en comparación con los modelos jerárquicos o de red, aunque las conexiones entre tablas ya no son tan explícitas.

En los modelos jerárquicos y de red, los registros podían tener una estructura interna compleja. Por ejemplo, el historial salarial de un empleado podía representarse como un "grupo repetitivo" dentro de su registro. En el modelo relacional, el proceso de normalización provocó que dichas estructuras internas fueran reemplazadas por datos almacenados en múltiples tablas, conectadas únicamente por claves lógicas.

Por ejemplo, un uso común de un sistema de base de datos es el seguimiento de información sobre los usuarios: nombre, datos de inicio de sesión, direcciones y números de teléfono. En el enfoque de navegación, todos estos datos se almacenarían en un único registro de longitud variable. En el enfoque relacional, los datos se normalizarían en una tabla de usuarios, una tabla de direcciones y una tabla de números de teléfono (por ejemplo). Los registros se crearían en estas tablas opcionales solo si se proporcionaran la dirección o el número de teléfono.

Además de identificar filas/registros mediante identificadores lógicos en lugar de direcciones de disco, Codd transformó la forma en que las aplicaciones recopilaban datos de múltiples registros. En lugar de requerir que las aplicaciones obtuvieran datos registro por registro navegando por los enlaces, utilizaban un lenguaje de consulta declarativo que expresaba qué datos se necesitaban, en lugar de la ruta de acceso para encontrarlos. Encontrar una ruta de acceso eficiente a los datos pasó a ser responsabilidad del sistema de gestión de bases de datos, en lugar del programador de la aplicación. Este proceso, denominado optimización de consultas, dependía de que las consultas se expresaran en términos de lógica matemática.

El artículo de Codd inspiró a equipos de varias universidades a investigar el tema, incluyendo uno en la Universidad de California, Berkeley [ 12 ], liderado por Eugene Wong y Michael Stonebraker , quienes iniciaron INGRES utilizando fondos que ya se habían asignado para un proyecto de base de datos geográfica y programadores estudiantiles para producir código. A partir de 1973, INGRES entregó sus primeros productos de prueba, que en general estuvieron listos para su uso generalizado en 1979. INGRES era similar a System R en varios aspectos, incluyendo el uso de un "lenguaje" para el acceso a datos , conocido como QUEL . Con el tiempo, INGRES migró al estándar SQL emergente.

IBM realizó una implementación de prueba del modelo relacional, PRTV , y una implementación de producción, Business System 12 , ambas ya descontinuadas. Honeywell desarrolló MRDS para Multics , y ahora existen dos nuevas implementaciones: Alphora Dataphor y Rel. La mayoría de las demás implementaciones de sistemas de gestión de bases de datos que suelen denominarse relacionales son, en realidad, sistemas de gestión de bases de datos SQL.

En 1970, la Universidad de Michigan comenzó el desarrollo del Sistema de Gestión de Información MICRO [ 14 ] basado en el modelo de datos de teoría de conjuntos de DL Childs . [ 15 ] [ 16 ] [ 17 ] En 1974, la universidad organizó un debate entre Codd y Bachman que Bruce Lindsay de IBM describió más tarde como "¡lanzar rayos el uno al otro!". [ 12 ] MICRO fue utilizado para gestionar conjuntos de datos muy grandes por el Departamento de Trabajo de los Estados Unidos , la Agencia de Protección Ambiental de los Estados Unidos e investigadores de la Universidad de Alberta , la Universidad de Michigan y la Universidad Estatal de Wayne . Se ejecutaba en computadoras centrales de IBM utilizando el Sistema de Terminales de Michigan . [ 18 ] El sistema permaneció en producción hasta 1998.

Enfoque integrado

En las décadas de 1970 y 1980, se intentó desarrollar sistemas de bases de datos con hardware y software integrados. La filosofía subyacente era que dicha integración proporcionaría un mayor rendimiento a un menor coste. Algunos ejemplos fueron el IBM System/38 , la primera versión de Teradata y la máquina de bases de datos de Britton Lee, Inc.

Otro enfoque para el soporte de hardware en la gestión de bases de datos fue el acelerador CAFS de ICL , un controlador de disco con capacidades de búsqueda programables. A largo plazo, estos esfuerzos no tuvieron éxito, ya que las máquinas especializadas en bases de datos no pudieron seguir el ritmo del rápido desarrollo y progreso de las computadoras de propósito general. Por lo tanto, la mayoría de los sistemas de bases de datos actuales son sistemas de software que se ejecutan en hardware de propósito general y utilizan almacenamiento de datos informático de propósito general. Sin embargo, esta idea aún se persigue en ciertas aplicaciones por parte de algunas empresas como Netezza y Oracle ( Exadata ).

A finales de la década de 1970, los sistemas de gestión de bases de datos SQL

IBM formó un equipo liderado por Codd que comenzó a trabajar en un sistema prototipo, System R, a pesar de la oposición de otros en la empresa. [ 12 ] La primera versión estuvo lista en 1974/5, y luego se comenzó a trabajar en sistemas de múltiples tablas en los que los datos podían dividirse de manera que todos los datos de un registro (algunos de los cuales son opcionales) no tuvieran que almacenarse en un solo "bloque" grande. Las versiones posteriores multiusuario fueron probadas por clientes en 1978 y 1979, momento en el que se había agregado un lenguaje de consulta estandarizado : SQL [ 19 ] Las ideas de Codd se estaban estableciendo como viables y superiores a CODASYL, lo que impulsó a IBM a desarrollar una verdadera versión de producción de System R, conocida como SQL/DS , y, más tarde, Database 2 ( IBM Db2 ).

La base de datos Oracle de Larry Ellison (o simplemente Oracle ) partió de una cadena diferente, basada en los documentos de IBM sobre System R. Aunque las implementaciones de Oracle V1 se completaron en 1978, no fue hasta Oracle Versión 2 cuando Ellison se adelantó a IBM en el mercado en 1979. [ 20 ]

Stonebraker aplicó las lecciones aprendidas con INGRES para desarrollar una nueva base de datos, Postgres, ahora conocida como PostgreSQL . PostgreSQL se utiliza con frecuencia en aplicaciones globales de misión crítica (los registros de nombres de dominio .org y .info la utilizan como su principal almacén de datos , al igual que muchas grandes empresas e instituciones financieras).

En Suecia, el artículo de Codd también fue leído y Mimer SQL se desarrolló a mediados de la década de 1970 en la Universidad de Uppsala . En 1984, este proyecto se consolidó como una empresa independiente.

En 1976 surgió otro modelo de datos, el modelo entidad-relación , que ganó popularidad en el diseño de bases de datos por ofrecer una descripción más familiar que el modelo relacional anterior. Posteriormente, las estructuras entidad-relación se adaptaron como un modelo de datos para el modelo relacional, y la diferencia entre ambos se ha vuelto irrelevante.

Década de 1980, en el escritorio

Además de IBM y varias compañías de software como Sybase e Informix Corporation , la mayoría de los grandes proveedores de hardware informático en la década de 1980 contaban con sus propios sistemas de bases de datos, como VAX Rdb/VMS de DEC . [ 21 ] La década marcó el comienzo de la era de la informática de escritorio . Los nuevos ordenadores empoderaron a sus usuarios con hojas de cálculo como Lotus 1-2-3 y software de bases de datos como dBASE . El producto dBASE era ligero y fácil de entender para cualquier usuario de ordenador. C. Wayne Ratliff , el creador de dBASE, afirmó: «dBASE se diferenciaba de programas como BASIC, C, FORTRAN y COBOL en que gran parte del trabajo pesado ya estaba hecho. La manipulación de datos la realiza dBASE en lugar del usuario, por lo que este puede concentrarse en lo que está haciendo, en lugar de tener que lidiar con los detalles de abrir, leer y cerrar archivos, y gestionar la asignación de espacio». [ 22 ] dBASE fue uno de los títulos de software más vendidos en los años 80 y principios de los 90.

Década de 1990, orientada a objetos

A principios de la década, las bases de datos se habían convertido en una industria multimillonaria en aproximadamente diez años. [ 21 ] La década de 1990, junto con el auge de la programación orientada a objetos , vio un crecimiento en la forma en que se manejaban los datos en diversas bases de datos. Los programadores y diseñadores comenzaron a tratar los datos en sus bases de datos como objetos . Es decir, si los datos de una persona estaban en una base de datos, los atributos de esa persona, como su dirección, número de teléfono y edad, ahora se consideraban pertenecientes a esa persona en lugar de ser datos extraños. Esto permite que las relaciones entre los datos estén relacionadas con los objetos y sus atributos y no con campos individuales. [ 23 ] El término " desajuste de impedancia objeto-relacional " describía el inconveniente de traducir entre objetos programados y tablas de bases de datos. Las bases de datos de objetos y las bases de datos objeto-relacionales intentan resolver este problema proporcionando un lenguaje orientado a objetos (a veces como extensiones de SQL) que los programadores pueden usar como alternativa al SQL puramente relacional. En el ámbito de la programación, las bibliotecas conocidas como mapeos objeto-relacionales (ORM) intentan resolver el mismo problema.

Década de 2000, NoSQL y NewSQL

Las ventas de bases de datos crecieron rápidamente durante la burbuja de las puntocom y, tras su fin, con el auge del comercio electrónico . La popularidad de las bases de datos de código abierto como MySQL ha aumentado desde el año 2000, hasta el punto de que Ken Jacobs de Oracle afirmó en 2005 que quizás "estos tipos nos están haciendo lo que nosotros le hicimos a IBM". [ 21 ]

Las bases de datos XML son un tipo de base de datos estructurada orientada a documentos que permite realizar consultas basadas en atributos de documentos XML . Se utilizan principalmente en aplicaciones donde los datos se visualizan como una colección de documentos, con una estructura que puede variar desde muy flexible hasta muy rígida; algunos ejemplos son artículos científicos, patentes, declaraciones de impuestos y registros de personal.

Las bases de datos NoSQL suelen ser muy rápidas, [ 24 ] [ 25 ] no requieren esquemas de tabla fijos, evitan las operaciones de unión al almacenar datos desnormalizados y están diseñadas para escalar horizontalmente . Algunas bases de datos NoSQL, incluidas las bases de datos de grafos como Neo4j , representan los datos como nodos y aristas para modelar las relaciones entre entidades. [ 26 ]

En los últimos años, ha habido una gran demanda de bases de datos masivamente distribuidas con alta tolerancia a particiones, pero según el teorema CAP , es imposible que un sistema distribuido proporcione simultáneamente garantías de consistencia , disponibilidad y tolerancia a particiones. Un sistema distribuido puede satisfacer dos de estas garantías al mismo tiempo, pero no las tres. Por esta razón, muchas bases de datos NoSQL utilizan lo que se denomina consistencia eventual para proporcionar garantías de disponibilidad y tolerancia a particiones con un nivel reducido de consistencia de datos.

NewSQL es una clase de bases de datos relacionales modernas que pretende ofrecer el mismo rendimiento escalable que los sistemas NoSQL para cargas de trabajo de procesamiento de transacciones en línea (lectura y escritura), al tiempo que sigue utilizando SQL y manteniendo las garantías ACID de un sistema de base de datos tradicional.

Casos de uso

Las bases de datos se utilizan para respaldar las operaciones internas de las organizaciones y para sustentar las interacciones en línea con clientes y proveedores (véase Software empresarial ).

Las bases de datos se utilizan para almacenar información administrativa y datos más especializados, como datos de ingeniería o modelos económicos. Algunos ejemplos son los sistemas de bibliotecas informatizados , los sistemas de reserva de vuelos , los sistemas de inventario de piezas informatizados y muchos sistemas de gestión de contenidos que almacenan sitios web como colecciones de páginas web en una base de datos.

Términos de clasificación

Una forma de clasificar las bases de datos se basa en el tipo de contenido que contienen, por ejemplo: objetos bibliográficos , documentos de texto, estadísticos o multimedia. Otra forma es según su área de aplicación, por ejemplo: contabilidad, composiciones musicales, películas, banca, industria manufacturera o seguros. Una tercera forma es según algún aspecto técnico, como la estructura de la base de datos o el tipo de interfaz. Esta sección enumera algunos de los adjetivos que se utilizan para caracterizar los diferentes tipos de bases de datos.

  • Una base de datos en memoria es aquella que reside principalmente en la memoria principal , pero que normalmente cuenta con una copia de seguridad en un sistema de almacenamiento de datos no volátil. Las bases de datos en memoria principal son más rápidas que las bases de datos en disco, por lo que se utilizan con frecuencia en entornos donde el tiempo de respuesta es crítico, como en equipos de redes de telecomunicaciones.
  • Una base de datos activa incluye una arquitectura orientada a eventos que puede responder a condiciones tanto internas como externas. Entre sus posibles usos se incluyen la monitorización de la seguridad, las alertas, la recopilación de estadísticas y la autorización. Muchas bases de datos ofrecen funcionalidades de base de datos activa en forma de disparadores .
  • Una base de datos en la nube se basa en la tecnología de la nube . Tanto la base de datos como la mayor parte de su sistema de gestión de bases de datos (DBMS) residen de forma remota, "en la nube", mientras que sus aplicaciones son desarrolladas por programadores y posteriormente mantenidas y utilizadas por los usuarios finales a través de un navegador web y API abiertas .
  • Los almacenes de datos archivan información de bases de datos operativas y, a menudo, de fuentes externas, como empresas de investigación de mercado. El almacén se convierte en la fuente central de datos para gerentes y otros usuarios finales que no tienen acceso a los datos operativos. Por ejemplo, los datos de ventas se pueden agregar a totales semanales y convertir de códigos de producto internos a códigos UPC para compararlos con los datos de ACNielsen . Algunos componentes básicos y esenciales del almacenamiento de datos incluyen la extracción, el análisis y la minería de datos, así como la transformación, la carga y la gestión de datos para que estén disponibles para su uso posterior.
  • Una base de datos deductiva combina la programación lógica con una base de datos relacional.
  • Una base de datos distribuida es aquella en la que tanto los datos como el sistema de gestión de bases de datos (DBMS) se extienden a través de varios ordenadores.
  • Una base de datos orientada a documentos está diseñada para almacenar, recuperar y gestionar información semiestructurada o orientada a documentos. Las bases de datos orientadas a documentos son una de las principales categorías de bases de datos NoSQL.
  • Un sistema de base de datos embebido es un SGBD que está estrechamente integrado con un software de aplicación que requiere acceso a los datos almacenados de tal manera que el SGBD queda oculto para los usuarios finales de la aplicación y requiere poco o ningún mantenimiento continuo. [ 27 ]
  • Las bases de datos de usuario final contienen datos generados por usuarios individuales. Algunos ejemplos son colecciones de documentos, hojas de cálculo, presentaciones, archivos multimedia y otros archivos. Existen diversos productos para gestionar este tipo de bases de datos.
  • Un sistema de bases de datos federadas comprende varias bases de datos distintas, cada una con su propio sistema de gestión de bases de datos (DBMS). Un sistema de gestión de bases de datos federadas (FDBMS) lo gestiona como una única base de datos, integrando de forma transparente múltiples DBMS autónomos, posiblemente de diferentes tipos (en cuyo caso también sería un sistema de bases de datos heterogéneo ), y les proporciona una visión conceptual integrada.
  • En ocasiones, el término multidatabase se utiliza como sinónimo de base de datos federada, aunque puede referirse a un grupo de bases de datos menos integradas (por ejemplo, sin un sistema de gestión de bases de datos federadas ni un esquema integrado gestionado) que cooperan en una única aplicación. En este caso, normalmente se utiliza middleware para la distribución, que suele incluir un protocolo de confirmación atómica (ACP), como el protocolo de confirmación en dos fases , para permitir transacciones distribuidas (globales) entre las bases de datos participantes.
  • Una base de datos de grafos es un tipo de base de datos NoSQL que utiliza estructuras de grafos con nodos, aristas y propiedades para representar y almacenar información. Las bases de datos de grafos generales, que pueden almacenar cualquier grafo, se distinguen de las bases de datos de grafos especializadas, como los almacenes de triples y las bases de datos de red .
  • Un sistema de gestión de bases de datos de matrices (DBMS de matriz) es un tipo de DBMS NoSQL que permite modelar, almacenar y recuperar matrices multidimensionales (generalmente grandes), como imágenes satelitales y resultados de simulaciones climáticas.
  • En una base de datos hipertextual o hipermedia , cualquier palabra o fragmento de texto que represente un objeto (por ejemplo, otro texto, un artículo, una imagen o una película) puede vincularse mediante un hipervínculo a dicho objeto. Las bases de datos hipertextuales son especialmente útiles para organizar grandes cantidades de información diversa. Por ejemplo, son útiles para organizar enciclopedias en línea , donde los usuarios pueden navegar fácilmente por el texto. La World Wide Web es, por lo tanto, una gran base de datos hipertextual distribuida.
  • Una base de conocimiento (abreviada KB , kb o Δ [ 28 ] [ 29 ] ) es un tipo especial de base de datos para la gestión del conocimiento , que proporciona los medios para la recopilación, organización y recuperación informatizada del conocimiento . También es una colección de datos que representan problemas con sus soluciones y experiencias relacionadas.
  • Una base de datos móvil puede transportarse o sincronizarse desde un dispositivo informático móvil.
  • Las bases de datos operativas almacenan información detallada sobre las operaciones de una organización. Suelen procesar un volumen considerable de actualizaciones mediante transacciones . Algunos ejemplos son las bases de datos de clientes, que registran información de contacto, crédito y datos demográficos de los clientes de una empresa; las bases de datos de personal, que contienen información como el salario, las prestaciones y las habilidades de los empleados; los sistemas de planificación de recursos empresariales , que registran detalles sobre los componentes de los productos y el inventario de piezas; y las bases de datos financieras, que llevan un registro de las transacciones monetarias, contables y financieras de la organización.
  • Una base de datos paralela busca mejorar el rendimiento mediante la paralelización de tareas como la carga de datos, la creación de índices y la evaluación de consultas.
Las principales arquitecturas de sistemas de gestión de bases de datos (DBMS) paralelas que se derivan de la arquitectura de hardware subyacente son:
  • Arquitectura de memoria compartida , donde varios procesadores comparten el espacio de memoria principal, así como otros sistemas de almacenamiento de datos.
  • Arquitectura de disco compartido , donde cada unidad de procesamiento (que normalmente consta de varios procesadores) tiene su propia memoria principal, pero todas las unidades comparten el resto del almacenamiento.
  • Arquitectura sin memoria compartida , donde cada unidad de procesamiento tiene su propia memoria principal y otro tipo de almacenamiento.
  • Las bases de datos probabilísticas emplean lógica difusa para extraer inferencias a partir de datos imprecisos.
  • Las bases de datos en tiempo real procesan las transacciones con la suficiente rapidez como para que el resultado esté disponible y se pueda actuar en consecuencia de inmediato.
  • Una base de datos espacial puede almacenar datos con características multidimensionales. Las consultas sobre dichos datos incluyen consultas basadas en la ubicación, como "¿Dónde está el hotel más cercano en mi zona?".
  • Una base de datos temporal incorpora aspectos temporales, como un modelo de datos temporal y una versión temporal de SQL . Más concretamente, estos aspectos temporales suelen incluir el tiempo de validez y el tiempo de transacción.
  • Una base de datos orientada a la terminología se basa en una base de datos orientada a objetos , a menudo personalizada para un campo específico.
  • Una base de datos de datos no estructurados está diseñada para almacenar de forma gestionable y segura diversos objetos que no se adaptan de manera natural y conveniente a las bases de datos convencionales. Puede incluir correos electrónicos, documentos, diarios, objetos multimedia, etc. El nombre puede resultar engañoso, ya que algunos objetos pueden estar altamente estructurados. Sin embargo, la totalidad de los objetos posibles no se ajusta a un marco estructurado predefinido. La mayoría de los sistemas de gestión de bases de datos (DBMS) consolidados admiten datos no estructurados de diversas maneras, y están surgiendo nuevos DBMS especializados.

Sistema de gestión de bases de datos

Connolly y Begg definen el sistema de gestión de bases de datos (DBMS) como un "sistema de software que permite a los usuarios definir, crear, mantener y controlar el acceso a la base de datos". [ 30 ] Algunos ejemplos de DBMS son MySQL , MariaDB , PostgreSQL , Microsoft SQL Server , Oracle Database y Microsoft Access .

El acrónimo DBMS a veces se extiende para indicar el modelo de base de datos subyacente : RDBMS para el modelo relacional , OODBMS para el orientado a objetos y ORDBMS para el modelo objeto-relacional . Otras extensiones pueden indicar otras características, como DDBMS para sistemas de gestión de bases de datos distribuidas.

La funcionalidad que proporciona un SGBD puede variar enormemente. La funcionalidad principal es el almacenamiento, la recuperación y la actualización de datos. Codd propuso las siguientes funciones y servicios que debería proporcionar un SGBD de propósito general completo: [ 31 ]

  • Almacenamiento, recuperación y actualización de datos
  • Catálogo o diccionario de datos accesible al usuario que describe los metadatos.
  • Soporte para transacciones y concurrencia
  • Mecanismos para recuperar la base de datos en caso de que resulte dañada.
  • Soporte para la autorización de acceso y actualización de datos
  • Acceda al soporte desde ubicaciones remotas.
  • Aplicar restricciones para garantizar que los datos en la base de datos cumplan con ciertas reglas.

También es de esperar que el DBMS proporcione un conjunto de utilidades para los fines que sean necesarios para administrar la base de datos de manera efectiva, incluidas utilidades de importación, exportación, monitoreo, desfragmentación y análisis. [ 32 ] La parte central del DBMS que interactúa entre la base de datos y la interfaz de la aplicación a veces se denomina motor de base de datos .

Con frecuencia, los sistemas de gestión de bases de datos (DBMS) cuentan con parámetros de configuración que pueden ajustarse de forma estática y dinámica; por ejemplo, la cantidad máxima de memoria principal que la base de datos puede utilizar en un servidor. La tendencia es minimizar la configuración manual, y en casos como las bases de datos integradas, la necesidad de lograr una administración cero es fundamental.

Los grandes sistemas de gestión de bases de datos empresariales (DBMS) han tendido a aumentar en tamaño y funcionalidad, y han requerido miles de años de esfuerzo humano de desarrollo a lo largo de su vida útil. [ a ]

Los primeros sistemas de gestión de bases de datos multiusuario generalmente solo permitían que la aplicación residiera en el mismo ordenador, con acceso a través de terminales o software de emulación de terminales. La arquitectura cliente-servidor fue un desarrollo en el que la aplicación residía en el ordenador del cliente y la base de datos en un servidor, lo que permitía distribuir el procesamiento. Esto evolucionó hacia una arquitectura de múltiples niveles que incorporaba servidores de aplicaciones y servidores web , con la interfaz de usuario final a través de un navegador web y la base de datos conectada directamente solo al nivel adyacente. [ 34 ]

Un sistema de gestión de bases de datos (DBMS) de propósito general proporciona interfaces de programación de aplicaciones (API) públicas y, opcionalmente, un procesador para lenguajes de bases de datos como SQL , lo que permite desarrollar aplicaciones para interactuar con la base de datos y manipularla. Un DBMS de propósito específico puede utilizar una API privada y estar personalizado y vinculado a una única aplicación. Por ejemplo, un sistema de correo electrónico realiza muchas de las funciones de un DBMS de propósito general, como la inserción y eliminación de mensajes, el manejo de archivos adjuntos, la búsqueda en listas de bloqueo, la asociación de mensajes a direcciones de correo electrónico, etc.; sin embargo, estas funciones se limitan a lo necesario para gestionar el correo electrónico.

Solicitud

La interacción externa con la base de datos se realizará mediante un programa de aplicación que interactúa con el SGBD. [ 35 ] Esto puede abarcar desde una herramienta de base de datos que permite a los usuarios ejecutar consultas SQL de forma textual o gráfica, hasta un sitio web que utiliza una base de datos para almacenar y buscar información.

Interfaz de programación de aplicaciones

Un programador codificará las interacciones con la base de datos (a veces denominada fuente de datos ) mediante una interfaz de programación de aplicaciones (API) o un lenguaje de base de datos . La API o el lenguaje elegido deberá ser compatible con el sistema de gestión de bases de datos (DBMS), posiblemente de forma indirecta mediante un preprocesador o una API puente. Algunas API buscan ser independientes de la base de datos; ODBC es un ejemplo conocido. Otras API comunes incluyen JDBC y ADO.NET .

lenguajes de bases de datos

Los lenguajes de bases de datos son lenguajes de propósito especial que permiten realizar una o más de las siguientes tareas, a veces denominadas sublenguajes :

Los lenguajes de bases de datos son específicos de un modelo de datos particular. Algunos ejemplos notables son:

  • SQL combina las funciones de definición, manipulación y consulta de datos en un único lenguaje. Fue uno de los primeros lenguajes comerciales para el modelo relacional, aunque se diferencia en algunos aspectos del modelo relacional descrito por Codd (por ejemplo, las filas y columnas de una tabla pueden ordenarse). SQL se convirtió en 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, los estándares se han mejorado periódicamente y son compatibles (con distintos grados de conformidad) con todos los sistemas de gestión de bases de datos relacionales comerciales más utilizados. [ 36 ] [ 37 ]
  • OQL es un estándar de lenguaje de modelado de objetos (del Object Data Management Group ). Ha influido en el diseño de algunos de los lenguajes de consulta más recientes, como JDOQL y EJB QL .
  • XQuery es un lenguaje de consulta XML estándar implementado por sistemas de bases de datos XML como MarkLogic y eXist , por bases de datos relacionales con capacidad XML como Oracle y Db2, y también por procesadores XML en memoria como Saxon .
  • SQL/XML combina XQuery con SQL. [ 38 ]

Un lenguaje de base de datos también puede incorporar características como:

  • Configuración específica del DBMS y gestión del motor de almacenamiento
  • Cálculos para modificar los resultados de las consultas, como contar, sumar, promediar, ordenar, agrupar y realizar referencias cruzadas.
  • Aplicación de restricciones (por ejemplo, en una base de datos automotriz, permitir solo un tipo de motor por automóvil).
  • Versión de interfaz de programación de aplicaciones del lenguaje de consulta, para mayor comodidad del programador.

Almacenamiento

El almacenamiento de la base de datos es el contenedor de la materialización física de una base de datos. Comprende el nivel interno (físico) en la arquitectura de la base de datos. También contiene toda la información necesaria (por ejemplo, metadatos , "datos sobre los datos" y estructuras de datos internas ) para reconstruir el nivel conceptual y el nivel externo a partir del nivel interno cuando sea necesario. Las bases de datos, como objetos digitales, contienen tres capas de información que deben almacenarse: los datos, la estructura y la semántica. El almacenamiento adecuado de las tres capas es necesario para la preservación futura y la longevidad de la base de datos. [ 39 ] El almacenamiento permanente de datos es generalmente responsabilidad del motor de la base de datos, también conocido como "motor de almacenamiento". Aunque normalmente se accede a él mediante un SGBD a través del sistema operativo subyacente (y a menudo utilizando los sistemas de archivos del sistema operativo como intermedios para la disposición del almacenamiento), las propiedades de almacenamiento y la configuración son extremadamente importantes para el funcionamiento eficiente del SGBD y, por lo tanto, los administradores de bases de datos las mantienen de cerca. Un SGBD, mientras está en funcionamiento, siempre tiene su base de datos residiendo en varios tipos de almacenamiento (por ejemplo, memoria y almacenamiento externo). Los datos de la base de datos y la información adicional necesaria, posiblemente en grandes cantidades, se codifican en bits. Los datos suelen residir en el almacenamiento en estructuras que se ven completamente diferentes a como se ven los datos a nivel conceptual y externo, pero de manera que se intente optimizar (en la medida de lo posible) la reconstrucción de estos niveles cuando los usuarios y los programas la necesiten, así como para calcular otros tipos de información necesaria a partir de los datos (por ejemplo, al consultar la base de datos).

Algunos sistemas de gestión de bases de datos (DBMS) permiten especificar la codificación de caracteres utilizada para almacenar los datos, de modo que se pueden usar varias codificaciones en la misma base de datos.

El motor de almacenamiento utiliza diversas estructuras de almacenamiento de base de datos de bajo nivel para serializar el modelo de datos y poder escribirlo en el medio de almacenamiento elegido. Se pueden utilizar técnicas como la indexación para mejorar el rendimiento. El almacenamiento convencional está orientado a filas, pero también existen bases de datos orientadas a columnas y de correlación .

Vistas materializadas

A menudo se emplea la redundancia de almacenamiento para mejorar el rendimiento. Un ejemplo común es el almacenamiento de vistas materializadas , que consisten en vistas externas o resultados de consultas que se necesitan con frecuencia. Almacenar estas vistas evita el costoso cálculo que supone su procesamiento cada vez que se requieren. Las desventajas de las vistas materializadas son la sobrecarga que se genera al actualizarlas para mantenerlas sincronizadas con los datos originales actualizados de la base de datos, y el coste de la redundancia de almacenamiento.

Replicación

En ocasiones, una base de datos utiliza redundancia de almacenamiento mediante la replicación de objetos (con una o más copias) para aumentar la disponibilidad de los datos (tanto para mejorar el rendimiento de los accesos simultáneos de múltiples usuarios al mismo objeto como para proporcionar resiliencia en caso de fallo parcial de una base de datos distribuida). Las actualizaciones de un objeto replicado deben sincronizarse entre las copias del objeto. En muchos casos, se replica la base de datos completa.

Virtualización

Con la virtualización de datos , los datos utilizados permanecen en sus ubicaciones originales y se establece un acceso en tiempo real para permitir análisis en múltiples fuentes. Esto puede ayudar a resolver algunas dificultades técnicas, como problemas de compatibilidad al combinar datos de diversas plataformas, reducir el riesgo de errores causados ​​por datos defectuosos y garantizar el uso de los datos más recientes. Además, evitar la creación de una nueva base de datos con información personal facilita el cumplimiento de las normativas de privacidad. Sin embargo, con la virtualización de datos, la conexión a todas las fuentes de datos necesarias debe estar operativa, ya que no existe una copia local de los datos, lo cual es uno de los principales inconvenientes de este enfoque. [ 40 ]

Seguridad

La seguridad de las bases de datos abarca todos los aspectos relacionados con la protección del contenido, los propietarios y los usuarios de la base de datos. Esto incluye desde la protección contra el uso intencional y no autorizado de la base de datos hasta el acceso no intencionado por parte de entidades no autorizadas (por ejemplo, una persona o un programa informático).

El control de acceso a bases de datos se encarga de controlar quién (una persona o un programa informático) tiene permiso para acceder a qué información de la base de datos. Esta información puede comprender objetos específicos de la base de datos (por ejemplo, tipos de registros, registros específicos, estructuras de datos), cálculos específicos sobre dichos objetos (por ejemplo, tipos de consultas o consultas específicas) o el uso de rutas de acceso específicas (por ejemplo, el uso de índices específicos u otras estructuras de datos para acceder a la información). Los controles de acceso a bases de datos son establecidos por personal autorizado (por el propietario de la base de datos) que utiliza interfaces de seguridad protegidas del sistema de gestión de bases de datos (DBMS).

Esto puede gestionarse directamente de forma individual, mediante la asignación de individuos y privilegios a grupos, o (en los modelos más complejos) mediante la asignación de individuos y grupos a roles que, a su vez, otorgan derechos. La seguridad de los datos impide que usuarios no autorizados vean o actualicen la base de datos. Mediante contraseñas, los usuarios tienen acceso a la base de datos completa o a subconjuntos de la misma, denominados "subesquemas". Por ejemplo, una base de datos de empleados puede contener toda la información sobre un empleado en particular, pero un grupo de usuarios puede estar autorizado a ver solo los datos de nómina, mientras que otros tienen acceso únicamente al historial laboral y a los datos médicos. Si el sistema de gestión de bases de datos (DBMS) permite introducir y actualizar la base de datos de forma interactiva, así como consultarla, esta capacidad posibilita la gestión de bases de datos personales.

La seguridad de los datos en general se ocupa de proteger fragmentos específicos de datos, tanto físicamente (es decir, contra la corrupción, la destrucción o la eliminación; por ejemplo, véase seguridad física ), como en lo que respecta a su interpretación o a partes de ellos para obtener información significativa (por ejemplo, analizando las cadenas de bits que los componen y deduciendo números de tarjetas de crédito válidos; por ejemplo, véase cifrado de datos ).

Los registros de cambios y accesos registran quién accedió a qué atributos, qué se modificó y cuándo se modificó. Los servicios de registro permiten realizar auditorías forenses de la base de datos posteriormente, al mantener un registro de los accesos y cambios. En ocasiones, se utiliza código a nivel de aplicación para registrar los cambios en lugar de dejarlos en la base de datos. Se puede configurar la monitorización para intentar detectar brechas de seguridad. Por lo tanto, las organizaciones deben tomar en serio la seguridad de la base de datos debido a los numerosos beneficios que proporciona. Las organizaciones estarán protegidas contra brechas de seguridad y actividades de piratería informática como intrusiones en el firewall, propagación de virus y ransomware. Esto ayuda a proteger la información esencial de la empresa, que no puede compartirse con terceros bajo ninguna circunstancia. [ 41 ]

Transacciones y concurrencia

Las transacciones de base de datos pueden utilizarse para introducir cierto nivel de tolerancia a fallos e integridad de los datos tras la recuperación de un fallo . Una transacción de base de datos es una unidad de trabajo que, por lo general, encapsula varias operaciones sobre una base de datos (por ejemplo, leer un objeto de la base de datos, escribir, adquirir o liberar un bloqueo , etc.). Esta abstracción es compatible tanto con bases de datos como con otros sistemas. Cada transacción tiene límites bien definidos en cuanto a las ejecuciones de programas o código que incluye (determinados por el programador de la transacción mediante comandos específicos).

El acrónimo ACID describe algunas propiedades ideales de una transacción de base de datos: atomicidad , consistencia , aislamiento y durabilidad .

Migración

Una base de datos creada con un sistema de gestión de bases de datos (DBMS) no es portable a otro (es decir, el otro DBMS no puede ejecutarla). Sin embargo, en algunas situaciones, es conveniente migrar una base de datos de un DBMS a otro. Las razones son principalmente económicas (los distintos DBMS pueden tener diferentes costos totales de propiedad o TCO), funcionales y operativas (los distintos DBMS pueden tener diferentes capacidades). La migración implica la transformación de la base de datos de un tipo de DBMS a otro. La transformación debe mantener intacta (si es posible) la aplicación relacionada con la base de datos (es decir, todos los programas de aplicación relacionados). Por lo tanto, los niveles conceptual y arquitectónico externo de la base de datos deben mantenerse durante la transformación. También puede ser conveniente mantener algunos aspectos del nivel arquitectónico interno. Una migración de base de datos compleja o de gran tamaño puede ser un proyecto complicado y costoso (una sola vez), lo cual debe tenerse en cuenta al tomar la decisión de migrar. Esto a pesar de que pueden existir herramientas para facilitar la migración entre DBMS específicos. Normalmente, un proveedor de DBMS proporciona herramientas para ayudar a importar bases de datos desde otros DBMS populares.

Construcción, mantenimiento y ajuste

Tras diseñar una base de datos para una aplicación, el siguiente paso es su construcción. Generalmente, se selecciona un sistema de gestión de bases de datos (DBMS) de propósito general adecuado. Un DBMS proporciona las interfaces de usuario necesarias para que los administradores de bases de datos definan las estructuras de datos de la aplicación dentro del modelo de datos del DBMS. Otras interfaces de usuario se utilizan para seleccionar los parámetros necesarios del DBMS (como los relacionados con la seguridad, la asignación de almacenamiento, etc.).

Cuando la base de datos está lista (con todas sus estructuras de datos y demás componentes necesarios definidos), normalmente se rellena con los datos iniciales de la aplicación (inicialización de la base de datos, que suele ser un proyecto independiente; en muchos casos se utilizan interfaces de sistemas de gestión de bases de datos especializadas que admiten la inserción masiva) antes de ponerla en funcionamiento. En algunos casos, la base de datos entra en funcionamiento sin datos de la aplicación, y los datos se acumulan durante su funcionamiento.

Una vez creada, inicializada y poblada la base de datos, es necesario mantenerla. Es posible que sea preciso modificar diversos parámetros y optimizarla para mejorar su rendimiento; también se pueden modificar o añadir estructuras de datos a la aplicación, escribir nuevos programas relacionados para ampliar su funcionalidad, etc.

Copia de seguridad y restauración

En ocasiones, se desea restaurar una base de datos a un estado anterior (por diversas razones, como cuando se detecta que está dañada debido a un error de software o si se ha actualizado con datos erróneos). Para ello, se realiza una copia de seguridad, ya sea de forma ocasional o continua, en la que cada estado deseado de la base de datos (es decir, los valores de sus datos y su integración en las estructuras de datos de la base de datos) se guarda en archivos de copia de seguridad específicos (existen muchas técnicas para hacerlo de forma eficaz). Cuando un administrador de bases de datos decide restaurar la base de datos a dicho estado (por ejemplo, especificando un momento determinado en el que la base de datos se encontraba en ese estado), estos archivos se utilizan para restaurarlo.

Análisis estático

Las técnicas de análisis estático para la verificación de software también pueden aplicarse en el ámbito de los lenguajes de consulta. En particular, el marco de interpretación abstracta se ha extendido al campo de los lenguajes de consulta para bases de datos relacionales como una forma de respaldar técnicas de aproximación sólidas. [ 42 ] La semántica de los lenguajes de consulta puede ajustarse según abstracciones adecuadas del dominio de datos concreto. La abstracción de los sistemas de bases de datos relacionales tiene muchas aplicaciones interesantes, en particular, para fines de seguridad, como el control de acceso granular, la marca de agua, etc.

Características diversas

Otras características del sistema de gestión de bases de datos (DBMS) podrían incluir:

  • Registros de la base de datos : esto ayuda a mantener un historial de las funciones ejecutadas.
  • Componente gráfico para la creación de gráficos y diagramas, especialmente en un sistema de almacenamiento de datos.
  • Optimizador de consultas : optimiza cada consulta para elegir un plan de consulta eficiente (un orden parcial (árbol) de operaciones) que se ejecutará para calcular el resultado de la consulta. Puede ser específico de un motor de almacenamiento en particular.
  • Herramientas o herramientas para el diseño de bases de datos, programación de aplicaciones, mantenimiento de programas de aplicación, análisis y monitorización del rendimiento de la base de datos, monitorización de la configuración de la base de datos, configuración del hardware del sistema de gestión de bases de datos (un sistema de gestión de bases de datos y la base de datos relacionada pueden abarcar ordenadores, redes y unidades de almacenamiento) y asignación de bases de datos relacionada (especialmente para un sistema de gestión de bases de datos distribuido), asignación de almacenamiento y monitorización del diseño de la base de datos, migración de almacenamiento, etc.

Cada vez son más frecuentes las demandas de un sistema único que incorpore todas estas funcionalidades básicas en un mismo marco de compilación, prueba y despliegue para la gestión de bases de datos y el control de versiones. Inspirándose en otros desarrollos de la industria del software, algunos comercializan estas soluciones como " DevOps para bases de datos". [ 43 ]

Diseño y modelado

La primera tarea de un diseñador de bases de datos es crear un modelo de datos conceptual que refleje la estructura de la información que se almacenará en la base de datos. Un enfoque común para esto es desarrollar un modelo entidad-relación , a menudo con la ayuda de herramientas de dibujo. Otro enfoque popular es el Lenguaje Unificado de Modelado (UML ). Un modelo de datos exitoso reflejará con precisión el estado posible del mundo externo que se está modelando: por ejemplo, si las personas pueden tener más de un número de teléfono, permitirá capturar esta información. Diseñar un buen modelo de datos conceptual requiere una buena comprensión del dominio de la aplicación; generalmente implica plantear preguntas profundas sobre los aspectos de interés para una organización, como "¿puede un cliente ser también un proveedor?", o "si un producto se vende con dos formas diferentes de empaque, ¿son el mismo producto o productos diferentes?", o "si un avión vuela de Nueva York a Dubái vía Frankfurt, ¿es un vuelo o dos (o incluso tres)?". Las respuestas a estas preguntas establecen definiciones de la terminología utilizada para las entidades (clientes, productos, vuelos, segmentos de vuelo) y sus relaciones y atributos.

La creación del modelo de datos conceptual a veces requiere información de los procesos de negocio o del análisis del flujo de trabajo de la organización. Esto puede ayudar a determinar qué información se necesita en la base de datos y cuál se puede omitir. Por ejemplo, puede ser útil para decidir si la base de datos debe almacenar datos históricos además de los datos actuales.

Una vez creado un modelo de datos conceptual que satisfaga a los usuarios, la siguiente etapa consiste en traducirlo a un esquema que implemente las estructuras de datos relevantes dentro de la base de datos. Este proceso se conoce como diseño lógico de la base de datos, y el resultado es un modelo de datos lógico expresado en forma de esquema. Mientras que el modelo de datos conceptual es (al menos en teoría) independiente de la tecnología de base de datos elegida, el modelo de datos lógico se expresará en términos de un modelo de base de datos específico compatible con el sistema de gestión de bases de datos (DBMS) seleccionado. (Los términos « modelo de datos» y «modelo de base de datos» se suelen usar indistintamente, pero en este artículo utilizamos «modelo de datos» para referirnos al diseño de una base de datos específica y «modelo de base de datos » para la notación de modelado utilizada para expresar dicho diseño).

El modelo de base de datos más popular para bases de datos de propósito general es el modelo relacional, o más precisamente, el modelo relacional representado por el lenguaje SQL. El proceso de creación de un diseño lógico de base de datos utilizando este modelo emplea un enfoque metódico conocido como normalización . El objetivo de la normalización es garantizar que cada "hecho" elemental se registre en un único lugar, de modo que las inserciones, actualizaciones y eliminaciones mantengan automáticamente la coherencia.

La etapa final del diseño de bases de datos consiste en tomar decisiones que afectan al rendimiento, la escalabilidad, la recuperación, la seguridad y otros aspectos similares, que dependen del sistema de gestión de bases de datos (DBMS) específico. Esto se conoce como diseño físico de la base de datos , y el resultado es el modelo de datos físico . Un objetivo clave durante esta etapa es la independencia de datos , lo que significa que las decisiones tomadas para optimizar el rendimiento deben ser transparentes para los usuarios finales y las aplicaciones. Existen dos tipos de independencia de datos: independencia física e independencia lógica. El diseño físico se basa principalmente en los requisitos de rendimiento y requiere un buen conocimiento de la carga de trabajo y los patrones de acceso previstos, así como una comprensión profunda de las funcionalidades que ofrece el DBMS elegido.

Otro aspecto del diseño físico de bases de datos es la seguridad. Esta implica tanto definir el control de acceso a los objetos de la base de datos como definir los niveles y métodos de seguridad para los datos en sí.

Modelos

Collage de cinco tipos de modelos de bases de datos

Un modelo de base de datos es un tipo de modelo de datos que determina la estructura lógica de una base de datos y, fundamentalmente, define cómo se pueden almacenar, organizar y manipular los datos . El ejemplo más común de modelo de base de datos es el modelo relacional (o su equivalente en SQL), que utiliza un formato basado en tablas.

Los modelos de datos lógicos comunes para bases de datos incluyen:

Una base de datos objeto-relacional combina las dos estructuras relacionadas.

Los modelos de datos físicos incluyen:

Otros modelos incluyen:

Los modelos especializados están optimizados para tipos de datos específicos:

Perspectivas externas, conceptuales e internas

Visión tradicional de los datos [ 44 ]

Un sistema de gestión de bases de datos proporciona tres vistas de los datos de la base de datos:

  • El nivel externo define cómo cada grupo de usuarios finales percibe la organización de los datos en la base de datos. Una misma base de datos puede tener cualquier número de vistas en el nivel externo.
  • El nivel conceptual (o nivel lógico ) unifica las distintas perspectivas externas en una visión global compatible. [ 45 ] Proporciona la síntesis de todas las perspectivas externas. Está fuera del alcance de los distintos usuarios finales de la base de datos y, en cambio, interesa más a los desarrolladores de aplicaciones de bases de datos y a los administradores de bases de datos.
  • El nivel interno (o nivel físico ) se refiere a la organización interna de los datos dentro de un sistema de gestión de bases de datos (DBMS). Se ocupa del costo, el rendimiento, la escalabilidad y otros aspectos operativos. Gestiona la disposición del almacenamiento de los datos, utilizando estructuras de almacenamiento como los índices para optimizar el rendimiento. En ocasiones, almacena datos de vistas individuales ( vistas materializadas ), calculadas a partir de datos genéricos, si existe una justificación de rendimiento para dicha redundancia. Equilibra los requisitos de rendimiento de todas las vistas externas, que pueden ser contradictorios, en un intento por optimizar el rendimiento general en todas las actividades.

Si bien normalmente solo existe una perspectiva conceptual e interna de los datos, puede haber diversas perspectivas externas. Esto permite a los usuarios visualizar la información de la base de datos desde un punto de vista más empresarial, en lugar de una perspectiva técnica y de procesamiento. Por ejemplo, el departamento financiero de una empresa necesita los detalles de pago de todos los empleados como parte de los gastos de la empresa, pero no necesita los detalles sobre los empleados que son de interés para el departamento de recursos humanos . Por lo tanto, los distintos departamentos necesitan diferentes perspectivas de la base de datos de la empresa.

La arquitectura de base de datos de tres niveles se relaciona con el concepto de independencia de datos , que fue uno de los principales impulsores iniciales del modelo relacional. [ 45 ] La idea es que los cambios realizados en un nivel determinado no afecten la vista en un nivel superior. Por ejemplo, los cambios en el nivel interno no afectan a los programas de aplicación escritos utilizando interfaces de nivel conceptual, lo que reduce el impacto de realizar cambios físicos para mejorar el rendimiento.

La vista conceptual proporciona un nivel de indirección entre lo interno y lo externo. Por un lado, ofrece una visión común de la base de datos, independiente de las distintas estructuras de vista externas, y por otro, abstrae los detalles de cómo se almacenan o gestionan los datos (nivel interno). En principio, cada nivel, e incluso cada vista externa, puede representarse mediante un modelo de datos diferente. En la práctica, un sistema de gestión de bases de datos (DBMS) suele utilizar el mismo modelo de datos tanto para el nivel externo como para el conceptual (por ejemplo, el modelo relacional). El nivel interno, que está oculto dentro del DBMS y depende de su implementación, requiere un nivel de detalle diferente y utiliza sus propios tipos de estructuras de datos.

Investigación

La tecnología de bases de datos ha sido un tema de investigación activo desde la década de 1960, tanto en el ámbito académico como en los grupos de investigación y desarrollo de empresas (por ejemplo, IBM Research ). La actividad investigadora abarca la teoría y el desarrollo de prototipos . Entre los temas de investigación más destacados se incluyen los modelos , el concepto de transacción atómica, las técnicas de control de concurrencia relacionadas , los lenguajes de consulta y los métodos de optimización de consultas , RAID , entre otros.

El área de investigación de bases de datos cuenta con varias revistas académicas especializadas (por ejemplo, ACM Transactions on Database Systems -TODS, Data and Knowledge Engineering -DKE) y conferencias anuales (por ejemplo, ACM SIGMOD , ACM PODS , VLDB, IEEE ICDE).

Véase también

Notas

  1. Este artículo cita un tiempo de desarrollo de cinco años que involucró a 750 personas solo para la versión 9 de DB2. [ 33 ]

Referencias

  1. Ullman y Widom 1997 , pág. 1.
  2. "Actualizar definición y significado" . Merriam-Webster . Archivado del original el 25 de febrero de 2024.
  3. "Definición y significado de recuperación" . Merriam-Webster . Archivado del original el 27 de junio de 2023.
  4. "Definición y significado de administración" . Merriam-Webster . Archivado del original el 6 de diciembre de 2023.
  5. Tsitchizris y Lochovsky 1982 .
  6. Beynon-Davies 2003 .
  7. Nelson y Nelson 2001 .
  8. Bachman 1973 .
  9. "Índice de la base de datos TOPDB Top" . pypl.github.io .
  10. "base de datos, n" . OED Online . Oxford University Press. Junio ​​de 2013. Consultado el 12 de julio de 2013 .(Se requiere suscripción.)
  11. IBM Corporation (octubre de 2013). "IBM Information Management System (IMS) 13 Transaction and Database Servers ofrece alto rendimiento y bajo costo total de propiedad" . Consultado el 20 de febrero de 2014 .
  12. 1 2 3 4 "RDBMS Plenaria 1: Primeros años" (PDF) (Entrevista). Entrevista realizada por Burton Grad. Computer History Museum. 12 de junio de 2007. Recuperado el 30 de mayo de 2025 .
  13. Codd 1970 .
  14. Hershey y Easthope 1972 .
  15. Norte 2010 .
  16. Childs 1968a .
  17. Childs 1968b .
  18. MA Kahn; DL Rumelhart; BL Bronson (octubre de 1977). Manual de referencia del sistema de gestión de información MICRO (versión 5.0) . Instituto de Relaciones Laborales e Industriales (ILIR), Universidad de Michigan y Universidad Estatal de Wayne.
  19. "¿Qué es el lenguaje de consulta estructurado (SQL)?" . IBM . Consultado el 18 de marzo de 2026 . En la década de 1970, los científicos de IBM Donald Chamberlin y Raymond Boyce desarrollaron e introdujeron SQL. Se originó a partir del concepto de modelos relacionales y se denominó inicialmente lenguaje de consulta estructurado en inglés (SEQUEL) antes de abreviarse a SQL.
  20. "Cronología del 30.º aniversario de Oracle" (PDF) . Archivado (PDF) del original el 20 de marzo de 2011. Consultado el 23 de agosto de 2017 .
  21. 1 2 3 "Sesión plenaria de RDBMS: Los últimos años" (PDF) (Entrevista). Entrevista realizada por Burton Grad. Computer History Museum. 12 de junio de 2007. Consultado el 30 de mayo de 2025 .
  22. Entrevista con Wayne Ratliff . La historia de FoxPro. Consultado el 12 de julio de 2013.
  23. Desarrollo de un sistema de gestión de bases de datos orientado a objetos; Portland, Oregón, Estados Unidos; Páginas: 472–482; 1986; ISBN 0-89791-204-7
  24. Jordan, Meghan. "Latencia NoSQL" . ScyllaDB . Consultado el 9 de junio de 2025 .
  25. "SQL vs. NoSQL: Comparación completa de características, diferencias y más" . www.testgorilla.com . Consultado el 9 de junio de 2025 .
  26. "Tipos de bases de datos NoSQL explicados: Graph | TechTarget" . Search Data Management . Consultado el 1 de julio de 2026 .
  27. Graves, Steve. "Bases de datos COTS para sistemas embebidos". Archivado el 14 de noviembre de 2007 en Wayback Machine , revista Embedded Computing Design , enero de 2007. Consultado el 13 de agosto de 2008.
  28. Argumentación en Inteligencia Artificial por Iyad Rahwan, Guillermo R. Simari
  29. "OWL DL Semántica" . Consultado el 10 de diciembre de 2010 .
  30. Connolly y Begg 2014 , pág. 64.
  31. Connolly y Begg 2014 , págs. 97–102.
  32. Connolly y Begg 2014 , pág. 102.
  33. Chong et al. 2007 .
  34. Connolly y Begg 2014 , págs. 106–113.
  35. Connolly y Begg 2014 , pág. 65.
  36. Chapple 2005 .
  37. "Lenguaje de consulta estructurado (SQL)" . International Business Machines. 27 de octubre de 2006. Consultado el 10 de junio de 2007 .
  38. Wagner 2010 .
  39. ^ Ramalho, JC; Faria, L.; Helder, S.; Coutada, M. (31 de diciembre de 2013). "Kit de herramientas de preservación de bases de datos: una herramienta flexible para normalizar y dar acceso a bases de datos" . Biblioteca Nacional de Portugal . Universidad de Miño.
  40. ^ Paiho, Satu; Tuominen, Pekka; Rökman, Jyri; Ylikerälä, Markus; Pajula, Juha; Siikavirta, Hanne (2022). "Oportunidades de los datos urbanos recopilados para ciudades inteligentes" . Ciudades inteligentes IET . 4 (4): 275– 291. doi : 10.1049/smc2.12044 . ISSN 2631-7680 . S2CID 253467923 .  
  41. David Y. Chan; Victoria Chiu; Miklos A. Vasarhelyi (2018). Auditoría continua : teoría y aplicación (1.ª ed.). Bingley, Reino Unido: Emerald Publishing. ISBN   978-1-78743-413-4OCLC 1029759767 
  42. Halder y Cortesi 2011 .
  43. Ben Linders (28 de enero de 2016). "Cómo encaja la administración de bases de datos en DevOps" . Recuperado el 15 de abril de 2017 .
  44. itl.nist.gov (1993) Definición de integración para el modelado de información (IDEFIX) Archivado el 3 de diciembre de 2013 en Wayback Machine . 21 de diciembre de 1993.
  45. 1 2 Fecha 2003 , págs. 31–32.

Fuentes

  • Bachman, Charles W. (1973). "El programador como navegador" . Communications of the ACM . 16 (11): 653– 658. doi : 10.1145/355611.362534 .
  • Beynon-Davies, Paul (2003). Sistemas de bases de datos (3.ª  ed.). Palgrave Macmillan. ISBN 978-1403916013.
  • Chapple, Mike (2005). "Fundamentos de SQL" . Bases de datos . About.com. Archivado del original el 22 de febrero de 2009. Consultado el 28 de enero de 2009 .
  • Childs, David L. (1968a). Descripción de una estructura de datos basada en la teoría de conjuntos (PDF) (Informe técnico). Proyecto CONCOMP (Investigación en el uso conversacional de computadoras). Universidad de Michigan. Informe técnico 3.
  • Childs, David L. (1968b). Viabilidad de una estructura de datos basada en la teoría de conjuntos: una estructura general basada en una definición reconstituida (PDF) (Informe técnico). Proyecto CONCOMP (Investigación en el uso conversacional de las computadoras). Universidad de Michigan. Informe técnico 6.
  • Chong, Raul F.; Wang, Xiaomei; Dang, Michael; Snow, Dwaine R. (2007). «Introducción a DB2» . Comprensión de DB2: Aprendizaje visual con ejemplos (2.ª  ed.). IBM Press Pearson plc. ISBN 978-0131580183. Consultado el 17 de marzo de 2013 .
  • Codd, Edgar F. (1970). "Un modelo relacional de datos para grandes bancos de datos compartidos" (PDF) . Communications of the ACM . 13 (6): 377– 387. doi : 10.1145/362384.362685 . S2CID 207549016 . 
  • Connolly, Thomas M.; Begg, Carolyn E. (2014). Sistemas de bases de datos: un enfoque práctico para el diseño, la implementación y la gestión (6.ª  ed.). Pearson. ISBN 978-1292061184.
  • Date, CJ (2003). Introducción a los sistemas de bases de datos (8.ª  ed.). Pearson. ISBN 978-0321197849.
  • Halder, Raju; Cortesi, Agostino (2011). "Interpretación abstracta de los lenguajes de consulta de bases de datos" (PDF) . Computer Languages, Systems & Structures . 38 (2): 123– 157. doi : 10.1016/j.cl.2011.10.004 . ISSN 1477-8424 . Archivado del original (PDF) el 23 de noviembre de 2024. Recuperado el 18 de junio de 2015 . 
  • Hershey, William; Easthope, Carol (1972). Una estructura de datos y lenguaje de recuperación basados ​​en la teoría de conjuntos . Spring Joint Computer Conference, mayo de 1972. ACM SIGIR Forum . Vol.  7, n.º  4, págs. 45–55 . doi : 10.1145/1095495.1095500 . 
  • Nelson, Anne Fulcher; Nelson, William Harris Morehead (2001). Building Electronic Commerce: With Web Database Constructions . Prentice Hall. ISBN 978-0201741308.
  • North, Ken (10 de marzo de 2010). "Conjuntos, modelos de datos e independencia de datos" . Dr. Dobb's . Archivado del original el 24 de octubre de 2012.
  • Tsitchizris, Dionysios C.; Lochovsky, Fred H. (1982). Modelos de datos . Prentice–Hall. ISBN 978-0131964280.
  • Ullman, Jeffrey; Widom, Jennifer (1997). Un primer curso de sistemas de bases de datos . Prentice-Hall. ISBN 978-0138613372.
  • Wagner, Michael (2010), SQL/XML:2006 – Evaluierung der Standardkonformität ausgewählter Datenbanksysteme , Diplomica Verlag, ISBN 978-3836696098

Lecturas adicionales

  • Ling Liu y Tamer M. Özsu (Eds.) (2009). « Enciclopedia de sistemas de bases de datos» , 4100 págs.,  60 ilustraciones. ISBN 978-0-387-49616-0.
  • Gray, J. y Reuter, A. Procesamiento de transacciones: conceptos y técnicas , 1.ª edición, Morgan Kaufmann Publishers, 1992.
  • Kroenke, David M. y David J. Auer. Conceptos de bases de datos. 3.ª ed. Nueva York: Prentice, 2007.
  • Raghu Ramakrishnan y Johannes Gehrke , Sistemas de gestión de bases de datos .
  • Abraham Silberschatz , Henry F. Korth , S. Sudarshan, Conceptos de sistemas de bases de datos .
  • Lightstone, S.; Teorey, T.; Nadeau, T. (2007). Diseño físico de bases de datos: la guía del profesional de bases de datos para explotar índices, vistas, almacenamiento y más . Morgan Kaufmann Press. ISBN 978-0-12-369389-1.
  • Teorey, T.; Lightstone, S. y Nadeau, T. Modelado y diseño de bases de datos: diseño lógico , 4.ª edición, Morgan Kaufmann Press, 2005. ISBN 0-12-685352-5.
  • Lista de reproducción de cursos de la base de datos de CMU
  • MIT OCW 6.830 | Otoño 2010 | Sistemas de bases de datos
  • Berkeley CS W186
  • Extensión de archivo DB  : información sobre archivos con la extensión DB.