SQLite es una biblioteca en proceso que implementa un motor de base de datos SQL transaccional autónomo, sin servidor, de configuración cero. A diferencia de la mayoría de las otras bases de datos SQL, SQLite no tiene un proceso de servidor separado. SQLite lee y escribe directamente en archivos de disco normales. Una base de datos SQL completa con múltiples tablas, índices, disparadores y vistas está contenida en un solo archivo de disco. El formato de archivo de la base de datos es multiplataforma: puede copiar libremente una base de datos entre sistemas de 32 bits y 64 bits o entre arquitecturas big-endian y little-endian. Estas características hacen de SQLite una opción popular como formato de archivo de aplicación. Cuando vayas a usar SQLite como base de datos para tu aplicación Flask, entonces debes considerar algunas cosas:
- Es lento.
- Bloquea todo el archivo para escribir.
- Sin mecanismo de almacenamiento en caché propio.
- Es limitado
- Tamaño de la base de datos restringido a 2GB en la mayoría de los casos.
- No es totalmente compatible con SQL92.
- No muy escalable.
Pero puedes superar estos problemas. ¿Cómo?
Para sitios web
- ¿Cuáles son todas las capacidades, soporte y características proporcionadas o cuáles deberían proporcionarse en un marco de automatización de prueba de aplicaciones web?
- ¿Qué aplicaciones web muestran tutoriales interactivos antes de usar?
- ¿En qué se diferencian los sitios web (en términos de tecnologías web utilizadas) de 2013 de 2003?
- ¿Cuáles son las mejores prácticas de creación rápida de prototipos para una aplicación web?
- ¿Cuál es la mejor manera de administrar un proyecto de aplicación web como la única persona que lo hace?
SQLite funciona muy bien como motor de base de datos para la mayoría de los sitios web de tráfico bajo a medio (es decir, la mayoría de los sitios web). La cantidad de tráfico web que SQLite puede manejar depende de qué tanto el sitio web utiliza su base de datos. En términos generales, cualquier sitio que obtenga menos de 100K visitas / día debería funcionar bien con SQLite. La cifra de 100K visitas / día es una estimación conservadora, no un límite superior difícil. Se ha demostrado que SQLite funciona con 10 veces esa cantidad de tráfico.
El sitio web de SQLite (https://www.sqlite.org/) usa el propio SQLite, por supuesto, y al momento de escribir este artículo (2015) maneja entre 400K y 500K solicitudes HTTP por día, de las cuales aproximadamente el 15-20% son dinámicas. páginas que tocan la base de datos. Cada página dinámica realiza aproximadamente 200 sentencias SQL. Esta configuración se ejecuta en una única VM que comparte un servidor físico con otros 23 y aún mantiene el promedio de carga por debajo de 0.1 la mayor parte del tiempo.
Para la base de datos del lado del servidor
Los diseñadores de sistemas informan de éxito utilizando SQLite como un almacén de datos en aplicaciones de servidor que se ejecutan en el centro de datos, o en otras palabras, utilizando SQLite como el motor de almacenamiento subyacente para un servidor de base de datos específico de la aplicación.
Con este patrón, el sistema general sigue siendo cliente / servidor: los clientes envían solicitudes al servidor y reciben respuestas a través de la red. Pero en lugar de enviar SQL genérico y recuperar el contenido de la tabla sin procesar, las solicitudes del cliente y las respuestas del servidor son de alto nivel y específicas de la aplicación. El servidor traduce las solicitudes en múltiples consultas SQL, reúne los resultados, realiza el procesamiento posterior, el filtrado y el análisis, luego construye una respuesta de alto nivel que contiene solo la información esencial.
Los desarrolladores informan que SQLite es a menudo más rápido que un motor de base de datos SQL de cliente / servidor en este escenario. El servidor serializa las solicitudes de la base de datos, por lo que la concurrencia no es un problema. La concurrencia también se mejora mediante el “fragmentación de la base de datos”: el uso de archivos de base de datos separados para diferentes subdominios. Por ejemplo, el servidor podría tener una base de datos SQLite separada para cada usuario, de modo que el servidor pueda manejar cientos o miles de conexiones simultáneas, pero cada base de datos SQLite solo es utilizada por una conexión.
Tomar decisiones
Entonces, podemos ver que podemos usar SQLite como base de datos para la aplicación Flask. Pero solo para aplicaciones pequeñas donde rara vez se necesita una base de datos. Si vas a desarrollar una aplicación mediana, entonces debes usar MySQL / MariaDB. Para aplicaciones grandes, como dijo Bill Karwin, puede usar una base de datos cliente / servidor como PostgreSQL permite que muchos clientes concurrentes.
Pero seguramente, puede usar SQLite como base de datos para fines de desarrollo. Luego puede pasar a cualquier base de datos que considere adecuada. Simplemente use Flask-SQLAlchemy para conectarse a la base de datos. Flask-SQLAlchemy es una extensión para Flask que agrega soporte para SQLAlchemy a su aplicación. Requiere SQLAlchemy 0.6 o superior. Su objetivo es simplificar el uso de SQLAlchemy con Flask proporcionando valores predeterminados útiles y ayudantes adicionales que facilitan la realización de tareas comunes.
Puede usar cualquier motor con Flask-SQLAlchemy. ¡Así que cálmate hermano!