Pregunta

He estado trabajando con bases de datos relacionales durante algún tiempo, pero solo recientemente se me ocurrió que debe haber otros tipos de bases de datos que sean no -relacional.

¿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:

¿Fue útil?

Solución

  • archivo plano
    • CSV u otros datos delimitados
    • hojas de cálculo
    • / etc / passwd
    • archivos de correo de mbox
  • jerárquico
    • Registro de Windows
    • Subversion usando el sistema de archivos, FSFS, en lugar de Berkley DB

Otros consejos

Una alternativa ciertamente oscura pero interesante a los tipos de bases de datos que se mencionan aquí es la base de datos asociativa , como Sentencias, de LazySoft Technology . Hay una versión personal gratuita que puedes descargar y probar por tu cuenta. La Edición Enterprise 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 lo hacen nuestros cerebros: 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 de 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 8:15 am) los domingos
  • Mary dice (el pastel fue horneado por William)

Por lo tanto, todo puede reducirse a entidades y asociaciones .

Por supuesto, hay mucho más en Sentencias de 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.

" El Modelo Asociativo de Datos " es un libro disponible en formato PDF por Simon Williams , uno de los creadores de Sentencias.

Una base de datos orientada a documentos no relacionales que hemos estado buscando es CouchDB de Apache .

  

Apache CouchDB es una base de datos orientada a documentos distribuida, tolerante a fallas y sin esquemas, 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 de conflictos bidireccionales, y se puede consultar e indexar utilizando un motor de vista orientado a tablas con JavaScript como el idioma de definición de vista predeterminado.

Nuestro interés estaba en proporcionar un almacén de preferencias de usuario de acceso distribuido que fuera inmune a los cambios de forma en los que podríamos serializar objetos de preferencia de Java y acceder a ellos con la misma facilidad con Javascript desde una aplicación cliente basada en XULRunner.

Cualquier base de datos que diga ser una " Base de datos de estilo Berkley " o " Clave / Valor " La base de datos no es relacional.

Estas bases de datos generalmente se basan en algoritmos de hashing complejos y proporcionan una búsqueda muy rápida O (1) basada en una clave, pero dejan cualquier forma de bondad relacional al usuario final.

Por ejemplo, en una base de datos relacional, normalizaría su estructura y uniría muchas tablas para crear un único conjunto de resultados.

En una base de datos de clave / valor, usted desnormalizaría todo lo posible y luego usaría una clave única para buscar datos.

Si necesita extraer datos de dos fuentes, tendría que unir el conjunto resultante a mano.

Todas las bases de datos originalmente no eran relacionales, fue solo con la llegada de DB2 y Oracle a mediados de la década de 1980 que se hicieron comunes. Antes de eso, la mayoría de las bases de datos eran archivos planos o jerárquicos.

Los archivos planos son intrínsecamente aburridos, pero la base de datos jerárquica lo es mucho menos, en particular porque DB2 se implementó en la parte superior de una implementación jerárquica (VSAM) en primera instancia. Creo que VSAM sigue existiendo en sistemas mainframe y tiene una importancia considerable.

DB / 1 (tan oscuro ahora que ni siquiera puedo encontrar un enlace de wikipedia) fue la base de datos de IBM en horario de máxima audiencia predecesora de IBM (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 accesibles directamente mediante una clave. Cada registro raíz podría tener cualquier número de registros secundarios, cada uno de los cuales podría tener sus propios hijos. El efecto neto es un archivo de índice o registros raíz, donde cada raíz es la parte superior de una posible estructura similar a un árbol. El acceso a los registros secundarios puede ser complicado, ya que el acceso directo tenía limitaciones, por lo que generalmente terminaba atravesando el árbol en busca del registro que necesitaba. Una 'base de datos' podría tener cualquier número de estos archivos, generalmente relacionados por claves.

Esto tenía grandes desventajas, entre otras, que hacer algo exigía que se escribiera un programa completo; básicamente, el equivalente a un trabajo de días para lo que ahora podemos hacer en SQL en unos pocos minutos. Sin embargo, realmente obtuvo una puntuación en la velocidad de ejecución, en esos días un mainframe tenía la capacidad de procesamiento de su iPhone (aunque estaba optimizado para la E / S de datos) y las consultas deficientes de DB2 podían acabar con una instalación multimillonaria. 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.

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.

La base de datos histórica de PI de OSIsoft no es relacional. Solo está hecho para archivar datos con marca de tiempo. Se usa mucho por la industria, especialmente como la base de datos de back-end para todos esos 'tableros'.

No es necesario que sea relacional, ya que no hay combinaciones.

Otros dos tipos de bases de datos que aún no han aparecido:

  1. 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 para navegar por el contenido, buscar, transformar entre diferentes formatos, versiones, y muchas otras cosas. Ejemplos: Alfresco, Documentum, JackRabbit, Day, OpenText y muchos otros proveedores de ECM.

  2. Directorios, es decir, Active Directory o LDAP. Estas son bases de datos diseñadas para escenarios de baja escritura / alta lectura y altamente distribuidas a través de conexiones de alta distancia geográfica / alta latencia. Si bien se utilizan principalmente para la autenticación / autorización, no tienen que serlo si su caso de uso cumple con los requisitos.

Las bases de datos dimensionales son excelentes ejemplos de bases de datos no relacionales. Se usan muy comúnmente para 'Business Dashboards' / 'Business Intelligence' para KPIs y otros tipos de datos agregados o estadísticos. Por lo general, se rellenan desde bases de datos relacionales y pueden ofrecer un mejor rendimiento en ciertas situaciones.

http://en.wikipedia.org/wiki/Dimensional_database

  1. bases de datos XML, por ejemplo, xindice
  2. bases de datos de objetos, por ejemplo, db4o

Tenga en cuenta que el concepto de bases de datos relacionales es altamente polémico. Puristas como C. J. Date argumentaría que muchas bases de datos de uso común (como Oracle y SQL Server) no cumplen lo suficiente con el modelo relacional para ser denominado "relacional".

Las bases de datos no relacionales simplemente no cumplen con los requisitos de Codd. Intersystems Caché obtiene una reescritura / rediseño total de la base de datos del antiguo sistema operativo Pick. Por lo poco que he leído de Caché, parece ser un rediseño bien hecho. Permite que los programas .net accedan a la base de datos como lo haría con SQL. Los programas Pick OS de Caché se ejecutan sin requerir ningún cambio. Al importar sus archivos Pick en Caché, aún 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í hay algunos antecedentes sobre el modelo Pick DB. Una base de datos de Pick utiliza registros y campos de longitud totalmente variable. Todas las tablas están codificadas por una única clave única y son accesibles sin leer un índice. Pick diseñó el sistema para usar un algoritmo de hash que lee el elemento del disco en general en la primera lectura física (suponiendo que el mantenimiento del sistema se realizó correctamente). Los campos en la selección no están escritos. Todos los datos se almacenan como una cadena y Casting depende del programador. Los nulos se almacenan como una cadena vacía, por lo que un nulo no ocupa espacio en disco como lo hace en SQL. No hay necesidad de llaves foráneas. En el ‘Mundo relacional’, el DBA tiene que crear una tabla de encabezado de pedido y una tabla de elementos de línea de pedido. En el "Pick Model" 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" (la selección de datos se activó por primera vez). Los programadores de pick no tuvieron problemas Y2k. Una segunda columna sería el número de cliente. La gran diferencia es que cuando llega a la Columna de número de producto, sería ‘Multi-Valued’ (la No conformidad de Codd). En otras palabras, la base de datos puede manejar 1-32000 productos # s en esa columna. Otras columnas como Cantidad pedida estarían en una relación de control / dependiente con el Número de producto y también serían de valor múltiple. Cuando llegue a la Cantidad enviada, la selección irá a una tercera dimensión y tendrá un campo de valor múltiple múltiple. Tendría una columna de número de envío y sería de valor múltiple por elemento de línea y valor múltiple múltiple que contenía la cantidad de envío para esa línea para ese número de envío. No se necesitan juntas internas. Todos los datos para esa orden se almacenan en una tabla y en un solo registro. No hay filas huérfanas nunca! En segundo lugar, la definición de los 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 de elemento de línea se definiría como un cálculo de Cantidad * Precio / Precio por día. Creo que leí en alguna parte que Caché dice tener más de 100,000 instalaciones.

Creo que una base de datos de archivos sin formato en Excel no es relacional y es utilizada por bastantes personas.

En realidad es solo una tabla de base de datos que no se puede unir con otras tablas.

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 transacción / contrato puede parecerse a otros en esa categoría, pero también tiene atributos únicos. MUY difícil representarlo relacionalmente.

eXist-db es una base de datos xml que ha existido durante mucho tiempo. Es particularmente útil para xquery sobre toneladas de documentos xml.

Cualquier archivo o grupo de archivos que contenga datos pero no exprese relaciones dentro de esos datos es una base de datos no relacional.

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 el almacenamiento de tamaño fijo, y comienza a agregar resultados pasados ??después de un tiempo. Por ejemplo, suponga que tiene una base de datos de round-robin con un intervalo de tiempo de 5 minutos. Incluso si le envía datos de temperatura una vez por segundo, aún 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 el backend para herramientas como Cricket y MRTG para rastrear datos de red y ambientales durante meses y años seguidos.

Para un dbms basado en gráficos tienes neo4j

Para un dbms jerárquico, tiene cualquier sistema de archivos estándar o con " esquema " soporta cualquier implementación LDAP.

Hay muchas respuestas, pero todas terminan en una de dos categorías principales:

  1. Navegación. Incluye bases de datos de árbol / jerarquía y bases de datos de gráficos.

  2. Bases de datos que rompen la primera forma normal (múltiples valores). Incluye las bases de datos Pick y Lotus Notes y sus descendientes como CouchDB.

EDITAR: Y, por supuesto, las tiendas de clave / valor como BDB no son relacionales, pero no hace falta decirlo, ¿no? Quiero decir, son solo tiendas clave / valor.

dBase. Aunque se comercializó como tal, no cumple con los requisitos.

Como una base de datos de OO, Intersystems Cach & # 233; me viene a la mente. Algunos sistemas médicos y bibliotecarios se basan en esto.

  1. En mi compañía, www.smartsgroup.com, tenemos un motor de base de datos patentado que llamamos una base de datos de registro de transacciones de quot. Se basa en archivos sin formato, cada archivo contiene una secuencia de " eventos " o " mensajes " ;, en formato binario, más 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.

  2. 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í utilizamos una base de datos de archivos planos, y funcionó bien para nosotros.

  3. SmartsGroup también usa 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 poder reproducir el estado de una fila en particular en una fecha en particular.

La página Wiki para las bases de datos dimensionales vinculadas a lo anterior parece haber desaparecido.

Algunos sistemas de OLAP están respaldados por bases de datos multidimensionales (MOLAP) en las que se utilizan a menudo análisis financiero. Permiten clientes interactivos que permiten navegar por los datos en diferentes niveles de agregación.

En mi universidad hay un grupo que investiga bases de datos deductivas .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top