Verwenden Sie LevelDB, um umfangreiche Abfragen zu implementieren

     Hyperledger kann auch verwendet werdenCouchDB, CouchDB kann Unterstützt select-Anweisungen ähnlich SQL zur Implementierung umfangreicher Abfragen. CouchDB kann die Verwendung eines Clients vermeiden, einfach über HTTP anfordern. Die Datenbank kann betrieben werden. Allerdings ist CouchDB nicht sehr effizient. Ohne Indizierung 2-3 Millionen Datenstücken keine wesentlichen Auswirkungen auf Abfragen ohne Indizierung. [1]. 2-3 führen dazu, dass die Abfrage sehr zeitaufwändig ist, was dazu führt, dass die Ausführung der Vertragsfunktion eine Zeitüberschreitung erleidet und fehlschlägt . Bei herkömmlichen relationalen Datenbanken hat die Menge von select Zehntausend Datenelemente unter Verwendung der Anweisung

Verwenden Sie LevelDB, um umfangreiche Abfragen zu implementieren

Um LevelDB zum Implementieren umfangreicher Abfragen verwenden zu können, müssen wir einige zusätzliche Arbeit leisten. https://www.jianshu.com/p/b131a8503559

建立索引
运用shim包中关于组合键的方法

    // GetStateByPartialCompositeKey fragt den Status im Ledger basierend auf verwendet werden kann, deren Präfix übereinstimmt     // seit der Transaktionsbestätigung nicht geändert hat (Phantom-Lesevorgänge erkannt).GetStateByPartialCompositeKey(objectType string, keys []string) (StateQueryIteratorInterface, error)     // Die Abfrage wird während der Validierungsphase erneut ausgeführt, um sicherzustellen, dass sich der Ergebnissatz     // Rufen Sie Close() für das zurückgegebene StateQueryIteratorInterface-Objekt auf, wenn Sie fertig sind.     // Siehe verwandte Funktionen SplitCompositeKey und CreateCompositeKey.     // U+0000 (Null-Byte) und U+ enthalten 10FFFF (größter und nicht zugewiesener Codepunkt).     // erwartet, dass sie nur gültige utf8-Zeichenfolgen enthalten und nicht     // der angegebene partielle zusammengesetzte Schlüssel. Für „objectType“ und Attribute wird, der zum Durchlaufen aller zusammengesetzten Schlüssel     //
    // ein gegebener partieller zusammengesetzter Schlüssel. Diese Funktion gibt einen Iterator zurück








   

    // CreateCompositeKey kombiniert die angegebenen „Attribute“ zu einem zusammengesetzten
    // Schlüssel
. Es wird erwartet, dass der Objekttyp und die Attribute nur gültige utf8
    //-Zeichenfolgen enthalten und nicht U+0000 (Null-Byte) und U+10FFFF enthalten
    // ( größter und nicht zugewiesener Codepunkt).
    // Der resultierende zusammengesetzte Schlüssel kann als Schlüssel in PutState() verwendet werden.
    CreateCompositeKey(objectType string, attributes [] string) (string, Fehler)

    // SplitCompositeKey teilt den angegebenen Schlüssel in Attribute auf, anhand derer der
    // zusammengesetzte Schlüssel gebildet wurde. Zusammengesetzte Schlüssel, die bei Bereichsabfragen
    // oder teilweise zusammengesetzten Schlüsselabfragen gefunden werden, können daher in ihre
    // zusammengesetzten Teile aufgeteilt werden.
    SplitCompositeKey(compositeKey string) (string, []string, error)

GetStateByPartialCompositeKeyDie -Methode verwendet eine Präfix-Matching-Methode, um Schlüssel abzugleichen und zurückzugeben.

Mit anderen Worten: Es kann nur der vordere Teil des zusammengesetzten Schlüssels abgeglichen werden, nicht der hintere Teil.

Wenn Sie beispielsweise einen Index von „“Jahr~Farbe~Autonummer“ haben, können Sie nur „ „< /span>““ zur Abfrage , Sie können „Farbe“ nicht zum Abfragen verwenden. Wenn wir also einen zusammengesetzten Primärschlüssel mit mehreren Schlüsseln haben, muss die Reihenfolge jedes Schlüssels sorgfältig überlegt werden. Jahr~Farbe““, „“Jahr

[1]https://learnblockchain.cn/article/3831 Fassen Sie die Fallstricke zusammen, die im Entwicklungsprozess des Hyperledger-Vertrags aufgetreten sind

Supongo que te gusta

Origin blog.csdn.net/sjh2100/article/details/128062402
Recomendado
Clasificación