¿Cuáles son las ventajas y desventajas de usar un RDBMS para una aplicación web sobre archivos planos?

Historia corta (no debe tomarse demasiado en serio):

Algunas personas simplemente ponen sus llaves, billeteras, maquillaje, letras, lápices, más maquillaje, cambio y todo lo demás en una bolsa enorme, y pasan horas para encontrar cosas cuando necesitamos tomar el tren. Cosas, que podrían haber puesto en ese otro bolso. Llamemos a este bolso el archivo de texto

Me gusta estructurar mis cosas. Mi índice dice: billetera en el bolsillo trasero, llave en el bolsillo delantero derecho, teléfono móvil en el bolsillo delantero izquierdo, anteojos en la nariz. Llamemos a esta estructura RDBMS .

😉

Larga historia:

Esta pregunta de Quora es realmente interesante en este contexto: ¿por qué las tecnologías de bases de datos relacionales ganaron fuerza? ¿Cuáles fueron las tecnologías históricas competidoras?

Esencialmente, había habido una fuerza impulsora más importante en ese momento, empujando a RDBMS por delante de todos los modelos de almacenamiento alternativos: álgebra relacional en sí, diseñada principalmente por Edgar F. Codd, un brillante científico informático de su época.

Los populares sistemas de administración de bases de datos relacionales no solo se encargaron de administrar datos, estructuras de datos, modelos físicos, transacciones, modelos de consulta, un poderoso lenguaje de consulta (implementado como SQL, jOOQ, JPQL, LINQ to SQL y otros dialectos / API), intergrity referencial, gestión de restricciones, etc., etc., también se basaron en un modelo conceptual muy poderoso y reglas de implementación (las 12 reglas de Codd). El modelo de datos relacionales puede modelar fácilmente casi todas las reglas de negocio.

Entonces, por supuesto, puede escribir su propio sistema de gestión de datos. O utiliza uno probado que hace millones de cosas por usted de acuerdo con reglas muy probadas concebidas por personas muy brillantes que se hicieron muy ricas con sus sistemas.

Interpretaré que esta pregunta significa: ¿cuál es la ventaja de usar un sistema de base de datos en lugar de solo archivos ordinarios?

Los sistemas Databse ofrecen muchos beneficios. Uno de los más obvios es la indexación. Los sistemas de bases de datos están diseñados para que pueda obtener un registro específico entre millones en poco tiempo. No puede hacer eso con archivos planos a menos que haya programado dicho índice usted mismo.

Además, no olvidemos el lenguaje de consulta. Todos los sistemas de bases de datos tienen algún tipo de lenguaje de consulta, que no necesariamente tiene que ser SQL, pero aún así ofrecen alguna forma de escribir consultas complejas para encontrar registros específicos entre los millones de registros en la base de datos.

Otro beneficio importante de las bases de datos es que garantizan la integridad de los datos. Proporcionan mecanismos para evitar que los datos se corrompan. Por ejemplo, las transacciones aseguran que escriba todos los cambios deseados o ninguno.

Y hay muchas más funciones que proporciona un sistema de base de datos, tales como: copias de seguridad, registros, manejo de concurrencia, seguridad (otorgar permiso para ciertos datos a ciertos usuarios), trabajar en datos distribuidos, etc.

Y, por supuesto, es posible escribir todas estas cosas para trabajar con archivos planos, pero ¿cuál sería el punto de hacerlo? Básicamente, estaría escribiendo su propio sistema de administración de bases de datos, y ¿por qué haría eso cuando ya existen muy buenos?

Para mí, lo más importante que proporciona un RDBMS (por ejemplo, MySQL) es el bloqueo a nivel de fila para el acceso a datos, por lo que puede permitir que decenas o cientos de usuarios concurrentes lean y escriban los mismos datos.

Si usara archivos planos, tendría que bloquear el archivo completo cada vez que un cliente quisiera publicar un cambio, y esto dificultaría el acceso concurrente y la escalabilidad.

Hay muchas otras ventajas que otras respuestas han mencionado, como los privilegios de autenticación y acceso, indexación y partición, protocolo remoto, lenguaje de consulta, etc.