CouchDB: Unterschied zwischen den Versionen

Aus CodicaTipps
Zur Navigation springen Zur Suche springen
(Weiterleitung nach Softwareentwicklung#CouchDB erstellt)
 
Zeile 1: Zeile 1:
#REDIRECT [[Softwareentwicklung#CouchDB]]
+
 
 +
CouchDB ist ein [[OpenSource]]-Datenbank-System, das über eine [[REST]]-Schnittstelle gesteuert wird. Mit PouchDB gibt es eine Replikation im Browser, so dass offline weitergearbeitet werden kann.
 +
 
 +
Siehe
 +
* den [http://guide.couchdb.org/draft/index.html#part/i Definitive Guide]
 +
* die [http://sitr.us/2009/06/30/database-queries-the-couchdb-way.html Suche nach Substrings mittels Indizes]
 +
* [http://pouchdb.com/2014/06/17/12-pro-tips-for-better-code-with-pouchdb.html Design Patterns für PouchDB] (gelten im Regelfall auch für CouchDB)
 +
* [https://pouchdb.com/2015/04/05/filtered-replication.html Gefilterte Replikation zur Vermeidung zu hohen Datentransfervolumens]
 +
* [https://github.com/pouchdb-community/pouchdb-authentication#couchdb-authentication-recipe PouchDB Authentication] (Browser-Seite)
 +
 
 +
 
 +
===== Einrichten eines Administrators =====
 +
 
 +
Zu Beginn kann jeder Nutzer in CouchDB alles ändern und lesen. Das nennt man die Admin Party. Diese kann durch Erzeugen eines Administrators zerstört werden.
 +
  curl -s -X PUT http://localhost:5984/_node/couchdb@localhost/_config/admins/admin -d '"admin_pw"'
 +
 
 +
 
 +
===== Views =====
 +
 
 +
Um eine View "words", die einem Designdokument "_design/myDesignDoc" in der Datenbank "texts", hinterlegt ist, zu nutzen, ruft man sie folgendermaßen auf:
 +
  curl -X GET 'http://localhost:5984/texts/_design/myDesignDoc/_view/words?startkey="Man"&endkey="Manz"' | python -m json.tool
 +
 
 +
Damit erhält man mehrere Datensätze, die zuvor mit der emit()-Funktion erzeugt wurden. Will man nur Treffer für einen bestimmten Schlüssel, ersetzt man die startkey und endkey durch ein einzelnes <code>key=SUCHWORT</code>.
 +
 
 +
Will man sich die Ausgangsdokumente gleich mit anzeigen lassen, nimmt man den zusätzlichen Parameter <code>include_docs=true</code>.<ref>Vgl. http://docs.couchdb.org/en/latest/ddocs/views/collation.html</ref>
 +
 
 +
===== PouchDB =====
 +
 
 +
Bei einer Replikation von CouchDB zu PouchDB ist die <code>retry</code>-Option wichtig, um das Abbrechen der Replikation zu vermeiden. Beispiel:
 +
  var localdb=new PouchDB("mylocalDB");
 +
  var remoteDB=new PouchDB("http://www.example.com:5984/couchdb/myremoteDB");
 +
  localdb.replicate.from(remoteDB,{ retry:true })
 +
      .on('complete', function() {
 +
      status("Replication completed.");
 +
    }).on('error', function(err) {
 +
        status("an Error occured: "+err);
 +
       
 +
        ergebnis(err);
 +
    }).on('change', function(change) {
 +
      counter++;
 +
      status("Change #"+counter+": "+change);
 +
    });
 +
 
 +
 
 +
===== Fehlerbehebung =====
 +
 
 +
Unter Linux Mint 18 gab es nach dem Upgrade auf Version 2.1.1-1~xenial von CouchDB folgenden Fehler ("internal_server_error"): <cite>No DB shards could be opened.</cite>.
 +
 
 +
Abhilfe schaffte ein Downgrade auf Version 2.1.0~xenial. Dazu geht man in der Beschreibung des Pakets <code>couchdb</code> in <code>aptitude</code> ganz nach unten. Hier werden die möglichen Versionen angezeigt, die dann wie Pakete installiert werden können. Mit der Taste ''F'' bei Version 2.1.1-1~xenial kann dann noch verhindert werden, dass bei einer normalen Aktualisierung dieses Paket wieder mitinstalliert wird.
 +
 
 +
--------
 +
<references/>
  
 
[[Category:Datenbank]]
 
[[Category:Datenbank]]
 
[[Category:Web-Development]]
 
[[Category:Web-Development]]

Version vom 21. November 2017, 14:30 Uhr

CouchDB ist ein OpenSource-Datenbank-System, das über eine REST-Schnittstelle gesteuert wird. Mit PouchDB gibt es eine Replikation im Browser, so dass offline weitergearbeitet werden kann.

Siehe


Einrichten eines Administrators

Zu Beginn kann jeder Nutzer in CouchDB alles ändern und lesen. Das nennt man die Admin Party. Diese kann durch Erzeugen eines Administrators zerstört werden.

 curl -s -X PUT http://localhost:5984/_node/couchdb@localhost/_config/admins/admin -d '"admin_pw"'


Views

Um eine View "words", die einem Designdokument "_design/myDesignDoc" in der Datenbank "texts", hinterlegt ist, zu nutzen, ruft man sie folgendermaßen auf:

 curl -X GET 'http://localhost:5984/texts/_design/myDesignDoc/_view/words?startkey="Man"&endkey="Manz"' | python -m json.tool

Damit erhält man mehrere Datensätze, die zuvor mit der emit()-Funktion erzeugt wurden. Will man nur Treffer für einen bestimmten Schlüssel, ersetzt man die startkey und endkey durch ein einzelnes key=SUCHWORT.

Will man sich die Ausgangsdokumente gleich mit anzeigen lassen, nimmt man den zusätzlichen Parameter include_docs=true.[1]

PouchDB

Bei einer Replikation von CouchDB zu PouchDB ist die retry-Option wichtig, um das Abbrechen der Replikation zu vermeiden. Beispiel:

 var localdb=new PouchDB("mylocalDB");
 var remoteDB=new PouchDB("http://www.example.com:5984/couchdb/myremoteDB");
 localdb.replicate.from(remoteDB,{ retry:true })
     .on('complete', function() {
     status("Replication completed.");
    }).on('error', function(err) {
       status("an Error occured: "+err);
       
       ergebnis(err);
    }).on('change', function(change) {
      counter++;
      status("Change #"+counter+": "+change);
    });


Fehlerbehebung

Unter Linux Mint 18 gab es nach dem Upgrade auf Version 2.1.1-1~xenial von CouchDB folgenden Fehler ("internal_server_error"): No DB shards could be opened..

Abhilfe schaffte ein Downgrade auf Version 2.1.0~xenial. Dazu geht man in der Beschreibung des Pakets couchdb in aptitude ganz nach unten. Hier werden die möglichen Versionen angezeigt, die dann wie Pakete installiert werden können. Mit der Taste F bei Version 2.1.1-1~xenial kann dann noch verhindert werden, dass bei einer normalen Aktualisierung dieses Paket wieder mitinstalliert wird.