Das Unternehmen Google hat Änderungen vorgenommen, die auf den Übergang des Betriebssystems

Hat stattgefunden verteilte dokumentenorientierte Datenbank Apache CouchDB 3.0, die zur Klasse der NoSQL-Systeme gehört. Die Quelltexte des Projekts unter der freien Lizenz Apache 2.0 verbreitet. unter der Apache 2.0 Lizenz.

Verbesserungen, umgesetzt in Apache CouchDB 3.0:

  • Der Schutz in der Standardkonfiguration wurde verstärkt.
    Bei der Installation muss jetzt unbedingt ein Benutzer admin definiert sein, ohne den der Server mit einem Fehler herunterfällt (dies löst Probleme mit der Serverinstallation, bei der versehentlich Zugang ohne Authentifizierung gewährt wurde). Für Aufrufe von „/_all_dbs“ sind nun Administratorrechte erforderlich, und alle Datenbanken werden standardmäßig nur für den Benutzer admin zugänglich erstellt (Zugangsparameter können über das Objekt „_security“ geändert werden). Die Bearbeitung von Objekten in der Datenbank _users ist standardmäßig verboten;
  • Hinzugefügt die Möglichkeit, benutzerdefinierte segmentierte (partitionierte) Datenbanken zu erstellen, die es ermöglichen, eigene Regeln zur Verteilung von Dokumenten auf Segmente (shard range) zu definieren. In die Mango-Ansichten und -Indizes wurden spezielle Optimierungen für segmentierte Datenbanken hinzugefügt;
  • Implementiert der automatische Repartitionierungsmodus beim Sharding. In der Datenbank ist es nun möglich, Daten basierend auf dem Anstieg des q-Faktors, der zur Bestimmung des Freigabegrads verwendet wird, neu zu verteilen;
  • Hinzugefügt Subsystem Ken für automatisches Hintergrund-Indexing und die Aufrechterhaltung aktualisierter sekundärer Indizes (JavaScript, Mango, Textsuchindizes) ohne explizite Ausführung der Erstelloperationen;
  • Der smoosh-Prozess wurde vollständig überarbeitet, der zur automatischen Paketerstellung von Datenbanken verwendet wird;
  • Ein neues Subsystem wurde vorgestellt IO Queue, das für die Änderung der E/A-Priorität für bestimmte Operationen verwendet wird;
  • Ein System für regressives Testen wurde implementiert;
  • Offizielle Unterstützung für die Plattformen arm64v8 (aarch64) und ppc64le (ppc64el) hinzugefügt;
  • Unterstützung für das Binden an die JavaScript-Engine SpiderMonkey 1.8.5 (ESR-Zweig von Firefox 60) mit verbesserter Unterstützung für ES5, ES6 und ES2016+ hinzugefügt;
  • Der Suchmotor Dreyfus basierend auf Lucene, der es erheblich vereinfacht, eine Suchmaschine auf der CouchDB-Basis bereitzustellen;
  • Ein Backend für die Protokollierung unter Verwendung von systemd-journald hinzugefügt;
  • Die Konfiguration „[couchdb] single_node“ hinzugefügt, bei der CouchDB automatisch Systemdatenbanken erstellt, wenn diese fehlen;
  • Die Leistung des couch_server Prozesses wurde optimiert;
  • Der Installer für die Windows-Plattform wurde erheblich verbessert;
  • Die Anzahl der angezeigten Ergebnisse ist auf 2^28 (268435456) begrenzt. Dieses Limit kann separat für reguläre und segmentierte Ansichten mit den Optionen query_limit und partition_query_limit im Abschnitt „[query_server_config]“ konfiguriert werden;
  • Die separate HTTP-Schnittstelle zur Verwaltung des lokalen Knotens, die auf dem Netzwerkport 5986 betrieben wurde, wurde entfernt; die Funktionalität ist jetzt über die gemeinsame Clusterverwaltungsoberfläche verfügbar;
  • Die maximale Dokumentgröße wurde auf 8 MB reduziert, was nach einem Upgrade auf CouchDB 3.0 zu Problemen mit der Datenreplikation von älteren Servern führen kann. Um das Limit zu erhöhen, kann die Einstellung „[couchdb] max_document_size“ verwendet werden;
  • Eine umfassende Bereinigung veralteter Funktionen wurde durchgeführt, wie z. B. die Aufrufe von _replicator und _external, die Felder disk_size und data_size sowie die Option delayed_commits;
  • Zur Ausführung von CouchDB wird jetzt Erlang/OTP 20.3.8.11+, 21.2.3+ oder 22.0.5 benötigt. Theoretisch bleibt die Kompatibilität mit der Version Erlang/OTP 19 erhalten, ist jedoch getestet.

Erinnern wir uns daran, dass CouchDB Daten in einer geordneten Liste speichert und eine partielle Replikation von Daten zwischen mehreren Datenbanken im Master-Master-Modus ermöglicht, wobei Konfliktsituationen simultan erkannt und gelöst werden. Jeder Server speichert sein lokales Datenset, das mit anderen Servern synchronisiert ist, die in den Offline-Modus versetzt werden können und Änderungen zeitweise replizieren. Diese Funktionalität macht CouchDB insbesondere zu einer attraktiven Lösung für die Synchronisierung von Programmeinstellungen zwischen verschiedenen Computern. CouchDB-basierte Lösungen sind in Unternehmen wie BBC, Apple und CERN implementiert.

Anfragen an CouchDB und die Datenindizierung können gemäß der Paradigmen MapReduceunter Verwendung der Programmiersprache JavaScript zur Bildung der Logik der Datenauswahl durchgeführt werden. Der Systemkern ist in Erlang geschrieben, das für die Erstellung von Servern optimiert ist, die zahlreiche parallele Anfragen in verteilten Systemen bedienen. Der View-Server ist in C geschrieben und basiert auf der JavaScript-Engine des Mozilla-Projekts. Der Zugriff auf die Datenbank erfolgt über das HTTP-Protokoll mit einer RESTful JSON API, die es ermöglicht, auch von in Browsern ausgeführten Webanwendungen auf die Daten zuzugreifen.

Als Datenspeichereinheit fungiert ein Dokument mit einer einzigartigen Kennung, einer Version und einer beliebigen Anzahl von benannten Feldern im Schlüssel-Wert-Format. Zur Organisation eines pseudo-strukturierten Datensatzes aus beliebigen Dokumenten (Aggregation und Auswahlbildung) wird das Konzept der Präsentation (view) angewendet, für dessen Definition die Sprache JavaScript verwendet wird. In JavaScript können auch Funktionen zur Überprüfung der Datenvalidität beim Hinzufügen neuer Dokumente im Rahmen einer bestimmten Ansicht definiert werden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4