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.