Libération de FoundationDB

Posté par  (site web personnel) . Édité par Davy Defaud et Pierre Jarillon. Modéré par Nÿco. Licence CC By‑SA.
Étiquettes :
27
25
avr.
2018
Base de données

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.

Logo de FoundationDB

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

  • # Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...

    Posté par  . É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?

    • [^] # Re: Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...

      Posté par  (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  . É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  . É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  . É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  . É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.