Hyperledger Fabric CouchDB lässt meine Cloud-Rechnung explodieren

Keine Kommentare

Hyperledger Fabric ist eine hervorragende DLT-Plattform und bietet großartige Anpassungsmöglichkeiten. Eine Möglichkeit davon ist es, verschiedene Datenbanken zur Speicherung von Blockchain-Daten zu nutzen. Die empfohlene und am besten unterstützte Option ist die Verwendung einer CouchDB. Sie erlaubt es komplexe Abfragen auf Blockchain-Daten durch Hyperledger Fabric Chaincode mittels verschiedener Programmiersprachen, wie etwa go, JavaScript oder Java, durchzuführen. Um mehr über Hyperledger in Kombination mit CouchDB zu erfahren, werfe einen Blick in die offizielle Dokumentation.

Im Bild unten findet man eine CouchDB-Übersicht anhand eines Hyperledger-Fabric-Knotens mit dem Channel „compactionchannel“ und dem Chaincode „cdbc“. Dies ist nur ein Beispiel, um die CouchDB-Struktur zu demonstrieren und enthält noch nicht viele Daten.CouchDb Übersicht mit Hyperledger

Blockchains wie Hyperledger speichern Daten auf unbestimmte Zeit und somit wächst die Gesamtmenge der Daten kontinuierlich an. Um die genannten komplexen Abfragen zu ermöglichen, wird der aktuelle „world state“ in CouchDB abgelegt. Wenn sich Daten ändern, ändert sich auch der entsprechende „world state“. CouchDB fügt den neuen Wert nur an seine interne Repräsentation an und entfernt den alten Wert zunächst nicht. Normalerweise würde die automatische Compaction unbenutzte Daten kontinuierlich entfernen und die Größe der Datenbank klein halten.

Unter Umständen startet die automatische Compaction nicht, solch eine Situation haben wir bei einem unserer Kunden festgestellt. Dies führte zu einem kontinuierlichen Wachstum der Datenbank und zu Unmengen unnötiger GBs an Speicherplatz. In diesem Fall hast du nun zwei Möglichkeiten: Du kannst die Compaction neu konfigurieren oder manuell starten.

Status der Hyperledger CouchDB Compaction

Mit dem folgenden Befehl kannst du den Compaction Status abfragen:

$ curl -H "Content-Type: application/json" -H "Authorization: Basic <Basic-Auth>" http://<CouchDB>:5984/_node/nonode@nohost/_config

{
  ...
  "compactions": {
    "_default": "[{db_fragmentation, \"30%\"}, {view_fragmentation, \"30%\"}]"
  },
  "compaction_daemon": {
    "check_interval": "300",
    "min_file_size": "256000"
  }
}

Manuelle Compaction

Du kannst die manuelle Compaction folgendermaßen anstoßen:

$ curl -H "Content-Type: application/json" -H "Authorization: Basic <Basic-Auth>" -X POST http://<CouchDB>:5984/<channel-name>_<chaincode>/_compact

{"ok":true}

Um den Status des Prozesses zu überprüfen:

$ curl -H "Content-Type: application/json" -H "Authorization: Basic <Basic_Auth>" http://<CouchDB>:5984/<channel-name>_<chaincode>

{
  ...
  "compaction_running": true,
  ...
}

Darüber hinaus können nicht nur die Datenbank, sondern auch CouchDB Views komprimiert werden. Dazu kann folgender REST-Aufruf verwendet werden:

curl -H "Content-Type: application/json" -H "Authorization: Basic <Basic-Auth>" -X POST http://<CouchDB>:5984/<channel-name>_<chaincode>/_compact/<view-name>

{"ok":true}

Abhängig von der Größe der Hyperledger-Fabric-Datenbank oder der Views kann die Compaction einige Zeit in Anspruch nehmen.

Weitere Informationen über Compaction sind in der offiziellen Dokumentation von CouchDB zu finden.
Tipp: Auf unsere Website haben wir umfassende Informationen zusammengestellt, wie wir dir dabei helfen können, das Thema Blockchain und Ledger-Technoligie im eigenen Kontext einzusetzen. Alle Angebote zu Blockchain.

Jan Rümenapf

Jan ist Java-Web-Entwickler im Agilen Umfeld. Derzeit arbeitet er sehr viel mit ReactJS, Spring und Microservices Landschaften. Außerdem ist der Teil des ‚blockcentric‘ Teams, dass codecentric Blockchain Team.

Norbert Schneider

Seit Ende 2015 hilft Norbert als IT Consultant unseren Kunden bei der Lösung ihrer IT Probleme.

Bei der Entwicklung von Individualsoftware legt er besonderen Wert auf den Software Craftsmanship Gedanken und daraus hervorgehendem Clean Code.

Über 1.000 Abonnenten sind up to date!

Die neuesten Tipps, Tricks, Tools und Technologien. Jede Woche direkt in deine Inbox.

Kostenfrei anmelden und immer auf dem neuesten Stand bleiben!
(Keine Sorge, du kannst dich jederzeit abmelden.)

Hiermit willige ich in die Erhebung und Verarbeitung der vorstehenden Daten für das Empfangen des monatlichen Newsletters der codecentric AG per E-Mail ein. Ihre Einwilligung können Sie per E-Mail an datenschutz@codecentric.de, in der Informations-E-Mail selbst per Link oder an die im Impressum genannten Kontaktdaten jederzeit widerrufen. Von der Datenschutzerklärung der codecentric AG habe ich Kenntnis genommen und bestätige dies mit Absendung des Formulars.

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.