Hubo mucha discusión en esta pregunta: ¿Qué tecnologías de bases de datos usan los grandes motores de búsqueda?
Tanta discusión que me confundió. Entonces ... ¿qué es una base de datos, de todos modos? ¿Son solo las bases de datos relacionales "bases de datos"? ¿Las bases de datos orientadas a objetos son "bases de datos"? ¿Existe algún sistema que me permita almacenar y recuperar información (como un mapa, una lista, etc.) en una base de datos?
¿O una base de datos tiene que almacenar / recuperar información y también tener algunas características de administración como Usuarios y Privilegios? ¿Era dBase III más una base de datos, ya que no era realmente relacional?
database-theory
terminology
woliveirajr
fuente
fuente
Respuestas:
Esta es una gran pregunta y un conjunto de excelentes respuestas. Creo que una cosa que falta en la discusión es una respuesta que profundiza en la distinción entre una base de datos y un sistema de gestión de bases de datos (DBMS). Me gusta la definición de base de datos que Shark proporcionó de dictionary.com. Creo que realmente muestra la necesidad de distinguir entre la base de datos y el DBMS. La base de datos es "una colección completa de datos relacionados organizados para un acceso conveniente". La segunda parte de esa definición, que dice "generalmente en una computadora" es donde radica la distinción. Si se almacena en una computadora, puede o no almacenarse en un DBMS. Se puede almacenar en un sistema de archivos del sistema operativo. Puede almacenarse en un sistema de archivos propietario. Por lo tanto, estoy de acuerdo con FrustratedWithFormsDesigner en que un catálogo de tarjetas es una "base de datos" (bueno, tal vez, ¿es completo y relacionado? Más sobre eso más adelante). Simplemente se almacena en un archivador. En el mundo actual, las "colecciones más completas de datos relacionados organizadas para un acceso convenienteestán almacenados en una computadora, por lo que no estoy de acuerdo con Shark en que es una pena que Dictionary.com haya agregado esa parte. Creo que es absolutamente correcto, como una definición de "base de datos".
Entonces, ¿cómo definimos DBMS? Regresé a dictionary.com y encontré esto :
"Un conjunto de programas que generalmente manejan grandes conjuntos estructurados de datos persistentes, ofreciendo servicios de consulta ad hoc para muchos usuarios. Son ampliamente utilizados en aplicaciones de negocios".
La definición continúa y es bastante larga. Describe características comunes proporcionadas por un DBMS, como seguridad, integridad de datos, gestión de transacciones, control de concurrencia y, lo más importante, independencia de datos. Un DBMS proporciona una vista externa de los datos abstraídos de cómo se almacenan físicamente.
Usando esta definición, creo que está claro que un DBMS debe proporcionar un modelo de datos , que es cómo se organizan los datos para su presentación al usuario. Los tres modelos comunes son jerárquicos (IMS), de red (IDMS) y relacionales (DB2, Oracle, SQL-Server, etc.). También está el modelo OO (OODBMS). Solo el modelo relacional actual tiene una amplia aplicabilidad. Los otros modelos todavía están en uso, pero solo en situaciones de nicho. El DBMS también debe proporcionar las otras características mencionadas. Me referiría a estos colectivamente como características o capacidades de gestión de datos.
Por lo tanto, los productos de software que proporcionan funciones de gestión de datos son DBMS ', mientras que los productos que no proporcionan estos no son DBMS'. Los productos NoSQL no son DBMS '. Eso no quiere decir que no sean útiles, y nodecir que no almacenan "bases de datos". Me gusta pensar que los DBMS ', como dice la definición, resuelven una clase de problemas relacionados con aplicaciones comerciales como contabilidad, nómina, facturación, gestión de relaciones con clientes, ventas, etc. Los productos NoSQL, aunque no son DBMS', son excelentes para resolver un problema. clase de problemas que no están relacionados con las aplicaciones comerciales tradicionales, pero que ahora existen debido a la gran cantidad de almacenamiento y ancho de banda que la tecnología informática es capaz hoy en día. Estas son aplicaciones como la búsqueda en Internet, como la subasta en línea, como Twitter y como Facebook. El DBMS no es una buena opción para resolver estos problemas, ya que el DBMS contiene características de administración de datos que, si bien son una necesidad absoluta para una aplicación comercial, no sirven para resolver el almacenamiento y la recuperación de Craig ' s anuncios de listas o feeds de Twitter (bueno, de todos modos, esa es otra discusión para otro momento :-)). Esos problemas requieren una escala masiva y una respuesta extremadamente rápida y el DBMS, con su hinchazón de características, no es un buen ajuste.
Un profesional de datos necesita comprender todas estas herramientas para almacenar datos y qué clase de problemas son adecuados para resolver con el fin de elegir la herramienta adecuada para el trabajo, al igual que un contratista general tiene que saber cuál de sus herramientas de construcción es La herramienta adecuada para el trabajo. Ninguna herramienta es buena o mala en sí misma. Es bueno si es adecuado para resolver un problema importante.
Concluiré señalando otras dos distinciones clave en la definición de base de datos y DBMS que podrían pasarse por alto en la discusión hasta el momento. La definición de base de datos incluye " recopilación integral de datos relacionados ". La definición de DBMS incluye "gestionar grandes estructuras estructuradasSería mejor usar MS Access o algún otro DBMS relacional. Entonces, tal vez un catálogo de tarjetas no es una base de datos, ya que si bien es completo (tiene un registro de todos los libros de la biblioteca) no está relacionado, ya que solo tiene información sobre libros, no completa información relacionada sobre autores, editores, etc.
En segundo lugar, un DBMS sobresale en el almacenamiento de datos "estructurados". Se basa completamente en un esquema definido de elementos de datos discretos con tipos estructurados. Un producto NoSQL, digamos un almacén de valores clave que carece de un esquema, sobresale en el almacenamiento de datos no estructurados. Ese producto NoSQL, por lo tanto, no cumple con la definición de un DBMS. Pero si el problema que está tratando de resolver es el almacenamiento de datos no estructurados (algo que ni siquiera intentamos hacer cuando se desarrollaron DBMS por primera vez), y no necesita funciones de administración de datos independientes de la aplicación en la que escribirá Al procesar datos no estructurados, el producto NoSQL es una herramienta perfecta.
Espero que esta respuesta agregue valor a las otras excelentes respuestas publicadas aquí. Espero cualquier comentario y punto de discusión que alguien más pueda tener que nos ayudará a ampliar nuestra comprensión de las bases de datos y las clases de tecnología que resuelven problemas relacionados con los datos.
fuente
Citaré Dictionary.com , ya que tomo esto como el significado de la base de datos:
Según esta definición, puede considerar una base de datos desde un RDBMS completo (SQL Server, Oracle, etc.) hasta un archivo plano básico. Si almacena datos, técnicamente puede considerarse una base de datos.
Ahora, como la mayoría de las cosas en nuestro mundo moderno, existe el significado aceptado de un nombre. Y en el caso de la base de datos , eso variará de persona a persona. Mucha gente piensa en una base de datos únicamente como una entidad administrada por un sistema de datos.
Vale la pena señalar el comentario de @ FrustratedWithFormsDesigner:
Estoy de acuerdo con esa declaración, y no creo necesariamente que una base de datos deba vivir en una "computadora" o cualquier dispositivo electrónico. Un catálogo de tarjetas es un ejemplo perfecto de una base de datos no computarizada.
fuente
Para mí, una base de datos es algo que existe para almacenar y recuperar datos. Llamamos a Access una base de datos, a pesar de que en realidad es solo un bonito front-end para una colección de archivos. Outlook (al menos en Mac) llama a su tienda de mensajes una base de datos. Algunas personas incluso llaman a Excel una base de datos (pero eso me hace resoplar, por lo que hay una línea en alguna parte).
Creo que la definición ha evolucionado con el tiempo, y la comparación de dictionary.com, wiki y documentos de varios profesionales de bases de datos a lo largo de los últimos 30 años arrojará una variedad de definiciones. Y la definición continuará evolucionando también.
Si está hablando de algún tipo de fuente de datos que usted o sus aplicaciones usan para almacenar o recuperar datos, ya sea relacional o no, no tengo ningún problema con que lo llame una base de datos. Si se trata de un archivo de texto, es posible que tenga algunas cejas arqueadas, pero no estoy seguro de entender la necesidad de precisar la definición de una manera tan limitada que la gente se enoje por eso.
Aparentemente, algunas personas se vuelven bastante optimistas, incluso si te vuelves periférico a sugerir que BigTable (o NoSQL o hadoop) es una "base de datos", y afirman que llamarlo como tal dará, particularmente a los novatos, una gran promesa de rendimiento infinito, inmortalidad y unicornios. Mientras que generalmente solo quiere decir que es un lugar donde los datos se almacenan y recuperan, sin ninguna garantía sobre lo que hace la implementación real, ya sea relacional o no, o si puede producir tal cosa usted mismo cuando se aburre un domingo por la tarde.
Admitiré que me estremezco cuando la gente habla de una base de datos relacional y llama filas "registros" o columnas "campos". Pero aunque me molesta un poco, no me enojo ni hago todo lo posible para corregirlos, ¿cuál es el punto? Comprendí lo que significaban, incluso si no son 100% precisos.
fuente
Puede ser muy general, solo una recopilación de datos y estructuras. El sistema para administrar una base de datos puede ser tan simple como un sistema de archivos o tan complejo como un sistema federado como DNS.
En general, en el uso moderno, cuando se dice base de datos, uno implica tanto el almacenamiento de datos como las estructuras y un sistema de gestión de bases de datos que lo acompaña, y debido a que se ha realizado tanto trabajo teórico sobre los fundamentos de las bases de datos relacionales, estos siguen siendo los más populares. que a menudo cuando uno dice base de datos, a menudo implica una base de datos relacional.
Con el aumento de las bases de datos NoSQL / no relacionales, el término base de datos ha vuelto a ser más general y potencialmente más ambiguo, ya que no se puede suponer un modelo compartido para comprender los datos.
Antes de la fundación de la teoría relacional, el modelado de datos en otros sistemas variaba de un sistema a otro y no tenía principios rectores compartidos como lo ha hecho el modelo relacional; se utilizaron otros tipos de bases de datos, como bases de datos jerárquicas y bases de datos de red.
fuente
Trabajé para Ashton-Tate durante el desarrollo de dBASE Direct / 36 y dBASE IV, utilizando mi conocimiento de dBASE III Plus para codificar un pequeño programa para ayudar en las pruebas de dBASE Direct / 36 (interfaz para un IBM System / 36 Mini Computer). Tuvimos que hacer declaraciones binarias de carga y llamada a las tablas System / 36 SQL, lo que requería escribir repetidamente las mismas declaraciones 'cargar' y 'llamar' mientras se cambiaban los nombres de las tablas y los nombres de los campos al enviarlos para obtener los datos de cada registro o grupo de varios registros según el alcance de la consulta. dBASE III Plus, un lenguaje de programación de bases de datos, me permitió crear 'dbldot.prg' que cambió el indicador de un solo punto a un doble punto, ya que diseñé para ser un indicador de que el sistema estaba en modo de recuperación de SQL, así como el texto debajo de la línea de comando que decía "
En aquel tiempo, dBASE era un lenguaje de programación de base de datos, o más exactamente, un lenguaje de programa que permitía la manipulación de registros de datos. Un registro era un grupo de campos que contenían datos para un elemento individual, como LAST_NAME, FIRST_NAME, ADDRESS, CITY, ST, ZIP, PLUS_FOUR, SSN, etc. Estas estructuras se representaron posteriormente en tablas y se organizaron en filas y columnas, una fila es un registro individual y una columna son los datos en una serie de registros para cada nombre de campo. De esta manera, un usuario podría ordenar fácilmente por nombre de campo para ordenar y agrupar registros por campos comunes específicos, como CITY, ST, ZIP, etc.
El lenguaje dBASE permitió al usuario o programador manipular datos, realizar clasificaciones, mostrar tablas, registros y realizar cálculos (Y2K estaba muy lejos, pero las fechas tenían que convertirse a AAAAMMDD para ordenar los datos MM-DD-AAAA que se ingresaron, que se podría hacer con DtoC y CtoD (Fecha al carácter, Carácter a la fecha)). Sin el lenguaje dBASE, los archivos de datos serían simplemente una serie de registros (filas) con campos comunes (columnas).
Base de datos relacional: ese era el término utilizado para hacer referencia cruzada de más de una base de datos (tabla) con otra que contenía información diferente pero contenía uno o más campos comunes. Por ejemplo, una base de datos titulada "Direcciones" contiene "LNAME", "FNAME", "ADDRESS", "CITY", "ST", "ZIP", "SSN". Otra base de datos titulada "CHECKING" contiene "ACCOUNT_NO", "ROUTING_NO", "CUSTLAST", "CUSTFIRST", "DOB", "SSNO", "CUST_NO". Aunque los nombres de los campos son diferentes, varios de ellos contienen la misma información que se puede vincular entre sí para vincular los datos de una base de datos que la de la otra para, por ejemplo, enviar extractos a los clientes del banco, utilizando los campos de nombre y apellido y los números SS para relacionar los datos, extrayendo la dirección del cliente de una base de datos y la información de la cuenta para colocarla en el estado de cuenta de la otra. Luego, en una escala mayor, puede tener lugar una función de combinación de correspondencia para realizar estas acciones en cada cliente individual en la base de datos ADDRESS, obteniendo la información de cuenta relacionada de cada cliente, personalizando el estado de cuenta, imprimiendo y abordando cada uno antes de pasar al siguiente registro, o cliente, en la base de datos.
Entonces, algo como MS ACCESS podría ser más un DBMS, pero en un nivel básico, dBASE era un lenguaje para crear interfaces de usuario front-end y realizar toda la manipulación de datos entre bases de datos para crear una relación entre ellos y devolver los datos resultantes para somos simples humanos para usar.
Mucho ha cambiado desde entonces, pero la base sigue siendo la misma. Los datos todavía están contenidos en registros que contienen una serie de campos de varios tipos de datos y deben ser referenciados y fusionados con los de otras bases de datos a través de uno o más puntos de datos comunes, lo que nos permite usar tarjetas de crédito, configurar cuentas en la web usando nuestros ID de Google, Facebook, Twitter, rastree nuestros historiales de compras, etc. Nuestras vidas son solo una serie de muchas bases de datos relacionales superpuestas, que recorremos todos los días sin pensar en todos los bits y bytes que interactúan para brindarnos los placeres y la evolución continua de la facilidad en nuestras vidas hoy.
Al menos así es como siempre lo he entendido durante estos años de pruebas de software y hardware que comenzaron con dBASE II en 1984.
fuente
El artículo seminal de Codd se tituló Un modelo relacional de datos para grandes bancos de datos compartidos . Lo que él llamó un "banco de datos" llamaríamos una base de datos.
Sin embargo, me gustan sus imágenes. Implica un lugar donde se pueden poner los datos, sabiendo que se mantendrán seguros, se contabilizarán adecuadamente y solo se devolverán a aquellos que puedan demostrar que tienen autoridad para acceder a ellos. Si nuestra sucursal es robada, tenemos la seguridad de que la compañía bancaria tiene respaldo adecuado para garantizar que nuestros valiosos recursos no se pierdan irrevocablemente.
fuente
De Fundamentos del diseño de bases de datos 7th Ed. (pág. 5)
Continúan diciendo que el uso común es más restringido,
En ninguna definición es una base de datos explícitamente "relacional" en ningún sentido, sin embargo, con frecuencia se asume porque la industria está saturada con DBA de un tipo específico y podría decirse que el software DBMS más avanzado es todo relacional. Del diccionario de base de datos relacional
Ese último punto es algo importante, y también me gusta la distinción entre el DBMS / RDBMS y la base de datos en sí.
fuente