@Gusaiello, las ventajas de las BBDD son las siguientes:
- Facilidad de manejo: tratas con una capa de abstracción mediante el lenguaje SQL (una gran parte del cual es común para todas las BBDD relacionales). Y lo que dices es qué es lo que quieres y no cómo. Es el motor de la BBDD quién se ocupa de cómo hacerlo
- Reducción de líneas de código: puesto que dices qué es lo que quieres y no cómo obtenerlo, generalmente las líneas de código son inferiores en comparación con el tratamiento de ficheros. Sobre todo teniendo en cuenta las múltiples condiciones (filtros) que se le aplican a los datos. En SQL se pueden codificar cosas bastante complejas como un programa entero con bastantes menos líneas de código.
- Añadir o quitar columnas es dinámico, no necesitas reemplazar el fichero, tratar con FILLERs y demás historias, el motor lo hace por ti
- El motor crea unos metadatos que le sirven para mejorar el acceso y la recuperación de los datos, proporcionando (generalmente) el mejor rendimiento posible para cada filtro de condiciones
- Transaccionalidad - posibilidad de confirmar las modificaciones o anular todo el trabajo si algo falla por el medio, (concepto de Transacción = todo o nada).
Las desventajas son:
- Suelen ser de pago
- Instalación de componentes adicionales, su mantenimiento (el único motor portable que se me viene a la cabeza es SQLite, que no se usa con grandes cantidades de datos porque no rinde lo suficiente)
- Necesidad de adquirir al menos ciertos conocimientos de DBA (administración).
- Evidentemente una capa de abstracción (el motor) reduce el rendimiento, aunque hoy en día, con los avances del hardware y mejoras de algoritmos del motor, la verdad es que es irrelevante (salvo algunos casos Batch).
Posiblemente se me escapa algo, dejo a los compañeros completar la información.