¿Cómo podrían los RDBMS ser considerados una moda?

11

Completando mi nivel A de Computación en 2003 y obteniendo un título en Computación en 2007, y aprendiendo mi oficio en una empresa con mucho uso de SQL, se me ocurrió la idea de que las Bases de Datos Relacionales se usaran para el almacenamiento.

Entonces, a pesar de ser relativamente nuevo en el desarrollo, me sorprendió leer un comentario (en /software//q/89994/12436 ) que decía:

[Algunos desarrolladores] desprecian [SQL] y piensan que él y RDBMS son una moda

Obviamente, un desarrollador competente utilizará la herramienta adecuada para el trabajo correcto y no creará una base de datos relacional cuando, por ejemplo, un archivo plano u otra solución para el almacenamiento sea apropiado, pero los RDBM son útiles en una gran cantidad de circunstancias, entonces, ¿cómo podrían ser? considerado una moda pasajera?

StuperUser
fuente
1
Proporcione contexto: ¿dónde leyó ese comentario?
Eran Galperin
8
Cualquier cosa y todo es considerado una moda pasajera por alguien en alguna parte.
Péter Török
Muy cierto Péter, solo curiosidad por saber por qué.
StuperUser
55
Estas personas generalmente tienen otro paradigma que quieren promover, que va en contra de la idea de bases de datos relacionales. Por lo tanto, las bases de datos relacionales son malas y deben desaparecer. Mire las bases de datos orientadas a objetos, que aún no han alcanzado la masa crítica.

Respuestas:

28

La clave está en la R en el RDBMS, que significa relacional. Contrariamente a la creencia popular, no significa relaciones entre tablas, sino el hecho de que cada tabla es una relación en el sentido matemático de la palabra .

El modelo relacional tiene implicaciones bastante significativas. Debe modelar sus datos para ajustar las relaciones y normalizar ese modelo . Si su aplicación está diseñada como modelo orientado a objetos, el modelo relacional no es un buen ajuste. Esto es ampliamente conocido como desajuste de impedancia relacional de objeto .

Un enfoque para este desajuste son los ORM (mapeadores de relaciones de objeto), que han ganado mucha popularidad. Pero no son la verdadera solución, son más como solucionar el problema. Todavía no resuelven realmente el problema de asignar la herencia de clases al modelo relacional.

La verdadera solución al desajuste relacional de objetos son los OODBMS , que desafortunadamente no obtuvieron mucha tracción. El motor popular que admite OOBD de forma nativa es PostgreSQL, que es OO / RDBMS híbrido. Otro OODBMS es Zope Object DB , que está construido en Python y en la configuración típica usa RDBMS como motor subyacente.

El enfoque alternativo es tener más lógica implementada en el nivel de aplicación o middleware y usar la solución NoSQL para el almacenamiento subyacente.

Ni OODBMS ni NoSQL son "solo un archivo plano".

vartec
fuente
2
@Daniel: ciertamente no dijo que el modelo relacional era un problema que necesita una solución; dijo exactamente lo que dijo: si está comprometido a modelar su software en el paradigma orientado a objetos, entonces el modelo relacional es un problema.
Carson63000
1
@Carson: Mis disculpas, pero no es así como leí la respuesta. @vartec dice: "La verdadera solución es el OODBMS (que desafortunadamente no obtuvo mucha tracción)". Respetuosamente estoy en desacuerdo: diría que la verdadera solución es comprender el modelo relacional y usarlo de manera efectiva. OODBMS es la solución de un hombre pobre para cuando debe usar los principios OO para su modelo de datos, lo que ciertamente no es un caso universal.
Daniel Pryden
1
@Daniel: Pensé que quería decir que un OODBMS era la verdadera solución, una vez más, si estás comprometido a modelar tu software en el paradigma orientado a objetos. No es que el modelo relacional fuera un problema en sí mismo, y que OODBMS fuera la solución. Pero de todos modos, no tiene mucho sentido debatir cuál de nosotros entendió a Vartec correctamente, me retiraré y dejaré que aclare si quiere. :-)
Carson63000
1
@Daniel: El contexto es importante. Ciertamente digo que ese modelo relacional es un problema en el contexto de la POO. Ahora, cuán universal o no es la POO, eso está más allá del alcance de esta respuesta. Y por cierto. Los OODBMS no son la "solución del hombre pobre", los ORM sí lo son.
vartec
1
@vartec: OK, retracto mi voto negativo. (No puedo eliminarlo a menos que se edite la publicación). Creo que sería mejor aclarar que hay soluciones que no involucran a OO. Y sí, estoy de acuerdo en que un ORM es peor incluso que un OODBMS.
Daniel Pryden
13

Hice la declaración que citó en la pregunta anterior. Si desea una cita para verificar mi suposición sobre los desarrolladores en este sitio, lea mi respuesta a la siguiente pregunta y revise la reacción violenta de los comentarios y votos negativos que recibí por lo que todavía considero una respuesta aceptable.

¿Deben los programadores experimentados conocer las consultas de bases de datos?

Afirmé que si se usa una base de datos RDBMS a pesar de Linq o un ORM, un desarrollador debe tener un conocimiento avanzado de SQL.

Parece que esta fue una afirmación muy impopular debido a diferencias de opinión respetables sobre la importancia de SQL, a la mentalidad menos respetable de que RDBMS es inherentemente inferior a las bases de datos NoSQL como MongoDB.

EDITAR: para agregar más a mi reclamo, citaré al usuario SK-logic:

solo recuerde que toda esta locura RDBMS es una tendencia relativamente reciente. Antes de eso teníamos una gran variedad de enfoques. Aparentemente estás trabajando en una empresa joven, junto con desarrolladores de tu edad, y por lo tanto no tienes oportunidad de estar expuesto a los enfoques de almacenamiento más antiguos y sólidos. Afortunadamente, esta tendencia reciente ya está disminuyendo, y las buenas formas antiguas están volviendo, rebautizadas como 'nosql'.

árbol de arce
fuente
Totalmente de acuerdo con usted en que los desarrolladores que trabajan con bases de datos deben comprender SQL para poder conceptualizar una consulta en términos de relaciones correctamente. Sin embargo, es de esperar que Linq / ORM no optimice las consultas sobre la abstracción de una manera que afecte las consultas escritas teniendo en cuenta el almacén de datos.
StuperUser
La única razón por la que alguien diría "esta moda RDBMS es una tendencia relativamente reciente" es para mostrar cuán gris es su barba. Trabajé por primera vez en el tipo de aplicaciones empresariales y empresariales que usted describe en 1995: las bases de datos relacionales dominaban en ese momento, ahora dominan, han dominado en todas partes en las que he trabajado durante los 16 años transcurridos. Ahora, obviamente, no soy tan viejo como algunos, pero cuando digo "relativamente reciente", no me refiero a "en los últimos veinte años".
Carson63000
El problema es que muchos desarrolladores equiparan erróneamente RDBMS con SQL. SQL es un lenguaje realmente horrible para los estándares modernos. Es una implementación defectuosa e incompleta de un lenguaje "relacional" (SQL no es realmente relacional en absoluto y eso es parte del problema) que no ha evolucionado mucho en los últimos 30 años. Muchas personas que usan SQL apenas entienden el modelo relacional; todo lo que saben es SQL y, por lo tanto, suponen que el modelo relacional es la causa de su frustración.
nvogel
@dportas, Sure SQL no es perfecto, pero fue tan importante para cada trabajo que tuve que descubrí lo fácil que fue la vida cuando comencé a PENSAR en SQL. Si me da un modelo relacional y me hace una pregunta en inglés simple, entonces puedo escribirle una "respuesta" en SQL. Usted dice que "todo lo que saben es SQL y, por lo tanto, suponen que el modelo relacional es la causa de su frustración", entonces no conocen bien SQL. ¿Por qué todo debe ser atendido al demonizador común más bajo todo el tiempo, como un programador indio que gana menos de $ 10 / hora con una educación deficiente?
maple_shaft
@maple_shaft, si está pensando en SQL, entonces está pensando en algunas cosas que están muy mal en términos relacionales. Lo que debería alentarse es que los desarrolladores comprendan conceptos básicos como el modelo relacional en lugar de centrarse en lenguajes como SQL. Si más personas entendieran los conceptos básicos, entonces quizás SQL ya hubiera sido reemplazado por cosas mejores.
nvogel
9

moda :

algo que se vuelve muy popular en poco tiempo, y luego se olvida a la misma velocidad ".

Los RDBMS han existido durante siglos (al menos en términos de CS), por lo que quien dijo eso tenía la intención de decir algo más o no tiene idea.

l0b0
fuente
2
Quise decir algo más, mira mi respuesta a continuación.
maple_shaft
3
Probablemente hubiera sido mejor usar un diccionario real en lugar de urbandictionary.
Aaronaught
Aaronaught - ¿Qué tal Princeton's? "Un interés seguido con un celo exagerado". wordnetweb.princeton.edu/perl/…
Shauna
3

La alternativa a RDBMS no es solo un archivo plano. Cuando estaba en la escuela, OODBMS era lo nuevo y mi profesor tenía razón cuando lo calificó como una moda pasajera. Debes echar un vistazo a los diferentes modelos y observar las tendencias. He visto una creciente dependencia de OLAP y estaría dispuesto a apostar a que un nuevo sistema multidimensional que puede procesar datos más rápido está a la vuelta de la esquina.

Christopher Bibbs
fuente
¿Debería "estar dispuesto a ser un nuevo" => "dispuesto a apostar un nuevo"?
Binary Worrier
Ah, por cierto, usé el archivo plano como ejemplo. Ese es un buen enlace a los modelos DB.
StuperUser
@Binary Sí y editado para reflejarlo.
Christopher Bibbs
3

El problema es que muchos desarrolladores equiparan erróneamente RDBMS con SQL. SQL es un lenguaje realmente horrible para los estándares modernos. Es una implementación defectuosa e incompleta de un lenguaje "relacional" (SQL no es realmente relacional en absoluto y eso es parte del problema) que no ha evolucionado mucho en los últimos 30 años. Muchas personas que usan SQL apenas entienden el modelo relacional; todo lo que saben es SQL y, por lo tanto, suponen que el modelo relacional es la causa de su frustración.

nvogel
fuente
1

Sin contexto, es difícil determinar quién / por qué la afirmación de que los RDBM se consideran una moda pasajera.

En el corto a mediano plazo (5-10 años) y creo que incluso más tiempo eso no va a desaparecer. Un RDBM proporciona un método eficiente y efectivo para almacenar, procesar y recuperar datos relacionales, que es lo que la mayoría de las empresas tienen: clientes / pedidos, pasajeros / boletos, etc.

Existen otras alternativas, como NoSQL, que parecen estar creciendo en popularidad con el proyecto de código abierto.

Como OLAP, estas son bases de datos especializadas (en mi opinión) diseñadas para permitir que una empresa brinde información estadística oportuna y útil sobre una empresa y ejecute escenarios de "qué pasaría si" en los datos actuales. Por supuesto, en casi todos los casos, estos datos actuales provienen de un RDMB y fueron manipulados y luego insertados en la base de datos OLAP.

armitage
fuente
1

Las bases de datos relacionales son una moda en el mismo sentido que la microcomputación es una moda.

Jeremy
fuente
1

La respuesta simple es no. RDBMS no es una moda pasajera. Cuando lea algo en un sitio web para LinqPad, tenga en cuenta que su propósito es vender licencias para su producto.

Tundey
fuente
La pregunta es por qué se consideraría una moda, no si lo es o la retórica promocional de LinqPad. El estándar LinqPad es gratis.
StuperUser
La pregunta vino de él leyendo la retórica promocional de LinqPad. Solo señalando que debería tomarlo con un grano de sal.
Tundey
No, no lo hizo, vino del comentario de maple_shaft en programmers.stackexchange.com/questions/89994/… . La copia de LinqPad fue tomada con una pizca de sal, pero tengo curiosidad por saber si los desarrolladores están de acuerdo con alguna de las declaraciones.
StuperUser
Sí, la retórica promocional de LinqPad era que escribir SQL para consultar un RDBMS era anticuado, no que los propios RDBMS fueran anticuados. Están vendiendo una mejor manera de usar un RDBMS, no una alternativa a ellos.
Carson63000
@StuperUser y Carson63000: Lo tengo. Mi error.
Tundey
0

La moda no es la palabra correcta, ya que han estado durante mucho, mucho tiempo. Creo que podría comenzar a argumentar que la tecnología es muy antigua y que podría ser el momento de proponer lo siguiente: quizás las arquitecturas NoSQL

bigtang
fuente
0

El Wiki Def. de Fad , define el término "moda" de la siguiente manera: Una moda es cualquier forma de comportamiento que se desarrolla entre una gran población y se sigue colectivamente con entusiasmo durante un período, generalmente como resultado de que el comportamiento se percibe como novedoso de alguna manera. Se dice que una moda se "pone de moda" cuando el número de personas que la adoptan comienza a aumentar rápidamente. El comportamiento normalmente se desvanecerá rápidamente una vez que desaparezca la percepción de novedad.

Dado que los seguidores de RDBMS no se desvanecieron rápidamente, y no está a punto de desaparecer en los próximos años (gracias a la gran cantidad de aplicaciones de producción que lo usan), no podemos decir que sea una moda. De hecho, los conceptos centrales de RDBMS se mantuvieron bastante estables donde muchas de las otras tecnologías cambiaron (y aún están cambiando) dramáticamente.

El concepto de RDBMS (y su vehículo principal, SQL) representa un paso en la tecnología que, como muchos otros, puede ser reemplazado por otros mejores, eso es todo.

Ninguna posibilidad
fuente