Una base de datos es una abstracción sobre el sistema de archivos de un sistema operativo que facilita a los desarrolladores la construcción de aplicaciones que crean, leen, actualizan y eliminan datos persistentes.
- ¿Por qué son necesarias las bases de datos?
- Bases de datos relacionales
- Bases de datos más comunes para aplicaciones web de Python
- Base de datos PostgreSQL
- Base de datos MySQL
- Conexión a una base de datos con Python
- Mapeo objeto-relacional
- Servicios de bases de datos de terceros
- Recursos de SQL
- Recursos generales sobre bases de datos
- Lista de aprendizaje de bases de datos
¿Por qué son necesarias las bases de datos?
A un alto nivel, las aplicaciones web almacenan datos y los presentan a los usuarios de una manera útil. Por ejemplo, Google almacena datos sobre las carreteras y proporciona indicaciones para ir de un lugar a otro conduciendo a través de la aplicaciónMaps. Las direcciones de conducción son posibles porque los datos se almacenan en un formato estructurado.
Las bases de datos hacen que el almacenamiento estructurado sea fiable y rápido. También le dan un marco mental de cómo los datos deben ser guardados y recuperados en lugar de tener que averiguar qué hacer con los datos cada vez que se construye una nueva aplicación.
Bases de datos relacionales
La abstracción de almacenamiento de bases de datos más comúnmente utilizada en el desarrollo web de Python son conjuntos de tablas relacionales. Las abstracciones de almacenamiento alternativas se explican en la página de NoSQL.
Las bases de datos relacionales almacenan los datos en una serie de tablas. Las interconexiones entre las tablas se especifican como claves externas. Una clave externa es una referencia única de una fila en una tabla relacional a otra fila en una tabla, que puede ser la misma tabla, pero es más comúnmente una tabla diferente.
Las implementaciones de almacenamiento de bases de datos varían en complejidad. SQLite, una base de datos incluida con Python, crea un único archivo para todos los datos por base de datos.Otras bases de datos como PostgreSQL, MySQL, Oracle y Microsoft SQL Server tienen esquemas de persistencia más complicados a la vez que ofrecen características avanzadas adicionalesque son útiles para el almacenamiento de datos de aplicaciones web. Estas características avanzadas incluyen, pero no se limitan a:
- replicación de datos entre una base de datos maestra y una o más instancias esclavas de sólo lectura
- tipos de columna avanzados que pueden almacenar eficientemente datos semiestructurados como JavaScript Object Notation (JSON)
- sharding, que permite el escalado horizontal de múltiples bases de datos que sirven cada una de ellas como instancias de lectura-escritura a costa de la latencia en la consistencia de los datos
- supervisión, estadísticas y otra información útil en tiempo de ejecución para los esquemas y tablas de la base de datos
Típicamente las aplicaciones web comienzan con una única instancia de base de datos como PostgreSQL con un esquema sencillo. Con el tiempo, el esquema de la base de datos evoluciona hacia una estructura más compleja utilizando migraciones de esquema y características avanzadas como la replicación, la fragmentación y la supervisión se vuelven más útiles a medida que aumenta la utilización de la base de datos en función de las necesidades de los usuarios de la aplicación.
Bases de datos más comunes para aplicaciones web de Python
PostgreSQL yMySQL son dos de las bases de datos de código abierto más comunes para almacenar los datos de las aplicaciones web de Python.
SQLite es una base de datos que se almacena en un único archivo en el disco. SQLite está integrado en Python pero sólo está construido para el acceso por una sola conexión a la vez. Por lo tanto es muy recomendable no ejecutar una aplicación web de producción con SQLite.
Base de datos PostgreSQL
PostgreSQL es la base de datos relacional recomendada para trabajar con aplicaciones web de Python. El conjunto de características de PostgreSQL, el desarrollo activo y la estabilidad contribuyen a su uso como el backend para millones de aplicaciones que viven en la web hoy en día.
Aprenda más sobre el uso de PostgreSQL con Python en la página de PostgreSQL.
Base de datos MySQL
MySQL es otra implementación de base de datos de código abierto viable para las aplicaciones de Python. MySQL tiene una curva de aprendizaje inicial un poco más fácil quePostgreSQL pero no es tan rica en características.
Averigua sobre las aplicaciones de Python con un respaldo de MySQL en la página dedicada aMySQL.
Conexión a una base de datos con Python
Para trabajar con una base de datos relacional usando Python, necesitas usar una biblioteca de código. Las bibliotecas más comunes para bases de datos relacionales son:
-
psycopg2(código fuente)para PostgreSQL.
-
MySQLdb(código fuente)para MySQL. Tenga en cuenta que el desarrollo de este controlador está prácticamente congelado, por lo que es aconsejable evaluar controladores alternativos si utiliza MySQL como backend.
-
cx_Oracle para Oracle Database (código fuente).Oracle trasladó el código fuente del controlador de iropen de SourceForge a GitHub en 2017.
La compatibilidad con SQLite está integrada en Python 2.7+ y, por lo tanto, no es necesaria una biblioteca independiente. Basta con «importar sqlite3» para empezar a interactuar con la base de datos basada en un único archivo.
Mapeo objeto-relacional
Los mapeadores objeto-relacionales (ORM) permiten a los desarrolladores acceder a los datos desde un backend escribiendo código Python en lugar de consultas SQL. Cada marco de aplicación web maneja la integración de ORMs de manera diferente. Hay una página entera sobre mapeo objeto-relacional (ORMs) que deberías leer para tener una idea de este tema.
Servicios de bases de datos de terceros
Numerosas compañías ejecutan servidores de bases de datos escalables como un servicio alojado.Las bases de datos alojadas suelen ofrecer copias de seguridad y recuperación automatizadas, configuraciones de seguridad más estrictas y un fácil escalado vertical, dependiendo del proveedor.
-
El servicio de bases de datos relacionales (RDS) de Amazon ofrece instancias preconfiguradas de MySQL y PostgreSQL. Las instancias pueden escalarse a configuraciones más grandes o más pequeñas en función de las necesidades de almacenamiento y rendimiento.
-
Google Cloud SQL es un servicio con instancias de MySQL gestionadas, con copias de seguridad, replicadas y con parches automáticos. CloudSQL se integra con Google App Engine, pero también se puede utilizar de forma independiente.
-
BitCan proporciona bases de datos alojadas de MySQL y MongoDB con amplios servicios de copia de seguridad.
-
ElephantSQL es una empresa de software como servicio que aloja bases de datos PostgreSQL y se encarga de la configuración del servidor, las copias de seguridad y las conexiones de datos sobre las instancias de Amazon Web Services.
Recursos de SQL
Puede que planee utilizar un mapeador objeto-relacional (ORM) como su principal forma de interactuar con una base de datos, pero aún así debe aprender los fundamentos de SQL para crear esquemas y entender el código SQL generado por el ORM. Los siguientes recursos pueden ayudarle a ponerse al día en SQL si nunca lo ha utilizado previamente.
-
Select Star SQL es un libro interactivo para aprender SQL. Muy recomendable incluso si cree que sólo va a trabajar con un mapa objeto-relacional en sus proyectos, porque nunca se sabe cuándo tendrá que recurrir a SQL para mejorar el lento rendimiento de una consulta generada.
-
Una guía para principiantes de SQL hace un buen trabajo explicando las principales palabras clave utilizadas en las sentencias SQL, como
SELECT
,WHERE
,FROM
,UPDATE
yDELETE
. -
Tutorial de SQL enseña los fundamentos de SQL que se pueden utilizar en todas las principales implementaciones de bases de datos relacionales.
-
La vida de una consulta SQLexplica lo que sucede tanto conceptual como técnicamente dentro de una base de datos cuando se ejecuta una consulta SQL. El autor utiliza PostgreSQL como base de datos de ejemplo y la sintaxis de SQL a lo largo del post.
-
Una guía probablemente incompleta y exhaustiva de las diferentes formas de unir tablas en SQLelabora una de las partes más complicadas de escribir sentencias SQLque unen una o más tablas: el
JOIN
. -
Writing better SQLes una breve guía de estilo de código para facilitar la lectura de sus consultas.
-
SQL Intermediate es un tutorial que va más allá de lo básico y que utiliza datos abiertos de la Oficina de Protección Financiera del Consumidor de Estados Unidos como ejemplos para contar, consultar y utilizar vistas en PostgreSQL.
Recursos generales sobre bases de datos
-
¿Cómo funciona una base de datos relacional?es un artículo detallado sobre la ordenación, la búsqueda, la combinación y otras operaciones que a menudo damos por sentadas cuando utilizamos una base de datos relacional establecida como PostgreSQL.
-
Bases de datos 101 da una gran visión general de los principales conceptos de bases de datos relacionales que es relevante incluso para los no desarrolladores como una introducción.
-
Cinco errores que cometen los principiantes al trabajar con bases de datosexplica por qué usted no debe almacenar imágenes en bases de datos, así como por qué ser cauteloso con la forma de normalizar su esquema.
-
DB-Engines clasifica los sistemas de gestión de bases de datos más populares.
-
DB Weekly es un resumen semanal de artículos y recursos generales sobre bases de datos.
-
Designing Highly Scalable Database Architectures (Diseño de Arquitecturas de Bases de Datos Altamente Escalables) cubre el escalamiento horizontal y vertical, la replicación y el almacenamiento en caché en las arquitecturas de bases de datos relacionales.
-
Online migrations at scale (Migraciones en línea a escala) es una gran lectura sobre el desglose de la complejidad de la migración del esquema de una base de datos operativa. El enfoque que utilizó el equipo del autor fue un patrón de escritura dual de 4 pasos para evolucionar cuidadosamente la forma en que se almacenaban los datos de las suscripciones para poder pasar a un nuevo modelo de almacenamiento más eficiente.
-
Una base de datos de talla única no se ajusta a nadieexplica la razón específica de Amazon Web Services para tener tantos tipos de bases de datos relacionales y no relacionales en su plataforma, pero el artículo es también una buena visión general de varios modelos de bases de datos y sus casos de uso.
-
SQL tiene 43 años – aquí hay 8 razones por las que todavía lo usamos hoyenumera por qué SQL es comúnmente utilizado por casi todos los desarrolladores, incluso cuando el lenguaje se acerca a su quincuagésimo aniversario.
-
Las claves SQL en profundidadproporciona una gran explicación de lo que son las claves primarias y cómo se deben utilizar.
-
Explorar un conjunto de datos en SQLes un buen ejemplo de cómo se puede utilizar SQL para el análisis de datos. Este tutorial utiliza datos de Spotifypara mostrar cómo extraer lo que se busca aprender de un conjunto de datos.
-
Estrategias de pruebas de integración de bases de datoscubre un tema difícil que surge en cada proyecto del mundo real.
-
GitLab proporcionó su postmortem de una interrupción de la base de datos el 31 de enero como una manera de ser transparente para los clientes y ayudar a otros equipos de desarrollo a aprender cómo arruinaron sus sistemas de bases de datos y luego encontraron una manera de recuperarse.
-
Python asíncrono y bases de datoses un artículo en profundidad que cubre por qué muchos controladores de bases de datos de Python no pueden ser utilizados sin modificación debido a las diferencias en el bloqueo frente a los modelos de eventos asíncronos. Definitivamente vale la pena una lectura si usted está usandoWebSockets a través de Tornado o gevent.
-
PostgreSQL vs. MS SQL Server es unaperspectiva sobre las diferencias entre los dos servidores de bases de datos de adata analyst.
Lista de aprendizaje de bases de datos
-
Instalar PostgreSQL en su servidor. Suponiendo que usted fue con Ubuntu run
sudo apt-get install postgresql
. -
Asegúrese de que la biblioteca psycopg2 es en yourapplication’s dependencias.
-
Configurar su aplicación web para conectarse a la instancia de PostgreSQL.
-
Crear modelos en su ORM, ya sea con Django’sbuilt-in ORM oSQLAlchemy con Flask.
-
Construye las tablas de tu base de datos o sincroniza los modelos del ORM con la instancia de PostgreSQL, si estás usando un ORM.
-
Comienza a crear, leer, actualizar y eliminar datos en la base de datos desde tu aplicación web.