Publication de la base de données orientée documents Apache CouchDB 3.0

A eu lieu publication d'une base de données orientée documents distribuée Apache CouchDB 3.0, faisant partie de la classe des systèmes NoSQL. Les codes sources du projet sont distribués sous licence Apache 2.0.

Améliorations, mises en œuvre dans Apache CouchDB 3.0 :

  • Le renforcement de la sécurité dans la configuration par défaut a été effectué.
    Lors du démarrage, un utilisateur admin doit désormais être défini, sans lequel le serveur s'arrêtera avec une erreur (ce qui permet de résoudre les problèmes de démarrage des serveurs qui auraient été laissés accessibles sans authentification). Pour les appels à « /_all_dbs », des droits d'administrateur sont maintenant requis, et toutes les bases de données sont par défaut créées accessibles uniquement à l'utilisateur admin (les permissions peuvent être modifiées via l'objet « _security »). La modification des objets dans la base de données _users est par défaut interdite ;
  • Ajouté la possibilité de créer des bases de données segmentées (partitionnées) définies par l'utilisateur, permettant de déterminer ses propres règles de répartition des documents par segments (plage de shards). Des optimisations spéciales pour les bases de données segmentées ont été ajoutées aux vues et index Mango ;
  • l'opérateur de séquence optionnelle mode de répartition automatique lors de la segmentation (sharding). Dans les bases de données, il est maintenant possible de redistribuer les données par segments en tenant compte de l'augmentation de la valeur du facteur q, utilisé pour déterminer le niveau de fragmentation ;
  • Ajouté un sous-système ken pour l'indexation automatique en arrière-plan et le maintien à jour des index secondaires (JavaScript, Mango, index de recherche textuelle) sans exécution explicite des opérations de construction ;
  • Le processus smoosh, utilisé pour l'emballage automatique des bases de données, a été entièrement réécrit ;
  • Un nouveau sous-système a été proposé IO Queue, utilisé pour modifier la priorité des entrées/sorties pour certaines opérations ;
  • Un système de tests regressifs a été mis en place ;
  • Ajout du support officiel des plateformes arm64v8 (aarch64) et ppc64le (ppc64el) ;
  • Ajout du support de l'intégration avec le moteur JavaScript SpiderMonkey 1.8.5 (version ESR de Firefox 60) avec un meilleur support d'ES5, ES6 et ES2016+ ;
  • Le moteur de recherche Dreyfus , basé sur Lucene, permettant de simplifier considérablement le déploiement d'un système de recherche basé sur CouchDB ;
  • Ajout d'un backend pour la gestion des journaux avec systemd-journald ;
  • Ajout de la configuration « [couchdb] single_node » lors de l'installation, par laquelle CouchDB crée automatiquement les bases de données système, si elles sont manquantes ;
  • L'optimisation des performances du processus couch_server a été réalisée.
  • L'installateur pour la plateforme Windows a été considérablement amélioré.
  • La taille des vues est limitée à 2^28 (268435456) résultats. Cette limite peut être configurée séparément pour les vues normales et segmentées à l'aide des options query_limit et partition_query_limit dans la section «[query_server_config]».
  • Une interface HTTP distincte pour la gestion du nœud local, fonctionnant sur le port réseau 5986, a été supprimée. Sa fonctionnalité est désormais accessible via l'interface de gestion de cluster.
  • La taille maximale d'un document a été réduite à 8 Mo, ce qui peut entraîner des problèmes de réplication des données depuis d'anciens serveurs après une mise à niveau vers CouchDB 3.0. Pour augmenter cette limite, vous pouvez utiliser le paramètre «[couchdb] max_document_size».
  • Un nettoyage en profondeur des fonctionnalités obsolètes a été effectué, telles que les appels _replicator et _external, les champs disk_size et data_size, ainsi que l'option delayed_commits.
  • Pour exécuter CouchDB, il faut désormais Erlang/OTP 20.3.8.11+, 21.2.3+ ou 22.0.5. Théoriquement, la compatibilité avec la branche Erlang/OTP 19 a été maintenue, mais elle est couverte par des tests.

Rappelons que CouchDB stocke des données sous forme de listes ordonnées et permet la réplication partielle des données entre plusieurs bases de données en « maître-maître » avec détection et résolution simultanées des conflits. Chaque serveur conserve son propre jeu de données local, synchronisé avec d'autres serveurs, qui peuvent basculer en mode hors ligne et répliquer périodiquement les modifications. Cette fonctionnalité fait de CouchDB une solution attrayante pour organiser la synchronisation des paramètres des logiciels entre différents ordinateurs. Des solutions basées sur CouchDB sont mises en œuvre dans des entreprises telles que la BBC, Apple et CERN.

Les requêtes à CouchDB et l'indexation des données peuvent être effectuées selon le paradigme MapReduce, utilisant le langage JavaScript pour former la logique de sélection des données. Le noyau du système est écrit en Erlang, optimisé pour gérer de nombreuses requêtes parallèles dans des systèmes distribués. Le serveur de vues est écrit en C et basé sur le moteur JavaScript du projet Mozilla. L'accès à la base de données se fait via le protocole HTTP en utilisant l'API JSON RESTful, permettant d'accéder aux données depuis des applications web exécutées dans le navigateur.

Un document, ayant un identifiant unique et une version, sert d'unité de stockage des données et contient un ensemble arbitraire de champs nommés au format clé/valeur. Pour organiser un ensemble de données pseudo-structuré à partir de documents arbitraires (aggrégation et sélection), le concept de création de vues (view) est utilisé, dont la définition se fait par le biais du langage JavaScript. Des fonctions peuvent également être définies en JavaScript pour vérifier l'intégrité des données lors de l'ajout de nouveaux documents dans le cadre d'une vue définie.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster