Antes de definir o explicar qué son las bases de datos o incluso de discutir si es importante para el desarrollo de software, hagamos una simple pregunta: ¿Podemos crear una aplicación de software sin utilizar un sistema de base de datos?
Para facilitar la respuesta a esta pregunta, tomemos el sencillo ejemplo. Un directorio telefónico en línea que puede desarrollarse utilizando un lenguaje de programación de secuencias de comandos web como PHP.
La aplicación es utilizada normalmente por los visitantes en línea para buscar números de teléfono. Escribiendo el apellido de la persona así como la dirección.
En la siguiente imagen se muestra un ejemplo de la guía telefónica en línea para buscar números de teléfono:
La cuestión que se plantea es dónde y cómo podemos:
- Almacenar la lista de nombres de personas,
- Almacenar sus números de teléfono de forma permanente,
- Recuperarlos fácilmente.
En otras palabras, cómo y dónde almacenar los datos para que la aplicación web pueda acceder a ellos.
Archivos CSV
Trivialmente, los datos nunca se almacenarían dentro del código de la aplicación. Esto debido a que cualquier modificación necesaria para los datos requiere alterar el código. Por lo tanto, exacerbar la compilación y el despliegue de nuevo, lo cual es un proceso caro y engorroso.
La solución más sencilla sería almacenar los datos dentro de un archivo de texto normal en el que formateamos los datos utilizando una estructura simple predefinida.
Por ejemplo, almacenamos cada registro de una nueva persona en una nueva línea, mientras que los valores de un registro que incluya el nombre, el apellido y el número de teléfono deben estar separados por una coma “,”.
Esto es lo que llamamos un archivo CSV “valores separados por comas”, como se ilustra en la siguiente figura, que muestra una arquitectura sencilla para el directorio telefónico.
Hay una interfaz web escrita normalmente en HTML. Esta interfaz tiene un sencillo formulario para buscar a una persona por su nombre. Al hacer clic en el “botón de búsqueda” dentro del formulario, los datos se transmiten al servidor web para su procesamiento.
El servidor se encarga de la búsqueda y la recuperación de los datos en el archivo de texto CSV.
El siguiente listado muestra un código simple escrito en lenguaje de programación PHP para una función que busca en un archivo de texto llamado mydata.csv un registro de persona por un nombre dado.
Este código contiene menos de 10 líneas, lo cual es suficiente para un directorio telefónico básico.
El objetivo de este código es apuntar a la simplicidad de acceso y búsqueda de archivos de datos para el desarrollo de la aplicación.
Veamos el código
Las líneas de código se explican como sigue:
- Línea 2: declaración de una función llamada searchDirectory que toma un parámetro llamado $name$. Se envía a través del formulario HTML.
- Línea 3: Inicialización de un array llamado results para almacenar los resultados.
- Línea 4: Abrir el archivo CSV mydata.csv en un array llamado people. Cada línea, es decir, cada registro del archivo, se almacena como un elemento dentro de la matriz.
- Línea 5: Bucle For para iterar a través de todos los registros. Esto dentro del archivo CSV.
- Línea 6: Dividir una sola línea, que es un registro de persona. En elementos separados que se almacenan en un array llamado $person$.
- Línea 7: Comparando si la cadena nombre está contenida con el nombre de la persona.
- Línea 8: Hay una coincidencia que se añade dentro de los resultados de retorno.
A partir del ejemplo ilustrado anteriormente, resulta obvio que se pueden desarrollar aplicaciones de software sin un sistema de base de datos sofisticado o avanzado mediante el uso de simples archivos basados en texto.
Sin embargo, pueden surgir una serie de preguntas y problemas básicos al utilizar este enfoque.
Por ejemplo:
- ¿Qué pasa si queremos permitir la gestión concurrente o distribuida por parte de diferentes usuarios que se conectan desde ubicaciones remotas diferentes a la instalación de almacenamiento o a los archivos?
- ¿Y si queremos conceder diferentes derechos de acceso o roles a diferentes usuarios? Por ejemplo, concedemos sólo lectura a los invitados y lectura-escritura a los administradores.
- ¿Qué pasa con la escalabilidad y la disponibilidad del sistema cuando se añaden más de un millón de registros en los que el rendimiento de la búsqueda se resiente en gran medida, ya que exploraría un gran número de líneas dentro del archivo?
Otros problemas y retos críticos que deben abordarse en las aplicaciones de software que utilizan archivos planos para el almacenamiento son:
- Gestión de archivos,
- Concurrencia y el acceso múltiple,
- Búsqueda avanzada o las operaciones,
- Escalabilidad
- Adición de nuevas funcionalidades
- Comprobación de la integridad
- Mantenimiento y las copias de seguridad
- Seguridad
Entonces
¿Podemos desarrollar una aplicación de software sin el uso de un sistema de base de datos avanzado?. Sí, se puede hacer fácilmente como se ha mostrado anteriormente. Pero la vida sería difícil y dura para abordar un gran número de cuestiones y funcionalidades para el sistema.
Esto significa la importancia de utilizar sistemas de bases de datos y su papel crítico para la aplicación de software, ya que se inventaron principalmente para hacer frente a las limitaciones encontradas cuando se utilizan archivos como medio de almacenamiento directo.
Para motivar aún más el aprendizaje de las bases de datos en términos de dinero y potencial de trabajo, un análisis comparativo del salario medio de diferentes puestos de trabajo en los Estados Unidos de América, ha demostrado que el salario medio de un administrador de bases de datos Oracle supera el salario medio de un programador Java, un investigador e incluso un dentista.
La función de un administrador de bases de datos suele ser garantizar el buen funcionamiento de un sistema de bases de datos existente, incluido el mantenimiento y el refuerzo de la seguridad del sistema.
Otras funciones relacionadas con las bases de datos son las de diseñador, analista y desarrollador de bases de datos.