Si las bases de datos SQL / relacionales nunca existieran y se inventaran hoy, ¿serían populares?

Si no hubiéramos “descubierto” las uniones calculadas por ahora, el mundo de la base de datos probablemente se parecería mucho más a NoSQL y bases de datos de pares de nombre-valor, que eran el estándar en la década de 1960. Las bases de datos más “avanzadas” tendrían algo así como modelos de datos de bases de datos de objetos. Es probable que otras cosas, como las transacciones, se hayan desarrollado.

La mayor diferencia entre las bases de datos relacionales y “todo lo demás” es si las uniones entre datos se calculan (utilizando ID u otros enlaces de datos) o estáticas (utilizando enlaces de nivel de registro físico o proximidad física). Los enlaces estáticos son generalmente mucho más rápidos que los enlaces dinámicos, pero son mucho menos flexibles.

La primera generación de bases de datos utilizó relaciones estáticas entre datos, y esta es una propiedad que casi todas las bases de datos NoSQL (incluidas las bases de datos OO) comparten con cosas como las bases de datos CODASYL y los administradores de datos ISAM.

Digamos que Edgar F. Codd escribe su famoso artículo de álgebra relacional en, digamos, 2010. En esta historia alternativa, supongo que las bases de datos relacionales funcionan muy bien, aunque pueden tener arquitecturas algo diferentes de las que terminaron con:

  • Dado que las bases de datos distribuidas ahora se usan ampliamente y se entienden mejor, la primera generación de bases de datos relacionales está diseñada para admitir la distribución, en lugar de tenerla “atornillada” como está ahora.
  • Los lenguajes de consulta no son similares a SQL. Hay una gran cantidad de errores antiguos en SQL que no se muestran en el lenguaje de consulta “nuevo relacional”.
  • Probablemente haya mucho más soporte para relaciones estáticas, así como relaciones dinámicas en bases de datos relacionales, así como formas de entremezclarlas.

Las bases de datos NoSQL siempre han existido. Había “bases de datos de navegación” antes de que se diseñara y entregara la base de datos SEQUEL (System R) original.

La pregunta es de declarativa versus imperativa. SQL (y Datalog, Tutorial D, & c.) Toman la posición de que debemos trabajar con datos de una manera fundamentalmente declarativa . Las bases de datos de navegación (bases de datos de documentos, almacenes de objetos, NoSQL) ofrecen una forma imperativa de operar con datos.

Cada uno tiene sus beneficios y desventajas. Con un enfoque imperativo, puede especificar exactamente cómo se debe ejecutar una consulta; Pero también tienes que hacerlo . Con enfoques declarativos, a menudo se puede encontrar una manera sucinta de expresar un resultado; pero si el planificador ha elegido una forma ineficiente de implementarlo, ¡ay de ti!

Los dos enfoques se complementan entre sí. Por un lado, Hadoop, Cassandra y sistemas similares han desarrollado capas SQL para consultas (no todos tienen SQL para la actualización de datos). Esto se debe a que un modelo declarativo de programación es realmente bueno para describir conjuntos de resultados. Uno al otro vemos que las bases de datos han tenido que ofrecer una variedad de métodos para guiar a sus planificadores: sugerencias de índice, la cláusula CLUSTER, rarezas como la forma en que Postgres usa CTE como sugerencias. Permitir procedimientos almacenados y complementos en lenguajes imperativos es otra forma más general en que las bases de datos relacionales permiten la interacción no relacional con los datos.

El concepto de base de datos NoSQL orientado a documentos y K / V común antecede a las bases de datos relacionales. De hecho, SQL y el concepto de base de datos relacional se inventaron para resolver los problemas creados por K / V y bases de datos orientadas a documentos.

Dicho esto, no significa que uno sea superior al otro. Dicho de otra manera, cuando la única herramienta que tienes es un martillo, cada problema comienza a parecer un pulgar .

Tengo una teoría de que NoSQL realmente significa NoDBA o NoDevOps.

Por supuesto, hay algunos problemas que NoSQL resuelve brillantemente

> 300k tps escribe
> petabyte de tres dígitos HA y DR
indexando cada página web del mundo

Podría enumerar algunos otros problemas masivos importantes, pero la mayoría de las personas no tienen que escribir una aplicación que resuelva 300k escrituras por segundo o necesite DR / HA para petabytes de datos que cambian continuamente.

Creo que la popularidad real de NoSQL no tiene nada que ver con lo anterior. Creo que es realmente el resultado de que los desarrolladores de aplicaciones se sientan capacitados para aprender y configurar soluciones NoSQL sin tener que esperar a un DBA, DevOps, modelado de datos, desarrollo de la capa de abstracción DB, placa Enterprise Change Reveiw u otras cosas que innecesariamente hacen que SDLC sea miserable y confundir el negocio con el retraso en el tiempo de comercialización.

Si las plataformas RDBMS comenzaran hoy, dudo que segmentemos el desarrollo y la administración de estas plataformas como lo hicimos en el pasado. Puede que sea ingenuo, pero me gustaría pensar que tampoco permitiríamos el tipo de mentalidad de nosotros contra ellos que detiene el SDLC. También espero que los desarrolladores de aplicaciones tengan más conocimiento en cosas como Data Provenance, análisis, modelos, etc.

Con mis ilusiones, creo que las plataformas RDBMS serían más populares que nunca.

Depende de cuáles son las alternativas conocidas y actuales. Esto es como distorsionar el continuo espacio-tiempo.

Si imagino que los RDBMsses no existen, nuestra pila de tecnología sería totalmente diferente, ya que tuvo un enorme impacto en la tecnología y su evolución.

Todavía recuerdo el alivio y el paso lógico hacia adelante, cuando aprendí sobre SQL en primer lugar. Ese fue el momento en que tuve que aprender a codificar un grupo a mano en COBOL basado en archivos de texto sin clasificar …

Si hubiera motores de almacenamiento que funcionen correctamente, por ejemplo, para modelos de objetos complejos, que solo se preocupan por la persistencia de forma transparente, no vería la necesidad de RDBMsses.

Como no veo que esto sea tan existente, con respecto a la estabilidad, el manejo de transacciones, el manejo multiusuario masivo, el escalado, etc. pp., Existe una gran necesidad de un nuevo sistema como un RDBMS.

Esta es mi opinión personal sesgada en mi conocimiento y experiencia. No pretende ser ‘la verdad’ de ningún tipo 🙂

Esto es un poco como preguntar, “si el álgebra booleana nunca existió y se inventó hoy, ¿sería popular?”

Entonces respondería su pregunta sí, porque la teoría relacional es la mejor manera de resolver ciertos problemas de modelado de datos.

SQL como lenguaje … tal vez no. Hay muchas razones legítimas para decepcionarse con SQL como implementación de álgebra relacional. Algún lenguaje declarativo diferente podría ser más accesible.

Había bases de datos antes de que Edgar F. Codd inventara las bases de datos relacionales en 1969.

Las bases de datos relacionales solucionaron muchos de los problemas que tenían las personas: insertar, actualizar y eliminar anomalías; dificultades con rediseños, problemas con el rediseño de consultas.

NoSQL recupera esos problemas, pero deja que la aplicación se preocupe por ellos. El hardware hecho es muy rápido y el espacio en disco es muy barato.

Creo que RDBMses se incluiría en ciertos grupos, como las finanzas, por la estabilidad que puede aportar. Sin embargo, no estoy seguro de qué edad usarían.

Es posible que no se dé cuenta de que SQL es el nuevo chico en el bloque. Fue una mejora drástica sobre lo que vino antes, que había sido algo muy parecido a “NoSQL”, pero sin el nombre llamativo. SQL tardó poco tiempo en convertirse en la opción obvia para la mayoría de los db. Sigue siendo la opción obvia para la mayoría de los db’s.

Sí, todavía hay una necesidad de bases de datos relacionales. Hay deficiencias en nosql que abordan las bases de datos relacionales. Algunos de estos inconvenientes incluyen falta de transacciones, integridad referencial y falta de soporte para consultas de tipo de informe.
NoSql puede parecer el nuevo chico en el bloque, pero recuerdo cuando la gente estaba cambiando de Lotus Notes (documento db) a SQL.

Parece que el campamento NoSQL está ocupado tratando de escribir SQL-on-NoSQL tan rápido como pueden escribir y depurar, así que saca tus propias conclusiones.

Para muchas cosas, la codificación manual de sus planes de consulta no es productiva, es frágil y es difícil de optimizar.

Las bases de datos SQL todavía están en uso en estos días, y no solo por razones heredadas. En mis casos, si tengo un modelo de datos complejo y muy relacional, una pequeña cantidad de carga en términos de consultas por segundo, requisitos débiles en tiempo real, entonces una solución SQL parece ser la mejor de las que tengo aquí.

Creo que se habría tomado aún más alegremente. Si la pregunta es acerca de por qué se necesitan RDBMS a pesar de que tantos técnicos alternativos (NoSQL) están sugiriendo EditDisponible hoy, entonces debo decir que RDBMS continuará conservando su encanto mientras se necesite la consistencia de los datos.

¿La adopción se basa en el mérito o en la moda? Los nuevos conceptos no se adoptan porque son mejores, es porque están más de moda o son más baratos.

Personalmente, creo que SQL tiene mucho sentido y no tengo mucha experiencia en NoSQL aparte de CouchDB. Creo que la idea de REST API es mucho mejor que la mayoría de las API, pero aparte de eso, no creo que la use sobre una base de datos SQL para mis propios proyectos.