CouchDB: Unterschied zwischen den Versionen

Aus KGS-Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= CouchDB =
{{Infobox|Bild=[[Datei:Apache CouchDB logo.svg]]|Feldname1=Entwickler|Daten1=[[Apache Software Foundation]]|Bildtext=Offizielles Logo|Feldname2=Entwicklungsjahr|Daten2=2005|Feldname3=Aktuelle Version|Daten3=3.3.1 (11. Januar 2023)|Feldname4=Betriebssystem|Daten4=[[Windows]], [[Unix]], [[macOS]], [[Linux]]|Feldname5=Programmiersprache|Daten5=[[Erlang]]|Feldname6=Kategorie|Daten6=[[Dokumentenorientierte Datenbank]]|Feldname7=Lizenz|Daten7=Apache|Feldname8=deutschsprachig|Daten8=nein}}
[[Datei:Apache CouchDB logo.svg|mini|Offizielles Logo
{| class="wikitable"
! colspan="2" |Basisdaten
|-
|'''Entwickler'''
|Apache Software Foundation
|-
|'''Erscheinungsjahr'''
|2005
|-
|'''Aktuelle Version'''
|3.3.1(11. Januar 2023)
|-
|'''Betriebssystem'''
|[[Linux]], [[Unix]], [[Mac OS X]], [[Windows]]
|-
|'''Programmiersprache'''
|[[Erlang]]
|-
|'''Kategorie'''
|[[dokumentenorientierte Datenbank]]
|-
|'''Lizenz'''
|Apache
|-
|'''deutschsprachig'''
|nein
|}
]]
'''CouchDB''' ist eine [[Open source|open-source]] [[Datenbank]], die seit 2005 entwickelt wird. Allerdings ist sie keine [[relationalen Datenbanken]] wie SQL, sondern eine [[Dokumentenorientierte Datenbank|dokumentenorientierte Datenbanksprache]], die ihre Daten nicht in Tabellen speichert, sondern in [[JSON]]-Objekten in Dokumenten. Damit ist CouchDB Teil der [[No-sql]] Datenbanken.


== Entwicklungsgeschichte ==
[[CouchDB]] ist eine [[Open Source|Open-Source]] [[Datenbank]], die seit 2005 entwickelt wird. Allerdings ist sie keine [[Relation|relationalen Datenbanken]] wie [[SQL]], sondern eine [[Dokumentenorientierte Datenbank|dokumentenorientierte Datenbanksprache]], die ihre Daten nicht in Tabellen speichert, sondern in [[JSON]]-Objekten in Dokumenten. Damit ist CouchDB Teil der [[NoSQL]]-Datenbanken.
 
==Entwicklungsgeschichte==
CouchDB wird seit 2005 von Damien Katz entwickelt. Der Name ''CouchDB'' ist ein halbironisches Backronym, also ein Akronym, dessen Bezeichnung vor der Bedeutung festgelegt wurde, das für „'''C'''luster '''o'''f '''u'''nreliable '''c'''ommodity '''h'''ardware '''D'''ata '''B'''ase“ steht.
CouchDB wird seit 2005 von Damien Katz entwickelt. Der Name ''CouchDB'' ist ein halbironisches Backronym, also ein Akronym, dessen Bezeichnung vor der Bedeutung festgelegt wurde, das für „'''C'''luster '''o'''f '''u'''nreliable '''c'''ommodity '''h'''ardware '''D'''ata '''B'''ase“ steht.


Im November 2007 wies die IANA('''I'''nternet '''A'''ssigned '''N'''umbers '''A'''uthority) CouchDB offiziell die Portnummer 5984 ([[TCP]]/[[UDP]]) zu.
Im November 2007 wies die IANA ('''I'''nternet '''A'''ssigned '''N'''umbers '''A'''uthority) CouchDB offiziell die Portnummer 5984 ([[TCP]]/[[UDP]]) zu.<ref>[https://de.wikipedia.org/wiki/CouchDB Wikipedia: CouchDB]</ref>


Nachdem Damien Katz die Entwicklung von CouchDB für zwei Jahre privat betrieb, arbeitete er von 2008 bis 2009 bei IBM als Vollzeitangestellter, wo er die [[Open Source|Open-Source]] Entwicklung von CouchDB weiter voran trieb. Im Jahr 2009 gründete Damien Katz eine eigene Firma namens ''Relaxed Inc''.
Nachdem Damien Katz die Entwicklung von CouchDB für zwei Jahre privat betrieb, arbeitete er von 2008 bis 2009 bei IBM als Vollzeitangestellter, wo er die [[Open Source|Open-Source]]-Entwicklung von CouchDB weiter voran trieb. Im Jahr 2009 gründete Damien Katz eine eigene Firma namens ''Relaxed Inc''.


Im November 2008 wurde CouchDB zu einem Apache-Projekt der Apache Software Foundation.
Im November 2008 wurde CouchDB zu einem Apache-Projekt der [[Apache Software Foundation]].


== Eigenschaften ==
==Eigenschaften==
Die wichtigsten Eigenschaften von CouchDB:
Die wichtigsten Eigenschaften von CouchDB:  


; Architektur
;Architektur
: CouchDB ist eine dokumentenorientierte Datenbank und unterscheidet sich wie andere dokumentenorientierte Datenbanken (z. B. [[MongoDB]]) grundlegend von relationalen Datenbanken (RDBM). Im Gegensatz zu diesen speichert CouchDB die Daten nicht in Tabellen, Zeilen und Spalten, sondern in Dokumenten als JSON-Objekte (ältere Versionen von CouchDB benutzten [[XML]]).
:CouchDB ist eine dokumentenorientierte Datenbank und unterscheidet sich wie andere dokumentenorientierte Datenbanken (z. B. [[MongoDB]]) grundlegend von relationalen Datenbanken (RDBM). Im Gegensatz zu diesen speichert CouchDB die Daten nicht in Tabellen, Zeilen und Spalten, sondern in Dokumenten als JSON-Objekte (ältere Versionen von CouchDB benutzten [[XML]]).
; Zugriff und Schnittstellen
;Zugriff und Schnittstellen
: Der Zugriff auf die Daten erfolgt bei CouchDB über eine [[REST-HTTP]]-Schnittstelle.
:Der Zugriff auf die Daten erfolgt bei CouchDB über eine [[REST]]-[[HTTP]]-Schnittstelle.
:; Indirekt
:;Indirekt
:: Für viele klassische Programmiersprachen stehen Bibliotheken und Clients zur Verfügung, um wie bei anderen Datenspeichern (z. B. SQL-Datenbanken oder Textdateien), den Zugriff auf CouchDB zu standardisieren: [[JavaScript]] (Standard), [[PHP]], [[Perl]], [[Ruby]] oder [[Python]]. Die Unterstützung für weitere Sprachen ist geplant.
::Für viele klassische Programmiersprachen stehen Bibliotheken und Clients zur Verfügung, um wie bei anderen Datenspeichern (z. B. SQL-Datenbanken oder Textdateien), den Zugriff auf CouchDB zu standardisieren: [[JavaScript]] (Standard), [[PHP]], [[Perl]], [[Ruby]] oder [[Python (Programmiersprache)|Python]]. Die Unterstützung für weitere Sprachen ist geplant.
:: Zusätzlich bietet CouchDB eine Plug-in-Architektur, die es dem Nutzer erlaubt, weitere Funktionen hinzuzufügen.
::Zusätzlich bietet CouchDB eine Plug-in-Architektur, die es dem Nutzer erlaubt, weitere Funktionen hinzuzufügen.
:; Direkt
:;Direkt
:: Dokumente und Dateien können direkt von CouchDB ohne einen zusätzlichen Webserver an einen Browser ausgeliefert werden. Diese können per [[Ajax]] (das ebenfalls von CouchDB ausgeliefert wird) weitere Inhalte nachladen und an das [[DOM(Document Object Model)]] hängen. Es kann aber auch direkt dynamisch serverseitig generiertes HTML geladen werden.
::Dokumente und Dateien können direkt von CouchDB ohne einen zusätzlichen Webserver an einen Browser ausgeliefert werden. Diese können per [[Ajax]] (das ebenfalls von CouchDB ausgeliefert wird) weitere Inhalte nachladen und an das [[DOM]] (Document Object Model) hängen. Es kann aber auch direkt dynamisch serverseitig generiertes HTML geladen werden.


; MapReduce
; MapReduce
: Im Gegensatz zu herkömmlichen Datenbanken werden Filter bei CouchDB parallel über [[MapReduce]], einem von Google entwickelten Programmier-Modell, das es erlaubt Prozesse zu parallelisieren und auf verschiedene Rechner aufzuteilen, nicht während der eigentlichen Abfrage abgearbeitet. Trotzdem können Abfragen (sogenannte ''views'') in CouchDB auch Funktionen enthalten, die während der Abfrage ausgeführt werden.
:Im Gegensatz zu herkömmlichen Datenbanken werden Filter bei CouchDB parallel über [[MapReduce]], einem von Google entwickelten Programmier-Modell, das es erlaubt Prozesse zu parallelisieren und auf verschiedene Rechner aufzuteilen, nicht während der eigentlichen Abfrage abgearbeitet. Trotzdem können Abfragen (sogenannte ''views'') in CouchDB auch Funktionen enthalten, die während der Abfrage ausgeführt werden.
; Multiversion Concurrency Control
;Multiversion Concurrency Control
: Um Schreib-Lese Blockaden zu vermeiden werden mit Multiversion Concurrency Control, einem Verfahren, das dazu dient, konkurrierende Zugriffe auf eine Datenbank möglichst effizient auszuführen, ohne zu blockieren oder die Konsistenz der Datenbank zu gefährden, Daten nicht überschrieben, sondern immer neue Versionen hinzugefügt. Beim Replizieren wird die große Menge an alten Versionen nicht weitergegeben. Über die Nutzung von [[ACID]]''('''a'''tomicity, '''c'''onsistency, '''i'''solation'' und '''''d'''urability''; deutsch: '''''A'''tomarität, '''K'''onsistenz, '''I'''solation'' und '''''D'''auerhaftigkeit)''  wird u. a. die Versionsverwaltung und hohe Zugriffsgeschwindigkeit erreicht.
:Um Schreib-Lese Blockaden zu vermeiden werden mit Multiversion Concurrency Control, einem Verfahren, das dazu dient, konkurrierende Zugriffe auf eine Datenbank möglichst effizient auszuführen, ohne zu blockieren oder die Konsistenz der Datenbank zu gefährden, Daten nicht überschrieben, sondern immer neue Versionen hinzugefügt. Beim Replizieren wird die große Menge an alten Versionen nicht weitergegeben. Über die Nutzung von [[ACID-Modell]] ''('''a'''tomicity, '''c'''onsistency, '''i'''solation'' und '''''d'''urability''; deutsch: '''''A'''tomarität, '''K'''onsistenz, '''I'''solation'' und '''''D'''auerhaftigkeit)''  wird u. a. die Versionsverwaltung und hohe Zugriffsgeschwindigkeit erreicht.
; Merge-Replikation
;Merge-Replikation
: Durch die Möglichkeit der Merge-Replikation können mehrere Instanzen gleichzeitig und unabhängig betrieben werden, ohne das Dateninkonsistenzen entstehen.
:Durch die Möglichkeit der Merge-Replikation können mehrere Instanzen gleichzeitig und unabhängig betrieben werden, ohne das Dateninkonsistenzen entstehen.


== Anwendung ==
==Anwendung==
Aufgrund seiner Geschwindigkeit und Möglichkeit mit unstrukturierten Daten gut umzugehen wird CouchDB z.B. beim Lagre Hadron Collider in CERN verwendet. Weiterhin wird die Datenbank auch von Organisationen wie dem Internationalen Roten Kreuz und United Airlines verwendet.
Aufgrund seiner Geschwindigkeit und Möglichkeit mit unstrukturierten Daten gut umzugehen wird CouchDB z.B. beim Lagre Hadron Collider in CERN verwendet. Weiterhin wird die Datenbank auch von Organisationen wie dem Internationalen Roten Kreuz und United Airlines verwendet.


== Weblinks ==
==Weblinks==
[https://couchdb.apache.org/ Offizielle Website 🇬🇧]
 
* [https://couchdb.apache.org/ Offizielle Website 🇬🇧]
* [https://docs.couchdb.org/en/stable/ Offizielle Dokumentation 🇬🇧]
* [https://de.wikipedia.org/wiki/CouchDB Wikipedia Artikel🇩🇪]


[https://docs.couchdb.org/en/stable/ Offizielle Dokumentation 🇬🇧]
== Quellen ==


[https://de.wikipedia.org/wiki/CouchDB Wikipedia Artikel🇩🇪]
<references />


{{Navigationsleiste Datenbanken}}
{{Navigationsleiste Datenbanken}}
[[Kategorie:Datenbanken]]

Aktuelle Version vom 29. September 2023, 14:09 Uhr

CouchDB
Apache CouchDB logo.svg
Offizielles LogoVorlage:Infobox/Wartung/Bild

Entwickler Apache Software Foundation
Entwicklungsjahr 2005
Aktuelle Version 3.3.1 (11. Januar 2023)
Betriebssystem Windows, Unix, macOS, Linux
Programmiersprache Erlang
Kategorie Dokumentenorientierte Datenbank
Lizenz Apache
deutschsprachig nein

CouchDB ist eine Open-Source Datenbank, die seit 2005 entwickelt wird. Allerdings ist sie keine relationalen Datenbanken wie SQL, sondern eine dokumentenorientierte Datenbanksprache, die ihre Daten nicht in Tabellen speichert, sondern in JSON-Objekten in Dokumenten. Damit ist CouchDB Teil der NoSQL-Datenbanken.

Entwicklungsgeschichte

CouchDB wird seit 2005 von Damien Katz entwickelt. Der Name CouchDB ist ein halbironisches Backronym, also ein Akronym, dessen Bezeichnung vor der Bedeutung festgelegt wurde, das für „Cluster of unreliable commodity hardware Data Base“ steht.

Im November 2007 wies die IANA (Internet Assigned Numbers Authority) CouchDB offiziell die Portnummer 5984 (TCP/UDP) zu.[1]

Nachdem Damien Katz die Entwicklung von CouchDB für zwei Jahre privat betrieb, arbeitete er von 2008 bis 2009 bei IBM als Vollzeitangestellter, wo er die Open-Source-Entwicklung von CouchDB weiter voran trieb. Im Jahr 2009 gründete Damien Katz eine eigene Firma namens Relaxed Inc.

Im November 2008 wurde CouchDB zu einem Apache-Projekt der Apache Software Foundation.

Eigenschaften

Die wichtigsten Eigenschaften von CouchDB:

Architektur
CouchDB ist eine dokumentenorientierte Datenbank und unterscheidet sich wie andere dokumentenorientierte Datenbanken (z. B. MongoDB) grundlegend von relationalen Datenbanken (RDBM). Im Gegensatz zu diesen speichert CouchDB die Daten nicht in Tabellen, Zeilen und Spalten, sondern in Dokumenten als JSON-Objekte (ältere Versionen von CouchDB benutzten XML).
Zugriff und Schnittstellen
Der Zugriff auf die Daten erfolgt bei CouchDB über eine REST-HTTP-Schnittstelle.
Indirekt
Für viele klassische Programmiersprachen stehen Bibliotheken und Clients zur Verfügung, um wie bei anderen Datenspeichern (z. B. SQL-Datenbanken oder Textdateien), den Zugriff auf CouchDB zu standardisieren: JavaScript (Standard), PHP, Perl, Ruby oder Python. Die Unterstützung für weitere Sprachen ist geplant.
Zusätzlich bietet CouchDB eine Plug-in-Architektur, die es dem Nutzer erlaubt, weitere Funktionen hinzuzufügen.
Direkt
Dokumente und Dateien können direkt von CouchDB ohne einen zusätzlichen Webserver an einen Browser ausgeliefert werden. Diese können per Ajax (das ebenfalls von CouchDB ausgeliefert wird) weitere Inhalte nachladen und an das DOM (Document Object Model) hängen. Es kann aber auch direkt dynamisch serverseitig generiertes HTML geladen werden.
MapReduce
Im Gegensatz zu herkömmlichen Datenbanken werden Filter bei CouchDB parallel über MapReduce, einem von Google entwickelten Programmier-Modell, das es erlaubt Prozesse zu parallelisieren und auf verschiedene Rechner aufzuteilen, nicht während der eigentlichen Abfrage abgearbeitet. Trotzdem können Abfragen (sogenannte views) in CouchDB auch Funktionen enthalten, die während der Abfrage ausgeführt werden.
Multiversion Concurrency Control
Um Schreib-Lese Blockaden zu vermeiden werden mit Multiversion Concurrency Control, einem Verfahren, das dazu dient, konkurrierende Zugriffe auf eine Datenbank möglichst effizient auszuführen, ohne zu blockieren oder die Konsistenz der Datenbank zu gefährden, Daten nicht überschrieben, sondern immer neue Versionen hinzugefügt. Beim Replizieren wird die große Menge an alten Versionen nicht weitergegeben. Über die Nutzung von ACID-Modell (atomicity, consistency, isolation und durability; deutsch: Atomarität, Konsistenz, Isolation und Dauerhaftigkeit) wird u. a. die Versionsverwaltung und hohe Zugriffsgeschwindigkeit erreicht.
Merge-Replikation
Durch die Möglichkeit der Merge-Replikation können mehrere Instanzen gleichzeitig und unabhängig betrieben werden, ohne das Dateninkonsistenzen entstehen.

Anwendung

Aufgrund seiner Geschwindigkeit und Möglichkeit mit unstrukturierten Daten gut umzugehen wird CouchDB z.B. beim Lagre Hadron Collider in CERN verwendet. Weiterhin wird die Datenbank auch von Organisationen wie dem Internationalen Roten Kreuz und United Airlines verwendet.

Weblinks

Quellen