¿Qué hace tu aplicación? ¿Qué tan complicado es su esquema de base de datos? ¿O incluso te importa el esquema DB? ¿Cuánto le importa si algunos de los datos se pierden cada docena de transacciones? ¿Necesitas apoyo transnacional?
Realmente depende de la naturaleza de los datos que desea almacenar, la relación de las entidades en sus datos y el número de consultas que se ejecutarán cada minuto, hora y día. No hay bala de plata.
Los sistemas de bases de datos basados en SQL como MySQL no tienen problemas de escalabilidad. En 2008, Facebook ejecutaba 1800 servidores MySQL con solo dos DBA. Las bases de datos distribuidas como MongoDB, CouchDB y Cassandra no son muy escalables o estables cuando se trata de ejecutarlas como un sistema de base de datos primario para, digamos, máquinas de 1k. [1]
- ¿Cuáles son las ventajas de usar un servidor nginx como proxy inverso en lugar de conectarse directamente al servidor subyacente?
- ¿Cuál sería un buen uso de Google Keep?
- Cómo desarrollar una aplicación web con AngularJS, Django o SQL
- ¿Cuáles son los desafíos de UI / UX al diseñar aplicaciones en tiempo real?
- ¿Qué hace realmente un marco web?
MySQL : una base de datos relacional, que sirve bien para aplicaciones comerciales / de usuario final donde existe una relación clara entre diferentes tipos de entidades (por ejemplo, clientes y productos, usuarios y reseñas). Usado en la mayoría de las compañías de las que has oído hablar. Ver clientes MySQL.
SQLite : “SQLite es una biblioteca de software que implementa un motor de base de datos SQL transaccional autónomo, sin servidor, de configuración cero. SQLite es el motor de base de datos más implementado en el mundo”. [2]
Se utiliza en dispositivos Android, iPhone e iOS, navegadores web (Chrome, Firefox, Safar), PHP y Python, televisores, sistemas multimedia automotrices, etc. Pensé que es ideal para aplicaciones ligeras y aplicaciones móviles, no es ideal para un sitio web que realiza miles de transacciones por segundo.
PostgreSQL : un DB ORDMBS, compatible con ACID y transnacional. ¿Hay una buena comparación aquí entre MySQL y PostreSQL en MySQL vs PostgreSQL?
MongoDb : una base de datos de documentos. Almacena datos en estructuras ricas como mapas de mapas de listas, que contienen enteros y datos de coma flotante. Utilizado para escalar (horizontal). Además, se usa cuando tiene un modelo de datos más simple que requiere menos combinaciones y necesita una facilidad de desarrollo relativamente sencilla. MongoDb admite fragmentación fácil, mucho más fácil que SQL.
Redis : “Redis es un almacén de estructura de datos en memoria de código abierto, utilizado como base de datos, caché y agente de mensajes. Admite estructuras de datos como cadenas, hashes, listas, conjuntos, conjuntos ordenados con consultas de rango, mapas de bits, hiperloglogs y geoespaciales índices con consultas de radio. Redis tiene replicación incorporada, secuencias de comandos Lua, desalojo de LRU, transacciones y diferentes niveles de persistencia en disco, y proporciona alta disponibilidad a través de Redis Sentinel y particionamiento automático con Redis Cluster “. [3]
DynamoDb / SimpleDb : servicios NoSQL db, a los que se accede a través de la API web. Es un servicio de base de datos rápido y altamente escalable que se ofrece. Lo he visto utilizado principalmente para el almacenamiento en caché y estructuras de datos relativamente menos complicadas. Es de alto costo en comparación con los sistemas DB. Hay velocidad de recuperación predecible, almacenamiento teóricamente ilimitado. Es ideal para almacenar sesión de usuario, almacenamiento de datos y como una capa de almacenamiento en caché de algún tipo.
Dependiendo de su aplicación, es posible que deba usar varios de los anteriores. Los pares más utilizados son RDBM para el almacenamiento de datos y una capa NoSQL db / caching para caché
[1] -Facebook ahora ejecuta 10,000 servidores web | Conocimiento del centro de datos
[2] – Acerca de SQLite
[3] – Introducción a Redis – Redis