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. |
| + | |
| + | == Produkte auf Basis von CouchDB == |
| + | |
| + | * [http://hood.ie/intro/#get-started Hoodie] - Offline-First |
| + | * Cloudant-Service von IBM |
| + | |
| + | |
| + | -------- |
| + | <references/> |
| | | |
| [[Category:Datenbank]] | | [[Category:Datenbank]] |
| [[Category:Web-Development]] | | [[Category:Web-Development]] |