Un ensemble de guides très complets publiés par Prisma.
Vous trouverez des guides sur:
- le data modeling
- bases de données relationnelles
- bases de données NoSQL document
- PostgreSQL
- MongoDB
- SQLite
- Microsoft SQL Server (nan je déconne y'a presque rien)
Un REX sur les limites de MongoDB.
Concrètement dans le cas de Malt, MongoDB leur a permis d'itérer rapidement au début mais par la suite son utilisation a ralenti les développements et le fonctionnement de l'application.
A noter que l'article porte beaucoup sur les anciennes versions de MongoDB, sans les transactions ou le mot clé $lookup
.
Dans les problèmes rencontrés:
- le langage de requête en JSON qui n'est pas aussi clair que du SQL
- la modélisation nosql qui implique beaucoup de dénormalisation et de duplication
- la cohérence des données et les jointures qui doivent se faire dans le code
Bref, comme d'habitude il faut utiliser la bonne base de donnée pour le bon problème et lorsqu'il s'agit de la modélisation d'un système relationnel (90% des applications) alors une base de données relationnel est de mise.
Un très bonne comparaison entre les performances de recherches d'Elasticsearch et MongoDB et le résultat est sans appels.
Sur la recherche, Elasticsearch est jusqu'à 20x plus rapide que MongoDB.
Sur les aggrégations, Elasticsearch est jusqu'à 38x plus rapide que MongoDB.
Sur l'insertion, MongoDB est 1.20x plus rapide que Elasticsearch.
Sur le parcours des données, Elasticsearch offre des performances stables quand MongoDB passe de 5 à 60 sec pour récupérer les derniers documents d'une collection.
Sur l'espace disque, MongoDB occupait 2x plus d'espace avec les mêmes données. (sans index!)
Ces benchmarks ont été effectués sur de grosses collections (dizaines de millions) mais les différences performances se font aussi sentir sur de plus petites collections.
Les performances seules ne doivent pas guider le choix mais aussi les features, par exemple les limitations d'Elasticsearch sont les suivantes:
- Near Realtime Search: les documents ne sont pas disponible immédiatement dans le search après écriture
- Pas de modification possible du type d'un champs d'une collection (int vers string par exemple)
- Pas de transactions
- Pas de pseudo-relationnel comme en MongoDB
Raft est un algorithme de consensus distribué très populaire qui permet de garantir la consistence d'un état au sein d'un cluster.
Il est utilisé dans des bases de données (CockroachDB, Mongodb) et dans d'autres produits comme Etcd.
Il couvre l'élection d'un master et la réplication de l'état sur chaque noeud.