¿Cuál es la mejor base de datos adecuada con Python para aplicaciones web?

Verificación de la realidad aquí … 100K visitantes por mes son aproximadamente 3K / día, que es, aproximadamente, un poco más de un visitante cada 30 segundos más o menos.

SQLite (incluido en las bibliotecas estándar de Python como sqlite3 módulo) es más que capaz de manejar eso. Incluso suponiendo que los picos de tráfico 10x o 100x no representarían el más mínimo problema para este módulo.

Por supuesto, también puede usar MySQL o PostgreSQL … pero es posible que desee comenzar con SQLite y crecer desde allí. Si usa un ORM como SQLAlchemy, entonces debería ser relativamente fácil pasar de un RDBMS a otro si alguna vez elige hacerlo.

(Nota: SQLite no es un RDBMS tradicional. Es un conjunto de bibliotecas que implementan funciones de acceso a archivos que, a través del bloqueo del sistema operativo / sistema de archivos, proporcionan las mismas características de ACID que uno espera de un RDBMS de cliente / servidor, y que implementa API en una versión de SQL que es casi tan compatible con otros dialectos de SQL como MySQL con PostgreSQL, por ejemplo: el controlador DBAPI SQLite3 de Python proporciona seguridad de subprocesos en el “nivel 1” (cree una conexión separada para cada subproceso en su grupo de acceso de base de datos)).

La ventaja de MySQL sería que hay muchas, muchas personas que están familiarizadas con él (si elige contratar o contratar un trabajo). La desventaja es que normalmente debería tener a alguien allí con algo de experiencia y capacitación específicamente en la administración de servidores MySQL. Esta es una especialidad dentro de la administración de sistemas.

Existen preocupaciones similares para PostgreSQL, pero el grupo de personas que se sienten cómodas al administrarlo es algo menor. (Podría decirse que las personas que afirman sentirse cómodas administrando PostgreSQL son mucho más propensas a ser competentes que muchas de las multitudes que afirman alegremente su experiencia en MySQL).

SQLite3 realmente no tiene necesidades administrativas. Estos son archivos regulares a los que accede una biblioteca sofisticada en lugar de un servicio de red. Hacer una copia de seguridad de sus datos debe ser una cuestión de usar LVM u otras características de instantánea del sistema de archivos, copiar los archivos y luego liberar la instantánea, aunque también hay opciones más sofisticadas para esto: API de copia de seguridad SQLite).

Por lo tanto, sugeriría probar SQLite3.

PostgreSQL (base de datos relacional)

Muchas excelentes bases de datos relacionales disponibles, que son buenas para las aplicaciones Python. Pero mi sugerencia es PostgreSQL. PostgreSQL es un ORDBMS (Object Relational Database Management System) disponible para las principales plataformas de sistemas operativos. PostgreSQL es extensible y adecuado para manejar gran cantidad de datos.

Ventajas

  • Extensible y admite escalado de datos.
  • Gratis y de código abierto
  • Buen apoyo de la comunidad
  • Multiplataforma
  • Los famosos mapeadores relacionales de objetos de Python como SQLAlchemy, Django ORM y SQLObject son compatibles con PostgreSQL.

MongoDB o Cassandra (NoSQL)

  • MongoDB es una base de datos famosa basada en documentos, que es la base de datos más famosa entre las bases de datos NoSQL. MongoDB es de código abierto y multiplataforma. MongoDB – Wikipedia
  • Apache Cassandra es otra buena base de datos NoSQL que está diseñada para manejar grandes cantidades. Apache Cassandra es de código abierto y está escrito en Java. Apache Cassandra – Wikipedia

Fuente de la imagen: Wikimedia Commons

He visto sitios web con más tráfico respaldados por bases de datos de sistemas de archivos independientes como SQLite o Berkeley DB. Además, no especifica cosas como relacionales (por ejemplo, PostgreSQL, MySQL, MS SQL, etc.) o no relacionales (por ejemplo, MongoDB). Entonces, para un sitio web de propósito genérico con un tráfico promedio, iría a PostgreSQL , siendo mi razón principal que la comunidad de Python cree mucho más . Todos los proyectos en los que trabajamos en nuestra empresa utilizan PostgreSQL, entre otras cosas porque el personal de nuestro PaaS de elección (Heroku) es un gran admirador. Hay toneladas de recursos en internet sobre comparaciones, y no voy a copiarlos / pegarlos aquí. Pero solo como nota final, la velocidad o el rendimiento dependen hoy en día de cómo programe sus modelos de datos, conjuntos de consultas, lecturas / escrituras , etc. Incluso sin modificar o personalizar la configuración predeterminada para esas bases de datos, es probable que lo haga bien .

La solución de base de datos más popular para aplicaciones web es MySQL. Se adapta a las necesidades de la mayoría de los sitios de tráfico pequeño a mediano. (Incluso un sitio de tráfico extremadamente alto como Facebook usa MySQL, aunque detrás de memcached). Aunque se usa con mayor frecuencia con PHP para aplicaciones web, MySQL tiene un conector para Python, mientras que Python tiene una interfaz MySQL.

Buena suerte y disfruta!

Como han dicho otros, muchos RDBM serán adecuados dado su tráfico, incluso a niveles de ráfaga. Sin embargo, la verdadera pregunta es qué tipo de datos está almacenando, recuperando, qué tan rápido necesita procesar / almacenar / recuperar esos datos, etc.

He encontrado que para la mayoría de los proyectos de mediana y gran escala, una combinación de datos relacionales * y * no relacionales generalmente funciona, por lo que también podría necesitar algo como MongoDB, Cassandra, etc. para respaldar cualquier dato relacional que usted ‘ re mantenimiento / seguimiento.

Tiene 2 opciones para elegir, es decir, MySQL y PostgreSQL. Recomiendo MySQL

MySQL tiene un mayor soporte de la comunidad y diferentes sabores, por ejemplo, MySQL (Oracle), Percona Server y Maria DB. Tienen soporte de replicación estable (si necesita escalar), excelente documentación, muchos recursos gratuitos para aprender, excelente y comprobado rendimiento / escalabilidad de DB.

He votado por la gran respuesta del usuario de Quora. Si mira videos de PyCon US (pyvideo.org – PyCon US 2014) hay uno en PostgreSQL, algunos en SQLAlchemy y otros en MySQL 🙂

Si no se siente cómodo con SQL, siempre puede intentar utilizar una de las bases de datos no SQL para crear prototipos. MongoDB sería perfecto para aplicaciones de tipo CRUD, especialmente para alguien que se sienta cómodo con JavaScript.

More Interesting

Cómo leer datos de una aplicación web y colocarlos en una aplicación usando Blueprism

¿Cuáles son las consideraciones clave al elegir una tecnología de base de datos como PostgreSQL vs MongoDB?

¿Qué aplicaciones web ayudan a administrar las tareas domésticas?

¿Cuál es la mejor empresa de desarrollo de aplicaciones web Laravel PHP?

¿Cuál es el papel de un servicio web en una arquitectura de tres niveles?

¿Qué idioma es el más solicitado y necesitado en el desarrollo web en Dubai?

¿Qué marco de JavaScript es el mejor para la nueva aplicación ahora?

¿Cómo hacen las personas para escribir documentos de ayuda para una aplicación web?

¿Cuáles son los pros y los contras de usar lua para el desarrollo web?

¿Cuáles son los diferentes tipos de aplicaciones web disponibles en la industria?

¿Cómo se logra un terminal interactivo en línea?

¿Cuáles son algunos proyectos web interesantes de Nepal?

Somos una startup que desarrolla una aplicación web para la industria de la construcción. La aplicación que se aloja en la nube. ¿Crees que necesitamos un ingeniero de seguridad como función separada? ¿Por qué?

¿Qué pasos debo seguir para desarrollar una aplicación .NET donde los usuarios de la aplicación puedan agregar o eliminar elementos de formulario dinámicamente según la elección?

¿Por qué los ingenieros de Google no eligieron GWT (anteriormente Google Web Toolkit) para la interfaz de Google+? La Biblioteca de cierre (Google) se utiliza en la interfaz de usuario de Google+.