CouchDB - Einführung

Das Datenbankverwaltungssystem bietet einen Mechanismus zum Speichern und Abrufen von Daten. Es gibt drei Haupttypen von Datenbankverwaltungssystemen: RDBMS (Relational Database Management Systems), OLAP (Online Analytical Processing Systems) und NoSQL.

RDBMS

RDBMS steht für Relational Database Management System. RDBMS ist die Basis für SQL und für alle modernen Datenbanksysteme wie MS SQL Server, IBM DB2, Oracle, MySQL und Microsoft Access.

Ein relationales Datenbankverwaltungssystem (RDBMS) ist ein Datenbankverwaltungssystem (DBMS), das auf dem von EF Codd eingeführten relationalen Modell basiert.

Die Daten in RDBMS werden in aufgerufenen Datenbankobjekten gespeichert tables. Die Tabelle ist eine Sammlung zusammengehöriger Dateneinträge und besteht aus Spalten und Zeilen. Es werden nur strukturierte Daten gespeichert.

OLAP

Der Online Analytical Processing Server (OLAP) basiert auf dem mehrdimensionalen Datenmodell. Manager und Analysten erhalten durch schnellen, konsistenten und interaktiven Zugriff auf Informationen einen Einblick in die Informationen.

NoSQL-Datenbanken

Eine NoSQL-Datenbank (manchmal auch als Not Only SQL bezeichnet) ist eine Datenbank, die einen Mechanismus zum Speichern und Abrufen anderer Daten als der in relationalen Datenbanken verwendeten tabellarischen Beziehungen bietet. Diese Datenbanken sind schemafrei, unterstützen eine einfache Replikation, verfügen über eine einfache API, sind schließlich konsistent und können große Datenmengen (Big Data) verarbeiten.

Das Hauptziel einer NoSQL-Datenbank ist Folgendes:

  • Einfachheit des Designs,
  • Horizontale Skalierung und
  • Feinere Kontrolle über die Verfügbarkeit.

NoSQL-Datenbanken verwenden im Vergleich zu relationalen Datenbanken andere Datenstrukturen. Es beschleunigt einige Operationen in NoSQL. Die Eignung einer bestimmten NoSQL-Datenbank hängt von dem Problem ab, das sie lösen muss. Diese Datenbanken speichern sowohl strukturierte als auch unstrukturierte Daten wie Audiodateien, Videodateien, Dokumente usw. Diese NoSQL-Datenbanken werden in drei Typen eingeteilt und im Folgenden erläutert.

Key-value Store- Diese Datenbanken dienen zum Speichern von Daten in Schlüssel-Wert-Paaren, und diese Datenbanken haben kein Schema. In diesen Datenbanken besteht jeder Datenwert aus einem indizierten Schlüssel und einem Wert für diesen Schlüssel.

Beispiele - BerkeleyDB, Cassandra, DynamoDB, Riak.

Column Store- In diesen Datenbanken werden Daten in Zellen gespeichert, die in Datenspalten gruppiert sind, und diese Spalten werden weiter in Spaltenfamilien gruppiert. Diese Spaltenfamilien können eine beliebige Anzahl von Spalten enthalten.

Beispiele - BigTable, HBase und HyperTable.

Document Store- Dies sind die Datenbanken, die auf der Grundidee von Schlüsselwertspeichern basieren, in denen "Dokumente" komplexere Daten enthalten. Hier wird jedem Dokument ein eindeutiger Schlüssel zugewiesen, mit dem das Dokument abgerufen wird. Diese dienen zum Speichern, Abrufen und Verwalten dokumentenorientierter Informationen, auch als halbstrukturierte Daten bezeichnet.

Beispiele - CouchDB und MongoDB.

Was ist CouchDB?

CouchDB ist eine Open Source-Datenbank, die von der Apache Software Foundation entwickelt wurde. Der Fokus liegt auf der Benutzerfreundlichkeit, die das Web umfasst. Es ist eine NoSQL-Dokumentenspeicherdatenbank.

Es verwendet JSON, um Daten (Dokumente) zu speichern, Java-Skript als Abfragesprache, um die Dokumente zu transformieren, http-Protokoll für API, um auf die Dokumente zuzugreifen, und fragt die Indizes mit dem Webbrowser ab. Es ist eine Multi-Master-Anwendung, die 2005 veröffentlicht wurde und 2008 zu einem Apache-Projekt wurde.

Warum CouchDB?

  • CouchDB verfügt über eine HTTP-basierte REST-API, mit deren Hilfe die Kommunikation mit der Datenbank einfach ist. Die einfache Struktur der HTTP-Ressourcen und -Methoden (GET, PUT, DELETE) ist leicht zu verstehen und zu verwenden.

  • Da wir Daten in der flexiblen dokumentbasierten Struktur speichern, müssen Sie sich keine Gedanken über die Struktur der Daten machen.

  • Benutzer erhalten eine leistungsstarke Datenzuordnung, mit der die Informationen abgefragt, kombiniert und gefiltert werden können.

  • CouchDB bietet eine benutzerfreundliche Replikation, mit der Sie die Daten zwischen Datenbanken und Computern kopieren, freigeben und synchronisieren können.

Datenmodell

  • Die Datenbank ist die äußerste Datenstruktur / der äußerste Container in CouchDB.

  • Jede Datenbank ist eine Sammlung unabhängiger Dokumente.

  • Jedes Dokument verwaltet seine eigenen Daten und ein in sich geschlossenes Schema.

  • Dokumentmetadaten enthalten Revisionsinformationen, mit denen die Unterschiede zusammengeführt werden können, die beim Trennen der Datenbanken aufgetreten sind.

  • CouchDB implementiert die Parallelitätskontrolle für mehrere Versionen, um zu vermeiden, dass das Datenbankfeld beim Schreiben gesperrt werden muss.

Funktionen von CouchDB: Reduzieren Sie den Inhalt

Dokumentenspeicher

CouchDB ist eine NoSQL-Datenbank zur Dokumentenspeicherung. Es bietet die Möglichkeit, Dokumente mit eindeutigen Namen zu speichern, und bietet eine API namens RESTful HTTP API zum Lesen und Aktualisieren (Hinzufügen, Bearbeiten, Löschen) von Datenbankdokumenten.

In CouchDB sind Dokumente die primäre Dateneinheit und enthalten auch Metadaten. Dokumentfelder sind eindeutig benannt und enthalten Werte unterschiedlichen Typs (Text, Nummer, Boolescher Wert, Listen usw.). Die Textgröße oder die Anzahl der Elemente sind nicht begrenzt.

Dokumentaktualisierungen (Hinzufügen, Bearbeiten, Löschen) folgen Atomicity, dh sie werden vollständig oder gar nicht gespeichert. Die Datenbank enthält keine teilweise gespeicherten oder bearbeiteten Dokumente.

Json-Dokumentstruktur

{
   "field" : "value",
   "field" : "value",
   "field" : "value",
}

ACID-Eigenschaften

CouchDB enthält ACID-Eigenschaften als eine seiner Funktionen.

Konsistenz - Wenn die Daten in CouchDB einmal festgeschrieben wurden, werden diese Daten nicht geändert oder überschrieben. Somit stellt CouchDB sicher, dass sich die Datenbankdatei immer in einem konsistenten Zustand befindet.

CouchDB-Lesevorgänge verwenden ein MVCC-Modell (Multi-Version Concurrency Control), aufgrund dessen der Client vom Beginn bis zum Ende des Lesevorgangs einen konsistenten Snapshot der Datenbank sieht.

Jedes Mal, wenn ein Dokument aktualisiert wird, löscht CouchDB die Daten auf die Festplatte, und der aktualisierte Datenbankheader wird in zwei aufeinanderfolgenden und identischen Blöcken geschrieben, um die ersten 4 KB der Datei zu bilden, und dann synchron auf die Festplatte geleert. Teilaktualisierungen während des Spülvorgangs werden verworfen.

Wenn der Fehler beim Festschreiben des Headers aufgetreten ist, bleibt eine überlebende Kopie der vorherigen identischen Header erhalten, um die Kohärenz aller zuvor festgeschriebenen Daten sicherzustellen. Mit Ausnahme des Header-Bereichs sind Konsistenzprüfungen oder Korrekturen nach einem Absturz oder einem Stromausfall niemals erforderlich.

Verdichtung

Immer wenn der Speicherplatz in der Datenbankdatei über ein bestimmtes Maß hinaus verschwendet wurde, werden alle aktiven Daten in eine neue Datei kopiert (geklont). Wenn der Kopiervorgang vollständig abgeschlossen ist, wird die alte Datei verworfen. All dies erfolgt durch Verdichtung. Die Datenbank bleibt während der Komprimierung online und alle Aktualisierungen und Lesevorgänge können erfolgreich abgeschlossen werden.

Ansichten

Daten in CouchDB werden in halbstrukturierten Dokumenten gespeichert, die mit individuellen impliziten Strukturen flexibel sind. Es handelt sich jedoch um ein einfaches Dokumentmodell für die Speicherung und gemeinsame Nutzung von Daten. Wenn wir unsere Daten auf viele verschiedene Arten anzeigen möchten, benötigen wir eine Möglichkeit zum Filtern, Organisieren und Berichten von Daten, die nicht in Tabellen zerlegt wurden.

Um dieses Problem zu lösen, bietet CouchDB ein Ansichtsmodell. Ansichten sind die Methode zum Aggregieren und Berichten von Dokumenten in einer Datenbank und werden bei Bedarf erstellt, um Datenbankdokumente zu aggregieren, zu verknüpfen und zu melden. Da Ansichten dynamisch erstellt werden und sich nicht auf das zugrunde liegende Dokument auswirken, können Sie so viele verschiedene Ansichtsdarstellungen derselben Daten verwenden, wie Sie möchten.

Geschichte

  • CouchDB wurde in der Programmiersprache Erlang geschrieben.
  • Es wurde von Damien Katz im Jahr 2005 gestartet.
  • CouchDB wurde 2008 ein Apache-Projekt.

Die aktuelle Version von CouchDB ist 1.61.