Veröffentlichung der verteilten dokumentenorientierten Datenbank , die zu den NoSQL-Systemen gehört. Der Quellcode des Projekts unter der Apache 2.0-Lizenz.
, implementiert in Apache CouchDB 3.0:
- Die Standardkonfiguration wurde hinsichtlich der Sicherheit verbessert.
Beim Start muss jetzt zwingend ein Benutzer admin definiert sein, ohne den der Server mit einem Fehler beendet wird (dies löst Probleme mit Servern, die versehentlich ohne Authentifizierung zugänglich gemacht werden). Für Aufrufe von «/_all_dbs» sind nun Administratorrechte erforderlich, und alle Datenbanken werden standardmäßig nur für den Benutzer admin erstellt (Zugriffsparameter können über das Objekt «_security» geändert werden). Das Bearbeiten von Objekten in der Datenbank _users ist standardmäßig untersagt; - die Möglichkeit, benutzerdefinierte segmentierte (partionierte) Datenbanken zu erstellen, die es ermöglichen, eigene Regeln zur Verteilung der Dokumente auf Segmente (Shard-Bereich) festzulegen. In Ansichten und Indizes von Mango wurden spezielle Optimierungen für segmentierte Datenbanken hinzugefügt;
- Der Modus für automatisches Sharding ermöglicht nun die Umverteilung von Daten über Segmente unter Berücksichtigung des erhöhten q-Faktors zur Bestimmung der Partitionierungsebene.
- Das Ken-System für automatisches Hintergrund-Indexieren und die Aktualisierung sekundärer Indizes (JavaScript, Mango, Textsuchindizes) ohne expliziten Start der Erstellungsvorgänge wurde implementiert.
- Der Prozess 'Smoosh' für die automatische Datenbankverpackung wurde vollständig neu geschrieben.
- Ein neues Subsystem wurde vorgeschlagen. , das zur Änderung der Eingabe-/Ausgabepriorität für bestimmte Vorgänge verwendet wird.
- Ein System für Regressionstests wurde implementiert.
- Offizielle Unterstützung für die Plattformen arm64v8 (aarch64) und ppc64le (ppc64el) wurde hinzugefügt.
- Unterstützung für die Anbindung an die JavaScript-Engine SpiderMonkey 1.8.5 (ESR-Branch von Firefox 60) mit verbesserter Unterstützung für ES5, ES6 und ES2016+ wurde eingeführt.
- Der Suchmaschinen-Engine , basierend auf Lucene, ermöglicht eine vereinfachte Bereitstellung einer Suchmaschine auf der CouchDB-Basis.
- Ein Backend zum Loggen unter Verwendung von systemd-journald wurde hinzugefügt.
- Die Einstellung „[couchdb] single_node“ wurde hinzugefügt, bei der CouchDB automatisch Systemdatenbanken erstellt, wenn diese nicht vorhanden sind.
- Die Leistung des Prozesses couch_server wurde optimiert.
- Der Installer für die Windows-Plattform wurde erheblich verbessert.
- Die Größe der Ansichten ist auf 2^28 (268.435.456) Ergebnisse begrenzt. Dieses Limit kann separat für normale und segmentierte Ansichten mithilfe der Optionen query_limit und partition_query_limit im Abschnitt „[query_server_config]“ konfiguriert werden.
- Das separate HTTP-Management-Interface für den lokalen Knoten, das auf dem Netzwerkport 5986 betrieben wurde, wurde entfernt; die Funktionalität ist jetzt über das gemeinsame Management-Interface des Clusters verfügbar.
- Die maximale Dokumentgröße wurde auf 8 MB reduziert, was zu Problemen bei der Datenreplikation von älteren Servern nach einem Upgrade auf CouchDB 3.0 führen kann. Um das Limit zu erhöhen, kann die Einstellung „[couchdb] max_document_size“ verwendet werden.
- Es wurde eine umfassende Bereinigung veralteter Funktionen durchgeführt, wie z. B. die Aufrufe _replicator und _external, die Felder disk_size und data_size sowie die Option delayed_commits.
- Für den Betrieb von CouchDB wird nun Erlang/OTP 20.3.8.11+, 21.2.3+ oder 22.0.5 benötigt. Theoretisch bleibt die Funktionalität mit der Erlang/OTP 19-Version erhalten, jedoch ist diese nicht mehr getestet.
CouchDB speichert Daten in einem geordneten Listenformat und ermöglicht partielle Datenreplikation zwischen mehreren Datenbanken im Master-Master-Modus mit gleichzeitiger Erkennung und Behebung von Konflikten. Jeder Server speichert seinen lokalen Datensatz, der mit anderen Servern synchronisiert wird, die in den Offline-Modus versetzt und Änderungen gelegentlich replizieren können. Diese Funktion macht CouchDB besonders attraktiv für die Synchronisation von Programmeinstellungen zwischen verschiedenen Computern. Lösungen auf Basis von CouchDB werden unter anderem von Unternehmen wie BBC, Apple und CERN eingesetzt.
Anfragen an CouchDB und die Indizierung von Daten können gemäß der Paradigmen durchgeführt werden. , indem die Logik der Datenabfrage mit der Programmiersprache JavaScript formuliert wird. Der Kern des Systems ist in Erlang geschrieben, einer Sprache, die für die Bearbeitung vieler gleichzeitiger Anfragen in verteilten Systemen optimiert ist. 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 unter Verwendung einer RESTful JSON API, die es ermöglicht, Daten auch aus im Browser ausgeführten Webanwendungen abzurufen.
Ein Dokument mit einer eindeutigen Kennung, einer Version und einer beliebigen Sammlung von benannten Feldern im Schlüssel-Wert-Format fungiert als Einheit zur Datenspeicherung. Zur Organisation einer pseudos strukturierten Datensammlung aus beliebigen Dokumenten (Aggregation und Abfrageerstellung) wird das Konzept der Erstellung von Ansichten (views) verwendet, deren Definition die Programmiersprache JavaScript nutzt. In JavaScript können auch Funktionen definiert werden, um die Datenintegrität beim Hinzufügen neuer Dokumente im Kontext einer bestimmten Ansicht zu überprüfen.
Quelle: opennet.ru
