Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

|
//

Hyperledger Fabric CouchDB lässt meine Cloud-Rechnung explodieren

9.1.2020 | 2 Minuten Lesezeit

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.

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 .

|

Beitrag teilen

Gefällt mir

0

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen.

Wir helfen deinem Unternehmen.

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.