database - tutorial - ¿Qué es un ejemplo de una base de datos no relacional? ¿Dónde/cómo se usan?
mongodb tutorial (23)
He estado trabajando con bases de datos relacionales por algún tiempo, pero recientemente se me ocurrió que debe haber otros tipos de bases de datos que no sean relacionales .
¿Cuáles son algunos ejemplos de bases de datos no relacionales, y dónde / cómo se usan en el mundo real? ¿Por qué elegirías usar una base de datos no relacional sobre bases de datos relacionales?
Editar : Otras dos preguntas similares se han mencionado en las respuestas:
Tenga en cuenta que el concepto de bases de datos relacionales es altamente polémico. Los puristas como CJ Date argumentarían que muchas bases de datos de uso común (como Oracle y SQL Server) no cumplen suficientemente con el modelo relacional que se denominará ''relacional''.
En mi compañía, www.smartsgroup.com, tenemos un motor de base de datos patentado que llamamos "base de datos de registro de transacciones". Se basa en archivos planos, cada archivo contiene una secuencia de "eventos" o "mensajes", en formato binario, además de varios índices sobre estos datos y algoritmos para reproducir el estado del libro de pedidos de una bolsa de valores. Está altamente optimizado para actualizaciones secuenciales y acceso secuencial.
En aplicaciones científicas, también es común usar motores de base de datos propietarios en lugar de RDBMS. También trabajé para una compañía que tiene la base de datos más grande del mundo de grabaciones cerebrales EEG: www.brainresource.com. Allí usamos una base de datos de archivos planos, y funcionó bien para nosotros.
SmartsGroup también utiliza una base de datos temporal, que es como una tabla de base de datos no relacional, excepto que almacenamos un historial de todos los cambios en todos los campos para que podamos reproducir el estado de una fila en particular en una fecha determinada.
Como una base de datos OO, Intersystems Caché me viene a la mente. Algunos sistemas médicos y de bibliotecas se basan en esto.
Creo que una base de datos de archivos planos en Excel no es relacional y la usan muchas personas.
En realidad, es solo una tabla de base de datos que no se puede combinar con otras tablas.
Cualquier archivo o grupo de archivos que contiene datos pero no expresa relaciones dentro de esos datos es una base de datos no relacional.
Cualquier base de datos que afirme ser una "base de datos de estilo Berkley" o una base de datos "clave / valor" no es relacional.
Estas bases de datos generalmente se basan en complejos algoritmos hash y proporcionan una búsqueda muy rápida O (1) basada en una clave, pero dejan cualquier forma de bondad relacional para el usuario final.
Por ejemplo, en una base de datos relacional, debería normalizar su estructura y unir muchas tablas para crear un solo conjunto de resultados.
En una base de datos clave / valor, se desnormalizaría tanto como sea posible y luego se usaría una clave única para buscar datos.
Si necesita extraer datos de dos fuentes, deberá unirse al conjunto resultante a mano.
En mi universidad hay un grupo que investiga bases de datos deductivas .
Hay muchas respuestas, pero todas terminan en una de dos categorías principales:
Relativo a la navegación. Incluye bases de datos de árbol / jerarquía y bases de datos de gráficos.
Bases de datos que rompen la primera forma normal (valores múltiples). Incluye las bases de datos Pick y Lotus Notes y sus descendientes como CouchDB.
EDITAR: Y, por supuesto, las tiendas clave / valor como BDB no son relacionales, pero eso es evidente, ¿no? Quiero decir, solo son tiendas clave / valor.
La base de datos histórica PI de OSIsoft no es relacional. Solo está hecho para archivar datos con marcas de tiempo. Se usa mucho por la industria, especialmente como la base de datos back-end para todos esos "tableros".
No es necesario ser relacional, ya que no hay uniones.
La página Wiki para bases de datos dimensionales vinculada a arriba parece haber desaparecido.
Algunos sistemas OLAP están respaldados por bases de datos multidimensionales (MOLAP), que a menudo se utilizan en análisis financieros. Ofrecen clientes interactivos que permiten navegar a través de los datos en diferentes niveles de agregación.
Las bases de datos dimensionales son excelentes ejemplos de bases de datos no relacionales. Se utilizan con mucha frecuencia para ''Business Dashboards'' / ''Business Intelligence'' para KPI y otros tipos de datos agregados o estadísticos. Suelen estar llenos de bases de datos relacionales y pueden ofrecer un mejor rendimiento en ciertas situaciones.
Las bases de datos no relacionales simplemente no cumplen con los requisitos de Codd. Intersystems Caché crea una nueva escritura / rediseño total de la base de datos del viejo sistema operativo Pick. Por lo poco que leí de Caché, parece ser un rediseño bien hecho. Permite que los programas .net accedan a la base de datos al igual que SQL. Run de Caché es el programa Pick OS sin requerir ningún cambio. Al importar sus archivos Pick en Caché, puede ejecutar sus viejas aplicaciones de pantalla verde con él, pero también puede escribir nuevos programas usando .net para que pueda migrar a las aplicaciones de Windows sin abandonar los años de diseño de datos en los que ya ha invertido. Aquí está algunos antecedentes sobre el modelo Pick DB. Una base de datos de Pick utiliza registros de longitud totalmente variables y campos. Todas las tablas están codificadas por una única clave única y son accesibles sin leer un índice. Pick diseñó el sistema para utilizar un algoritmo Hashing que lee el elemento del disco generalmente en la primera lectura física (suponiendo que el mantenimiento del sistema se realizó correctamente). Los campos en Pick son no tipificados. Todos los datos se almacenan como una cadena y el reparto depende del programador. Los nulos se almacenan como una cadena vacía, por lo tanto, un nulo no ocupa espacio en el disco como lo hace en SQL. No hay necesidad de claves externas. En el "mundo relacional", el administrador de bases de datos tiene que crear y ordenar la tabla de encabezado y una tabla de elementos de línea ordenados. En el "Modelo de selección" hay una sola tabla. Un ejemplo sería, ''Fecha de pedido'' es un campo que almacenaría un número de días desde ''13 de diciembre de 1967'' (el sistema operativo Pick de datos se encendió por primera vez). Los programadores de selección no tenían problemas de Y2k. Una segunda columna sería Número de cliente. La gran diferencia es que cuando llegue a la Columna del Número de Producto, sería ''Multivaluado'' (la No Conformidad del Codd). En otras palabras, la base de datos puede manejar de 1 a 32 000 productos en la columna. Otras columnas, como Quantity Ordered, estarían en una relación controladora / dependiente con el Número de producto y también serían multivaluables. Cuando llegue a la Cantidad enviada, Pick irá a una tercera dimensión y tendrá un campo Sub-Multi-Valued. Tendría una Columna de número de envío, y sería multivalor por artículo de línea y Sub-Multi-Valor que contiene la Cantidad de envío para esa línea para ese número de envío. No se necesitan uniones internas. Todos los datos para esa orden se almacenan en una tabla y en un solo registro. ¡Sin hileras huérfanas! En segundo lugar, la definición de datos es un poco diferente. Nuestros diccionarios pueden contener definiciones de datos que no están en esta tabla o que están siendo manipulados. Un par de ejemplos son, Nombre del cliente. Se definiría como ''Usar la columna del número de cliente y devolver el campo Nombre de la Tabla de clientes. Otro ejemplo es la extensión del artículo de línea se definiría como un cálculo de Cantidad * Precio / PrecioPer. Creo que leí en algún lugar Caché afirma tener más de 100.000 instalaciones.
Las bases de datos orientadas a objetos son un tipo interesante de base de datos no relacional.
El sector comercial a veces usa bases de datos OO ya que cada oferta / contrato puede verse como otros en esa categoría, pero también tienen atributos únicos. MUY difícil representarlo relacionalmente.
Otros dos tipos de bases de datos que aún no han aparecido:
Los repositorios de contenido son bases de datos diseñadas para contenido (es decir, archivos, documentos, imágenes, etc.). Por lo general, tienen construcciones adicionales como una forma jerárquica de buscar contenido, buscar, transformar entre diferentes formatos, control de versiones y muchas otras cosas. Ejemplos: Alfresco, Documentum, JackRabbit, Day, OpenText, muchos otros proveedores de ECM.
Directorios, es decir, Directorio Activo o Directorios LDAP. Estas son bases de datos diseñadas para escenarios de baja escritura / alta lectura y altamente distribuidos a través de altas distancias geográficas / conexiones de alta latencia. Si bien se utilizan principalmente para autenticación / autorización, no tienen que serlo si su caso de uso coincide con los requisitos.
Para un dbms basado en gráficos tiene neo4j
Para un jerárquico dbms tiene cualquier sistema de archivos estándar o con "esquema" compatible con cualquier implementación de LDAP.
Todas las bases de datos eran originalmente no relacionales, fue solo con la llegada de DB2 y Oracle a mediados de la década de 1980 cuando se volvieron comunes. Antes, la mayoría de las bases de datos tenían archivos planos o jerárquicos.
Los archivos planos son intrínsecamente aburridos, pero las bases de datos jerárquicas lo son mucho menos, particularmente porque DB2 se implementó realmente en la parte superior de una implementación jerárquica (es decir, VSAM) en la primera instancia. Creo que VSAM todavía existe en los sistemas de mainframe y es de considerable importancia.
DB / 1 (tan oscuro ahora ni siquiera puedo encontrar un enlace de wikipedia) fue la base de datos preeminente de prime time de IBM para DB2 (de ahí el nombre). Esto era jerárquico: básicamente, tenía un archivo que consistía en cualquier número o registros ''raíz'', generalmente accesible directamente con una clave. Cada registro raíz podría tener cualquier número de registros secundarios fuera de él, cada uno de los cuales podría tener sus propios hijos. El efecto neto es un archivo de índice o registros raíz con cada raíz como la parte superior de una estructura arborescente potencial. Acceder a los registros secundarios podría ser complicado: había limitaciones de acceso directo, por lo que generalmente terminaba recorriendo el árbol buscando el registro que necesitaba. Una ''base de datos'' podría contener cualquier cantidad de estos archivos, generalmente relacionados por claves.
Esto tenía importantes desventajas, y no menos importante, que hacer algo realmente exigía la creación de un programa completo, básicamente el equivalente de un día de trabajo para lo que ahora podemos hacer en SQL en unos pocos minutos. Sin embargo, realmente puntuó en la velocidad de ejecución, en aquellos días un mainframe tenía aproximadamente la potencia de procesamiento de su iPhone (aunque optimizado para la E / S de datos) y las consultas deficiente de DB2 podrían matar una instalación multimillonaria muerta. Esto nunca fue un problema con DB / 1 y en un mundo donde los programadores eran menos costosos que el tiempo de CPU, tenía sentido.
Una alternativa ciertamente oscura pero interesante a los tipos de bases de datos mencionados aquí es la base de datos asociativa , como Sentences, de LazySoft Technology . Hay una versión personal gratuita que puede descargar y probar por su cuenta. La Enterprise Edition también es gratuita, pero requiere una solicitud a la empresa.
Esencialmente, una base de datos asociativa le permite almacenar información de la misma manera que nuestro cerebro: como cosas y asociaciones entre esas cosas. El nombre "Sentencias" proviene de la forma en que esta información se puede representar en una sintaxis sujeto-verbo-objeto :
- Tom es hermano de Laura
- San Francisco se encuentra en California
- Mike tiene un límite de crédito de $ 10,000
Una oración puede ser el sujeto u objeto de otra oración:
- (El autobús 570 llega a las 8:15 a.m.) los domingos
- Mary dice (el pastel fue horneado por William)
Entonces, todo puede reducirse a entidades y asociaciones .
Por supuesto, hay mucho más en Sentencias que lo que se puede expresar aquí. Le recomiendo que se tome un tiempo para leer más sobre esto en un documento técnico de LazySoft.
"The Associative Model of Data" es un libro disponible en formato PDF por Simon Williams, uno de los creadores de Sentences.
Una base de datos orientada a documentos no relacionales que hemos estado buscando es Apache CouchDB .
Apache CouchDB es una base de datos distribuida, tolerante a fallos y libre de esquemas orientada a documentos accesible a través de una API RESTful HTTP / JSON. Entre otras características, proporciona una replicación robusta e incremental con detección y resolución bidireccional de conflictos, y es consultable e indexable utilizando un motor de visualización orientado a tablas con JavaScript como el lenguaje de definición de vista predeterminado.
Nuestro interés era proporcionar un acceso distribuido a la tienda de preferencias del usuario que fuera inmune a los cambios de forma en los que pudiéramos serializar los objetos de preferencia de Java y acceder a ellos con la misma facilidad con Javascript desde una aplicación cliente basada en XULRunner.
dBase. Aunque fue comercializado como tal, no cumple con los requisitos.
Almacén de datos de Google App Engine :
El almacén de datos de App Engine no es una base de datos relacional. Si bien la interfaz del almacén de datos tiene muchas de las mismas características de las bases de datos tradicionales, las características únicas del almacén de datos implican una forma diferente de diseñar y administrar datos para aprovechar la capacidad de escalar automáticamente.
RRDtool está diseñado para almacenar y agregar datos de registro. Usted configura un intervalo de muestreo y alimenta datos en él, luego devuelve resultados basados en el tiempo. Está optimizado para almacenamiento de tamaño fijo y comienza a agregar resultados pasados después de un tiempo. Por ejemplo, supongamos que tiene una base de datos round-robin con un intervalo de tiempo de 5 minutos. Incluso si envía datos de temperatura una vez por segundo, solo almacena los resultados en incrementos de 5 minutos. Después de una semana, promedia esos resultados en valores por hora. Después de un mes, los resultados por hora se promedian en números diarios, y así sucesivamente.
RRDtool se usa comúnmente como soporte para herramientas como Cricket y MRTG para rastrear datos de red y ambientales durante meses y años seguidos.
- Archivo plano
- CSV u otros datos delimitados
- hojas de cálculo
- / etc / passwd
- archivos de correo mbox
- Jerárquico
- Registro de Windows
- Subversion utilizando el sistema de archivos, FSFS, en lugar de Berkley DB