FoundationDB, une base de données distribuée adaptée à de grands volumes de données, a été libérée. Apple avait racheté la société FoundationDB, éditrice de la solution de base de données du même nom, il y a trois ans. Avant le rachat, une version gratuite mais non libre était disponible. Depuis, certaines personnes regrettaient qu’une base de données de cette qualité ne soit plus disponible. Apple a fait le choix tout récemment de publier FoundationDB sous une licence libre (licence Apache 2.0) et d’encourager le développement d’un écosystème autour de celle‐ci.
FoundationDB est une base de données de type clef‐valeur, où les clefs sont triées, avec des transactions ACID. Elle se concentre sur l’essentiel, à savoir le stockage distribué, et pour le reste, les développeurs sont encouragés à utiliser des layers, des couches qui peuvent proposer différents modèles de données (SQL, documents, graphes, etc.) au‐dessus.
La grande force de FoundationDB est sa robustesse à grande échelle. Apple en est un utilisateur évident, mais d’autres sociétés l’utilisent également en production depuis plusieurs années (au moins trois ans, vu que ça date d’avant le rachat par Apple). Il est possible de rajouter ou supprimer des nœuds dans une grappe de serveurs (cluster) à chaud, FoundationDB s’occupant tout seul d’équilibrer la charge entre les nœuds disponibles. Un effort conséquent a aussi permis de mettre en place un cadriciel qui simule une grappe de serveurs FoundationDB et un grand nombre de cas de pannes pouvant s’y produire (un commutateur réseau qui perd des paquets, un disque défaillant, une partition saturée, etc.), de le faire tourner pendant de nombreuses heures pour trouver les fragilités de FoundationDB et les corriger.
Aller plus loin
- Annonce de la libération de FoundationDB (92 clics)
- Le site officiel de FoundationDB (340 clics)
- Le code de FoundationDB sur GitHub (101 clics)
# Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...
Posté par abriotde (site web personnel, Mastodon) . Évalué à 1.
Si quelqu'un a une idée de ses avantages/inconvénients face aux classiques existants dans le style BdD clé/valeur : memcached, REDIS, MongoDB, ou CouchDB.
Memcached est plus orienté "cache" mais FoundationDB face aux autres?
Je dirais que FoundationDB avec son système de librairies est plus polyvalents mais aussi du coup plus complexe a mettre en place (voire plus limité si les librairies ne sont pas Open-Source comme cela semble être le cas). Peut-être que je me trompe?
Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.
[^] # Re: Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...
Posté par Bruno Michel (site web personnel) . Évalué à 10.
Globalement, FoundationDB apporte surtout pour les ops : meilleure fiabilité et scalabilité.
Memcached et Redis stockent l'ensemble des données en mémoire vive, il faut donc avoir plus de mémoire vive sur son cluster de serveurs que de données que l'on veut stocker. Il n'y a pas de garantie de ne pas avoir de perte en cas de crash d'un serveur.
CouchDB ou MongoDB sont des bases de données de type documents. Elles n'ont pas de notion de transactions : si plusieurs documents sont modifiés, il est possible de se retrouver dans un état où seul l'un de ces documents a été modifié mais pas les autres. Si on prend l'exemple classique d'un mouvement bancaire entre 2 comptes, on peut se retrouver avec un compte qui a été débité mais l'autre compte n'a pas été crédité, l'argent s'est envolé.
Memcached, Redis, CouchDB et MongoDB sont plus attirants pour les développeurs. Ils proposent un modèle de données de plus haut niveau, plus de fonctionnalités et de types de requêtes. FoundationDB est plus attirant pour les ops : il sait rebalancer les données au sein d'un cluster si on ajoute ou retire un serveur (ou même juste parce qu'il détecte un « hot spot », un serveur qui contient des données beaucoup plus utilisées que d'autres et qui travaille donc plus), il est beaucoup plus robuste (ACID). FoundationDB pourrait devenir intéressant/compétitif pour les développeurs si des layers viennent apporter des modèles de plus haut niveau comparable aux modèles documents de CouchDB et MongoDB. Pour le moment, ce n'est pas encore le cas mais l'ouverture du code est toute récente et il faut laisser un peu de temps à d'éventuels développeurs de s'approprier l'outil.
[^] # Re: Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...
Posté par Fabien . Évalué à 2.
Dans le même genre, il existe:
Cockroachdb
Tikv
le premier est "compatible" Postgresql, alors que le second est "compatible" Mysql
FoundationDB ne propose pas ce genre de compatibilité mais il semble qu'un proof-of-work existe
[^] # Re: Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...
Posté par Psychofox (Mastodon) . Évalué à 2.
Par compatibilité tu entends quoi ? Qu'on peut donner comme connection string celui d'une db cockroach à une application prévue pour utiliser postgres et que bim ça va marcher comme à Bisounoursland ?
[^] # Re: Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...
Posté par Bruno Michel (site web personnel) . Évalué à 3.
CockroachDB permet d'utiliser le protocole de communication de PostgreSQL. Ça veut dire que tu peux utiliser les bibliothèques client de PostgresSQL pour dialoguer avec CockroachDB. Après, prendre une application prévue pour postgresql et remplacer le serveur par CockroachDB, il y a des chances que ça ne marche pas du premier coup.
CockroachDB recommande des clients postgresql pour différents langages et même des ORM dans différents langages.
[^] # Re: Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...
Posté par diorcety . Évalué à 1.
Cette notion de layer est sympa pas contre le fait que c'est le client qui implémente ce layer fait qu'on est obligé de l'implémenter pour chaque langage client?
[^] # Re: Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...
Posté par steph1978 . Évalué à 4.
Je connais pas bien le produit FoundationDB - normal il vient d'être libéré.
Mais je dirai que ça implémente les couches basses d'une base de données : stockage et moteur transactionnel.
Ensuite il faut implémenter la couche haute, la sémantique : relationnel, orienté document, moteur de recherche, que sais-je.
REDIS, MongoDB, ou CouchDB implémentent tout avec une seule sémantique chacun.
Il y a un cas intéressant, celui de SQLite4. L'auteur veut proposer un moteur SQL qui se branche sur un moteur clé-valeur. Le moteur peut être très basique (fichier local) ou plus élaboré. FoundationDB pourrait être un moteur distribué pour sqlite4. Je suis sûr que quelques bons hackers vont s'y attaquer.
[^] # Re: Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...
Posté par diorcety . Évalué à 1.
Ça a peut être changé depuis mais il y 3 ans quand j'avais regardé pour l'intégration d'une partie nosql dans un projet, foundationdb était la seule SGBD nosql vraiment ACID.
# Commentaire supprimé
Posté par avensis18 . Évalué à 0. Dernière modification le 01 octobre 2018 à 21:27.
Ce commentaire a été supprimé par l’équipe de modération.
# Commentaire supprimé
Posté par oslo . Évalué à -1. Dernière modification le 17 mai 2018 à 11:32.
Ce commentaire a été supprimé par l’équipe de modération.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.