Introducción
Las bases de datos son componentes esenciales para muchas aplicaciones y herramientas modernas. Como usuario, puede interactuar con docenas o cientos de bases de datos cada día mientras visita sitios web, usa aplicaciones en su teléfono o compra artículos en la tienda de comestibles. Como desarrollador, las bases de datos son el componente central que se utiliza para conservar los datos más allá de la vida útil de su aplicación. Pero, ¿qué son exactamente las bases de datos y por qué son tan comunes?
En este artículo, repasaremos:
- qué son las bases de datos
- cómo las usan las personas y las aplicaciones para realizar un seguimiento de varios tipos de datos
- qué funciones ofrecen las bases de datos
- qué tipos de garantías ofrecen
- cómo se comparan con otros métodos de almacenamiento de datos
Finalmente, discutiremos cómo las aplicaciones dependen de las bases de datos para almacenar y recuperar datos para habilitar una funcionalidad compleja.
¿Qué son las bases de datos?
Bases de datos son estructuras lógicas utilizadas para organizar y almacenar datos para su posterior procesamiento, recuperación o evaluación. En el contexto de las computadoras, estas estructuras casi siempre son administradas por una aplicación llamada sistema de administración de bases de datos. o SGBD . El DBMS administra archivos dedicados en el disco de la computadora y presenta una interfaz lógica para usuarios y aplicaciones.
Los sistemas de gestión de bases de datos suelen estar diseñados para organizar los datos de acuerdo con un patrón específico. Estos patrones, llamados tipos de base de datos o modelos de bases de datos, son los fundamentos lógicos y estructurales que determinan cómo se almacenan y administran los datos individuales. Hay muchos tipos de bases de datos diferentes, cada uno con sus propias ventajas y limitaciones. El modelo relacional , que organiza los datos en tablas, filas y columnas con referencias cruzadas, a menudo se considera el paradigma predeterminado.
Los DBMS pueden hacer que las bases de datos que gobiernan sean accesibles a través de una variedad de medios, incluidos clientes de línea de comandos, API, bibliotecas de programación e interfaces administrativas. A través de estos canales, los datos pueden incorporarse al sistema, organizarse según sea necesario y devolverse según se solicite.
Persistencia de datos frente a almacenamiento efímero
Las bases de datos almacenan datos en el disco o en la memoria.
Generalmente se dice que el almacenamiento en disco es persistente , lo que significa que los datos se guardan de manera confiable para más adelante, incluso si la aplicación de la base de datos o la computadora misma se reinicia.
Por el contrario, se dice que el almacenamiento en memoria es efímero o volátil . El almacenamiento efímero no sobrevive al apagado de la aplicación o del sistema. La ventaja de las bases de datos en memoria es que suelen ser muy rápidas.
En la práctica, muchos entornos utilizarán una combinación de estos dos tipos de sistemas para obtener las ventajas de cada tipo. Para los sistemas que aceptan nuevas escrituras en la capa efímera, esto se puede lograr guardando periódicamente los datos efímeros en el disco. Otros sistemas utilizan copias en memoria de solo lectura de datos persistentes para acelerar el acceso de lectura. Estos sistemas pueden recargar los datos del almacenamiento de respaldo en cualquier momento para actualizar sus datos.
Tipo de almacenamiento de respaldo | ¿Los datos sobreviven a los reinicios? | Ventajas | Ejemplos |
---|---|---|---|
En disco | Sí | Duración de los datos | MySQL |
En memoria | No | Velocidad operativa | memcached |
Interactuar con bases de datos para administrar sus datos
Si bien el sistema de base de datos se ocupa de cómo almacenar los datos en el disco o en la memoria, también proporciona una interfaz para usuarios o aplicaciones. Las interfaces para la base de datos deben poder representar las operaciones que pueden realizar partes externas y deben poder representar todos los tipos de datos que admite el sistema.
Según Wikipedia, las bases de datos suelen permitir los siguientes cuatro tipos de interacciones:
- Definición de datos :Crear, modificar y eliminar definiciones de la estructura de los datos. Estas operaciones cambian las propiedades que afectan la forma en que la base de datos aceptará y almacenará datos. Esto es más importante en algunos tipos de bases de datos que en otros.
- Actualizar :Inserte, modifique y elimine datos dentro de la base de datos. Estas operaciones cambian los datos reales que se están administrando.
- Recuperación :Proporcionar acceso a los datos almacenados. Los datos se pueden recuperar tal cual o, a menudo, se pueden filtrar o transformar para darles un formato más útil. Muchos sistemas de bases de datos comprenden lenguajes de consulta enriquecidos para lograr esto.
- Administración :Otras tareas como la gestión de usuarios, la seguridad, la supervisión del rendimiento, etc. que son necesarias pero que no están directamente relacionadas con los datos en sí.
Repasemos esto con un poco más de detalle a continuación.
Las definiciones de datos controlan la forma y estructura de los datos dentro del sistema
Crear y controlar la estructura que tomarán sus datos dentro de la base de datos es una parte importante de la administración de la base de datos. Esto puede ayudarlo a controlar la forma o estructura de sus datos antes de incorporarlos al sistema. También le permite configurar restricciones para asegurarse de que sus datos se adhieran a ciertos parámetros.
En las bases de datos que operan con datos muy regulares, como las bases de datos relacionales, estas definiciones a menudo se conocen como el esquema de la base de datos. . Un esquema de base de datos es un esquema estricto de cómo deben formatearse los datos para que una base de datos en particular los acepte. Esto cubre los campos específicos que deben estar presentes en los registros individuales, así como los requisitos para valores como el tipo de datos, la longitud del campo, los valores mínimos o máximos, etc. Un esquema de base de datos es una de las herramientas más importantes que el propietario de la base de datos tiene para influir y controlar los datos que serán almacenados en el sistema.
Los sistemas de gestión de bases de datos que valoran la flexibilidad por encima de la regularidad suelen denominarse bases de datos sin esquema. . Si bien esto parece implicar que los datos almacenados en estas bases de datos no tienen estructura, por lo general no es así. En cambio, la estructura de la base de datos está determinada por los propios datos y el conocimiento y la relación de la aplicación con los datos. Por lo general, la base de datos aún se adhiere a una estructura, pero el sistema de administración de la base de datos está menos involucrado en hacer cumplir las restricciones. Esta es una opción de diseño que tiene ventajas y desventajas según la situación.
Actualizaciones de datos para ingerir, modificar y eliminar datos del sistema
Las actualizaciones de datos incluyen cualquier operación que:
- Introduce nuevos datos en el sistema
- Modifica las entradas existentes
- Elimina entradas de la base de datos
Estas capacidades son esenciales para cualquier base de datos y, en muchos casos, constituyen la mayoría de las acciones que procesa el sistema de base de datos. Estos tipos de actividades (operaciones que provocan cambios en los datos del sistema) se conocen colectivamente como escribir. operaciones.
Las acciones de escritura son importantes para cualquier fuente de datos que cambiará con el tiempo. Incluso la eliminación de datos, una acción destructiva, se considera una operación de escritura, ya que modifica los datos dentro del sistema.
Dado que las operaciones de escritura pueden cambiar los datos, estas acciones son potencialmente peligrosas. La mayoría de los administradores de bases de datos configuran sus sistemas para restringir las operaciones de escritura a ciertos procesos de aplicaciones para minimizar la posibilidad de manipulación accidental o malintencionada de datos. Por ejemplo, el análisis de datos, que utiliza datos existentes para responder preguntas sobre el rendimiento de un sitio web o el comportamiento de los visitantes, solo requiere permiso de lectura. Por otro lado, la parte de la aplicación que registra los pedidos de un usuario debe poder escribir nuevos datos en la base de datos.
Recuperar datos para extraer información o responder preguntas específicas
El almacenamiento de datos no es muy útil a menos que tenga una forma de recuperarlos cuando los necesite. Dado que la devolución de datos no afecta a la información almacenada actualmente en la base de datos, estas acciones se denominan leer operaciones. Las operaciones de lectura son la forma principal de recopilar datos ya almacenados en una base de datos.
Los sistemas de administración de bases de datos casi siempre tienen una forma sencilla de acceder a los datos mediante un identificador único, a menudo llamado clave principal. . Esto permite el acceso a cualquier entrada proporcionando la clave.
Muchos sistemas también tienen métodos sofisticados para consultar la base de datos para devolver conjuntos de datos que coincidan con criterios específicos o devolver información parcial sobre las entradas. Este tipo de flexibilidad de consulta ayuda al sistema de administración de bases de datos a operar como un procesador de datos además de sus capacidades básicas de almacenamiento de datos. Al desarrollar consultas específicas, los usuarios pueden solicitar al sistema de base de datos que devuelva solo la información que necesitan. Esta característica se usa a menudo junto con operaciones de escritura para ubicar y modificar un registro específico por sus propiedades.
Administrar el sistema de base de datos para mantener todo funcionando sin problemas
La categoría final de acciones que las bases de datos a menudo admiten son las funciones administrativas. Esta es una clase amplia y general de acciones que ayuda a respaldar el entorno de la base de datos sin influir directamente en los datos en sí. Algunos artículos que podrían encajar en este grupo incluyen:
- Gestión de usuarios, permisos, autenticación y autorización
- Configuración y mantenimiento de copias de seguridad
- Configurar el medio de respaldo para el almacenamiento
- Administrar la replicación y otras consideraciones de escala
- Proporcionar opciones de recuperación en línea y fuera de línea
Este conjunto de acciones se alinea con las preocupaciones administrativas básicas comunes a cualquier aplicación moderna.
Es posible que las operaciones administrativas no sean fundamentales para la funcionalidad central de administración de datos, pero estas capacidades a menudo distinguen a los sistemas de administración de bases de datos similares. Ser capaz de realizar copias de seguridad y restaurar datos fácilmente, implementar una gestión de usuarios que se conecte a los sistemas existentes o escalar su base de datos para satisfacer la demanda son características esenciales para operar en producción. Las bases de datos que no prestan atención a estas áreas a menudo tienen dificultades para lograr la adopción en entornos del mundo real.
¿Qué responsabilidades tienen las bases de datos?
Dada la descripción anterior, ¿cómo podemos generalizar las responsabilidades principales que tienen las bases de datos? La respuesta depende mucho del tipo de base de datos que se utilice y de los requisitos de sus aplicaciones. Aun así, hay un conjunto común de responsabilidades que todas las bases de datos buscan proporcionar.
Protección de la integridad de los datos mediante registros y reconstituciones fieles
La integridad de los datos es un requisito fundamental de un sistema de base de datos, independientemente de su propósito o diseño. Los datos cargados en la base de datos deben poder recuperarse de manera confiable sin modificaciones, manipulaciones o borrados inesperados. Esto requiere métodos confiables para cargar y recuperar datos, así como serializar y deserializar los datos según sea necesario para almacenarlos en medios físicos.
Las bases de datos a menudo se basan en funciones para verificar los datos a medida que se escriben o recuperan, como la suma de verificación, o para protegerse contra problemas causados por cierres inesperados, utilizando técnicas como registros de escritura anticipada, por ejemplo. La integridad de los datos se vuelve más desafiante cuanto más distribuido está el almacenamiento de datos, ya que cada parte del sistema debe reflejar el estado actual deseado de cada elemento de datos. Esto a menudo se logra con requisitos más sólidos y respuestas de varios miembros cada vez que se modifican los datos en el sistema.
Ofrecer rendimiento que cumple los requisitos del entorno de implementación
Las bases de datos deben funcionar adecuadamente para ser útiles. Las características de rendimiento que necesita dependen en gran medida de las demandas particulares de sus aplicaciones. Cada entorno tiene un equilibrio único de solicitudes de lectura y escritura y tendrá que decidir qué significa un rendimiento aceptable para ambas categorías.
Las bases de datos generalmente son mejores para realizar ciertos tipos de operaciones que otras. Las características de rendimiento operativo a menudo son un reflejo del tipo de base de datos utilizada, el esquema o estructura de datos y la operación en sí. En algunos casos, funciones como indexación , que crea un almacén alternativo optimizado para el rendimiento de los datos de acceso común, puede proporcionar una recuperación más rápida de estos elementos. Otras veces, la base de datos puede no ser adecuada para los patrones de acceso que se solicitan. Esto es algo a tener en cuenta al decidir qué tipo de base de datos necesita.
Configurar procesos para permitir un acceso concurrente seguro
Si bien este no es un requisito estricto, en términos prácticos, las bases de datos deben permitir el acceso simultáneo. Esto significa que varias partes deben poder trabajar con la base de datos al mismo tiempo. Los registros deben ser legibles por cualquier cantidad de usuarios al mismo tiempo y deben poder escribirse cuando no estén bloqueados actualmente por otro usuario.
El acceso concurrente generalmente significa que la base de datos debe implementar otras características fundamentales como cuentas de usuario, un sistema de permisos y mecanismos de autenticación y autorización. También debe desarrollar estrategias para evitar que varios usuarios intenten manipular los mismos datos al mismo tiempo. El bloqueo de registros y las transacciones a menudo se implementan para abordar estas preocupaciones.
Recuperación de datos individualmente o en conjunto
Una de las responsabilidades fundamentales de una base de datos es la capacidad de recuperar datos a pedido. Las solicitudes pueden ser para piezas individuales de datos asociadas con un solo registro, o pueden involucrar la recuperación de los datos encontrados en muchos registros diferentes. Ambos casos deben ser posibles en la mayoría de los sistemas.
En la mayoría de las bases de datos, la propia base de datos proporciona cierto nivel de procesamiento de datos durante la recuperación. Estos pueden incluir los siguientes tipos de operaciones:
- Búsqueda por criterios
- Filtrado y cumplimiento de restricciones
- Extracción de campos específicos
- Promedio, clasificación, etc.
Estas opciones lo ayudan a articular los datos que desea y el formato que sería más útil.
Alternativas a las bases de datos
Antes de continuar, deberíamos analizar brevemente cuáles son sus opciones si no utiliza una base de datos.
La mayoría de los métodos que almacenan datos se pueden clasificar como una base de datos de algún tipo. Algunas excepciones incluyen lo siguiente.
Memoria local o sistemas de archivos temporales
A veces, las aplicaciones producen datos que no son útiles o que solo son relevantes durante la vida útil de la aplicación. En estos casos, es posible que desee mantener esos datos en la memoria o descargarlos en un sistema de archivos temporal, ya que no los necesitará una vez que cierre la aplicación. Para los casos en los que los datos nunca son útiles, es posible que desee desactivar la salida por completo o registrarla en /dev/null
.
Serializando datos de aplicaciones directamente al sistema de archivos local
Otro caso en el que una base de datos podría no ser necesaria es en el que una pequeña cantidad de datos puede serializarse y deserializarse directamente. Esto solo es práctico para pequeñas cantidades de datos con un patrón de uso predecible que no implica mucha simultaneidad, si es que la hay. Esto no escala bien, pero puede ser útil para ciertos casos, como generar información de registro local.
Almacenamiento de archivos-como-objetos directamente en disco o almacenamiento de objetos
A veces, los datos de las aplicaciones se pueden escribir directamente en el disco o en un almacén alternativo en lugar de almacenarlos en una base de datos. Por ejemplo, si los datos ya están organizados en un formato orientado a archivos, como una imagen o un archivo de audio, y no requieren metadatos adicionales, podría ser más fácil almacenarlos directamente en el disco o en un almacén de objetos dedicado.
¿Para que se utilizan las bases de datos?
Casi todas las aplicaciones y sitios web que no son completamente estáticos dependen de una base de datos en algún lugar de su entorno. El propósito principal de la base de datos a menudo dicta el tipo de base de datos utilizada, los datos almacenados y los patrones de acceso empleados. A menudo, se implementan múltiples sistemas de bases de datos para manejar diferentes tipos de datos con diferentes requisitos. Algunas bases de datos son lo suficientemente flexibles para cumplir múltiples roles según la naturaleza de los diferentes conjuntos de datos.
Echemos un vistazo a un ejemplo para analizar los puntos de contacto que una aplicación web típica puede tener con las bases de datos. Fingiremos que la aplicación contiene una tienda básica y vende artículos que rastrea en un inventario.
Almacenamiento y procesamiento de datos del sitio
Uno de los usos principales de las bases de datos es almacenar y procesar datos relacionados con el sitio. Estos elementos afectan cómo se organiza la información en el sitio y, en muchos casos, constituyen la mayor parte del "contenido" del sitio.
En la aplicación de ejemplo mencionada anteriormente, la base de datos completaría la mayor parte del contenido del sitio, incluida la información del producto, los detalles del inventario y la información del perfil del usuario. Esto significa que se consultará la base de datos o algún caché intermediario cada vez que se deba mostrar una lista de productos, una página de detalles de productos o un perfil de usuario.
Una base de datos también estaría involucrada al mostrar pedidos actuales y pasados, calcular el costo de envío y aplicar descuentos al verificar códigos de descuento o calcular recompensas de clientes frecuentes. Nuestro sitio de ejemplo usaría el sistema de base de datos para crear pedidos correctamente al combinar información de productos, inventario e información del usuario. La información compuesta que se registra en un pedido se almacenaría nuevamente en una base de datos para rastrear el procesamiento de pedidos, permitir devoluciones, cancelar o modificar pedidos, o permitir una mejor atención al cliente.
Analizar información para ayudar a tomar mejores decisiones
Las acciones de la última categoría estaban relacionadas con la funcionalidad básica del sitio web. Si bien estos son muy importantes para manejar los requisitos de datos de la capa de aplicación, no representan la imagen completa.
Una vez que su aplicación web comience a registrar usuarios y procesar pedidos, probablemente desee poder responder preguntas detalladas sobre cómo se venden los diferentes productos, quiénes son sus usuarios más rentables y qué factores influyen en sus ventas. Estas son preguntas analíticas que se pueden ejecutar en cualquier momento para recopilar información actualizada sobre las tendencias y el rendimiento de su organización.
Este tipo de operaciones a menudo se denominan inteligencia comercial. o análisis . Juntos, ayudan a las organizaciones a comprender lo que sucedió en el pasado y a realizar cambios informados. Los sistemas de bases de datos almacenan la mayoría de los datos utilizados durante estos procesos y deben proporcionar las herramientas adecuadas o capacidades de consulta para responder preguntas al respecto.
En nuestra aplicación de ejemplo, se pueden consultar las bases de datos para responder preguntas sobre tendencias de productos, números de registro de usuarios, a qué estados enviamos más o quiénes son nuestros usuarios más leales. Estas consultas relativamente básicas se pueden utilizar para redactar preguntas más complejas para comprender y controlar mejor los factores que influyen en el rendimiento del producto.
Gestionar la configuración del software
Algunos tipos de bases de datos se utilizan como depósitos de valores de configuración para otro software en la red. Estos sirven como una fuente central de la verdad para los valores de configuración en la red. A medida que se inician nuevos servicios, se configuran para comprobar los valores de claves específicas en la dirección de red de la base de datos de configuración. Esto le permite almacenar toda la información necesaria para iniciar los servicios en una ubicación.
Después del arranque, las aplicaciones se pueden configurar para observar las claves relacionadas con su configuración en busca de cambios. Si se detecta un cambio, la aplicación puede reconfigurarse para usar la nueva configuración. Este proceso a veces está orquestado por un proceso de administración que implementa los nuevos valores a lo largo del tiempo al reducir los servicios antiguos a medida que aparecen los nuevos servicios, cambiando la configuración activa a lo largo del tiempo para mantener la disponibilidad.
Nuestra aplicación podría usar este tipo de base de datos para almacenar datos de configuración persistentes para todo nuestro entorno de aplicación. Nuestros servidores de aplicaciones, servidores web, balanceadores de carga, colas de mensajería y más podrían configurarse para hacer referencia a una base de datos de configuración para obtener sus configuraciones de producción. Los desarrolladores de la aplicación podrían entonces modificar el comportamiento del entorno modificando los valores de configuración en una ubicación central.
Recopilación de registros, eventos y otros resultados
La ejecución de aplicaciones que atienden solicitudes de forma activa puede generar una gran cantidad de resultados. Esto incluye archivos de registro, eventos y otros resultados. Estos se pueden escribir en el disco o en alguna otra ubicación no administrada, pero esto limita su utilidad. La recopilación de este tipo de datos en una base de datos facilita el trabajo, la detección de patrones y el análisis de eventos cuando sucede algo inesperado o cuando necesita obtener más información sobre el rendimiento histórico.
Nuestra aplicación de ejemplo podría recopilar registros de cada uno de nuestros sistemas en una base de datos para facilitar el análisis. Esto puede ayudarnos a encontrar correlaciones entre eventos si intentamos analizar el origen de los problemas o comprender la salud de nuestro entorno en su conjunto.
Por separado, podríamos recopilar métricas producidas por nuestra infraestructura y código en una base de datos de series temporales , una base de datos diseñada específicamente para realizar un seguimiento de los valores a lo largo del tiempo. Esta base de datos podría usarse para impulsar herramientas de visualización y monitoreo en tiempo real para proporcionar a los equipos de desarrollo y operaciones de la aplicación información sobre el rendimiento, las tasas de error, etc.
¿Cómo funcionan diferentes roles con bases de datos?
Las bases de datos son fundamentales para el trabajo de muchos roles diferentes dentro de las organizaciones. En equipos más pequeños, una o unas pocas personas pueden ser responsables de llevar a cabo las funciones de varios roles. En las empresas más grandes, estas responsabilidades a menudo se segmentan en roles discretos realizados por personas o equipos dedicados.
Arquitectos de datos
Los arquitectos de datos son responsables de la macroestructura general de los sistemas de bases de datos, las interfaces que exponen a las aplicaciones y los equipos de desarrollo, y las tecnologías e infraestructura subyacentes necesarias para satisfacer las necesidades de datos de la organización.
Las personas en este rol generalmente deciden sobre el modelo de base de datos apropiado y la implementación que se usará para diferentes aplicaciones. Son responsables de implementar las decisiones de la base de datos mediante la investigación de opciones, la decisión sobre la tecnología, la integración con los sistemas existentes y el desarrollo de una estrategia de datos integral para la organización. Se ocupan de los sistemas de datos de manera integral y participan en la decisión y la implementación de modelos de datos para varios proyectos.
DBA (administradores de bases de datos)
Los administradores de bases de datos, o DBA, son personas responsables de mantener los sistemas de datos funcionando sin problemas. Son responsables de planificar nuevos sistemas de datos, instalar y configurar software, configurar sistemas de bases de datos para otras partes y administrar el rendimiento. También suelen ser responsables de proteger la base de datos, monitorearla en busca de problemas y hacer ajustes al sistema para optimizar los patrones de uso.
Los administradores de bases de datos son expertos tanto en sistemas de bases de datos individuales como en cómo integrarlos bien con el sistema operativo y el hardware subyacentes para maximizar el rendimiento. Trabajan extensamente con equipos que usan las bases de datos para ayudar a administrar la capacidad y el rendimiento y para ayudar a los equipos a solucionar problemas con el sistema de la base de datos.
Desarrolladores de aplicaciones
Los desarrolladores de aplicaciones interactúan con las bases de datos de muchas maneras diferentes. Desarrollan muchas de las aplicaciones que interactúan con la base de datos. Esto es muy importante porque estas son casi siempre las únicas aplicaciones que controlan cómo interactúan los usuarios o clientes individuales con los datos administrados por el sistema de base de datos. El rendimiento, la corrección y la confiabilidad son increíblemente importantes para los desarrolladores de aplicaciones.
Los desarrolladores administran las estructuras de datos asociadas con sus aplicaciones para conservar sus datos en el disco. Deben crear o utilizar mecanismos que puedan asignar sus datos de programación al sistema de base de datos para que los componentes puedan trabajar juntos en armonía. A medida que las aplicaciones cambian, deben mantener sincronizados los datos y las estructuras de datos dentro del sistema de base de datos. Hablaremos más sobre cómo los desarrolladores trabajan con las bases de datos más adelante en este artículo.
SRE (ingenieros de confiabilidad del sitio) y profesionales de operaciones
Los SRE (ingenieros de confiabilidad del sitio) y los profesionales de operaciones interactúan con los sistemas de bases de datos desde una perspectiva de configuración de aplicaciones e infraestructura. Pueden ser responsables de proporcionar capacidad adicional, respaldar los sistemas de bases de datos, garantizar que la configuración de la base de datos coincida con las pautas de la organización, monitorear el tiempo de actividad y administrar las copias de seguridad.
En muchos sentidos, estas personas tienen responsabilidades superpuestas con los administradores de bases de datos, pero no se centran únicamente en las bases de datos. El personal de operaciones se asegura de que los sistemas en los que confía el resto de la organización, incluidos los sistemas de bases de datos, funcionen de manera confiable y tengan un tiempo de inactividad mínimo.
Inteligencia de negocios y analistas de datos
Los departamentos de inteligencia comercial y los analistas de datos están interesados principalmente en los datos que ya están recopilados y disponibles en el sistema de base de datos. Trabajan para desarrollar conocimientos basados en tendencias y patrones dentro de los datos para que puedan predecir el rendimiento futuro, asesorar a la organización sobre posibles cambios y responder preguntas sobre los datos para otros departamentos como marketing y ventas.
Los analistas de datos generalmente pueden trabajar exclusivamente con acceso de solo lectura a los sistemas de datos. Las consultas que ejecutan a menudo tienen características de rendimiento muy diferentes a las utilizadas por las aplicaciones principales. Debido a esto, a menudo trabajan con réplicas o copias de bases de datos para que puedan realizar consultas agregadas de rendimiento intensivo y de ejecución prolongada que, de lo contrario, podrían afectar el uso de recursos del sistema de base de datos principal.
¿Cómo trabajo con bases de datos como desarrollador?
Entonces, ¿cómo trabaja realmente con bases de datos como desarrollador de aplicaciones? En un nivel básico, si su aplicación tiene que administrar y conservar el estado, trabajar con una base de datos será una parte importante de su código.
Traducir datos entre su aplicación y la base de datos
Deberá crear o utilizar una interfaz existente para comunicarse con la base de datos. Puede conectarse directamente a la base de datos utilizando funciones de red regulares, aprovechar bibliotecas simples o bibliotecas de programación de nivel superior (por ejemplo, generadores de consultas u ORM).
ORM , o mapeadores relacionales de objetos, son capas de mapeo que traducen las tablas que se encuentran en la base de datos relacional a las clases utilizadas dentro de los lenguajes de programación orientados a objetos y viceversa. Si bien esta traducción suele ser útil, nunca es perfecta. Desigualdad de impedancia objeto-relacional es un término usado para describir la fricción causada por la diferencia en cómo las bases de datos relacionales y los programas orientados a objetos estructuran los datos.
Aunque las bases de datos relacionales y la programación orientada a objetos describen dos opciones de diseño específicas, el problema de traducir entre la aplicación y la capa de la base de datos es generalizado y existe independientemente del tipo de base de datos o el paradigma de programación. Capa de abstracción de base de datos es un término más general para software con la responsabilidad de traducir entre estos dos contextos.
Mantener los cambios estructurales sincronizados con la base de datos
Un hecho importante que descubrirá a medida que desarrolle sus aplicaciones es que, dado que la base de datos existe fuera de su base de código, necesita una atención especial para hacer frente a los cambios en su estructura de datos. Este problema es más frecuente en algunos diseños de bases de datos que en otros.
El enfoque más común para sincronizar las estructuras de datos de su aplicación con su base de datos es un proceso llamado migración de base de datos. o migración de esquema (ambos conocidos coloquialmente simplemente como migración). La migración implica actualizar la estructura de su base de datos para reflejar los cambios a medida que evoluciona el modelo de datos de su aplicación. Estos suelen adoptar la forma de una serie de archivos, uno para cada evolución, que contienen las instrucciones necesarias para transformar la base de datos al nuevo formato.
Protegiendo el acceso a sus datos y desinfectando la entrada
Una responsabilidad importante cuando se trabaja con bases de datos como desarrollador es asegurarse de que sus aplicaciones no permitan el acceso no autorizado a los datos. La seguridad de los datos es un problema amplio y de múltiples niveles con muchas partes interesadas. En última instancia, algunas de las consideraciones de seguridad serán su deber de cuidar.
Su aplicación requerirá acceso privilegiado a su base de datos para realizar tareas de rutina. For safety, the database's authorization framework can help restrict the type of operations your application can perform. However, you need to ensure that your application restricts those operations appropriately. For example, if your application manages user profile data, you have to prevent a user from manipulating that access to view or edit other users' information.
One specific challenge is sanitizing user input. Sanitizing input means taking special precautions when operating on any data provided by a user. There is a long history of malicious actors using normal user input mechanisms to trick applications into revealing sensitive data. Crafting your applications to protect against these scenarios is an important skill.
Conclusion
Databases are an indispensable component in modern application development. Storing and controlling the stateful information related to your application and its environment is an important responsibility that requires reliability, performance, and flexibility.
Fortunately, there are many different database options designed to fulfil the requirements of different types of applications. In our next article, we'll take an in-depth look at the different types of databases available and how they can be used to match different types of application requirements.