HIVESQL - Hive in einer MSSQL Datenbank

avatar



Banner directly from @arcange page

Hi zusammen,

ich hab heute mal wieder versucht eine relativ einfache Liste aus Hive herauszuziehen, es ging darum zu checken ob alle Member der D-A-CH Community auch die Badge dafür haben. @photobook startete diese Aktion gestern und ich hab in meinem Leichtsinn gesagt das ich das schonmal gelöst habe und das Skript sicherlich noch bei mir irgendwo rumliegt.
Das Problem ist hier nämlich das die Abfrage in Beem(ein Python Modul zum connect mit der chain) nur exakt 100 Community Member zurückliefert, schaut man in PeakD sieht man schnell das auch hier nicht mehr Daten zu bekommen sind.
Also hab ich einen Weg gesucht das zu erledigen, denn leider hab ich kein Skript mehr gefunden (meine Ordnung ist leider katastrophal).
Eine Möglichkeit wäre es die Chain komplett zu durchsuchen von dem Moment an ab dem die Community existiert hat, 20.2.2020, und die ganzen Blöcke nach custom_json Transaktionen zu durchsuchen die ein subscribe auf die Community Hive-121566 machen.
Es sei aber hier erwähnt das über diese Art der Transaktionen eine große Menge an Aktivitäten erledigt werden. Zum Beispiel nagelt Splinterlands alle Aktionen über diese Transaktion auf die Chain.
Ich hab dann ein kleines Skript geschrieben das die Chain streamt und nach diesen Operationen filtert, aber das dauert eeeeeeeeeeeeewig weil ich wirklich jeden Block durchsuche und jede custom_json checken muss die darin steckt. Außerdem produziet es recht viel Traffic auf den RPC Nodes.
Es wurde mir schnell klar das das so nix werden kann...

Und dann genau an diesem Punkt nach Stunden des rumprobierens ist es mir aufgefallen das ich genau an dieser Stelle schon einmal war, mit genau dem gleichen Problem, nur ein paar Monate früher. Ich hab die Daten schonmal gebraucht wegen der Aktion bzgl Recovery Accounts nach dem letzten Hack eines Accounts.

Nachdem ich das verstanden habe hab ich auch verstanden warum ich kein Skript gefunden habe, es gab kein wirkliches weil das ne blöde Lösung ist.
Stattdessen war es mir in dem Moment wieder klar die Lösung ist ...

Hive SQL

Hive SQL ist eine MS SQL Datenbank in der die Daten der Hive Chain abgelegt werden und die man mittels normaler SQL Befehle ansprechen kann. Die Datenbank wird von @arcange zur Verfügung gestellt und ist sehr aktuell, man kann sich den Status auf dieser Seite anschauen.

Der große Vorteil ist das die Datebank die Blocks durchgeht und die Daten innerhalb der Tabellen aktualisiert, so gibt es hier die von mir gesuchten Daten mittels eines sehr einfachen SQL Statements in 2 Minuten zu haben, statt der gefühlten Tage die das andere Skript direkt auf der Chain gelaufen wäre (von der unnötigen Belastung der Nodes mal ganz abgesehen).

Wie bekomme ich einen Account?

Das ist relativ einfach und auch relativ kostenlos, die Registrierung kostet genau 1 HBD. Wie das genau funktioniert hat @arcange hier beschrieben. Weitere Kosten fallen keine an, das Tool ist absolut kostenfrei zu benutzen solange dieses Proposal gefundet bleibt.
Wenn euch das Tool gefällt lasst doch einfach einen Vote da!

Was kann ich damit tun?

Naja, ne ganze Menge! Am einfachsten ist es vielleicht sich ein Tool wie HeidiSQL zu installieren und sich mal anzuschauen was da alles so an Daten rumliegt, der große Vorteil gegenüber der Chain ist das das ganze viel übersichtlicher ist und relativ einfach zu verstehen. Die Chain dagegen ist relativ komplex und sehr veränderlich.

Auch das Connecten mit einer Programmiersprache wie Python ist kein Problem, es gibt ein einfaches Tutorial, ebenfalls auf der Website verlinkt.


hivesql1.PNG
die Lösung des Problems

Nachdem es mir wieder eingefallen ist war es genau eine einzige kleine Abfrage die das Problem in weniger als einer Minute gelöst hat.

Wenn euch das interessiert kann ich gerne ein kleines Tutorial machen, wie man auf die Daten zugreift und was man damit tun kann.

Einen schönen Start in die Woche!

Euer Jan

ps thanks @arcange for that wonderful service



0
0
0.000
3 comments
avatar

Hach guck... super. Dann lag die eine Lösung des Problems ja doch viel näher als gedacht. Bin gespannt, wann der eine Bug dahingehend gelöst wird, das man via API dann direkt die gleiche und genaue Summe an Membern angezeigt bekommt.

Thanks für die tolle Erklärung!

0
0
0.000
avatar

Sehr gut!
Sehr interessant.

Wir arbeiten mit unserer AI auch mit einem Tool, welches die Blockchain nach und nach abarbeitet und sobald die Blockid gleich mit der aktuellen ist, wird live gestreamt.
So wird für jede Transaktion live ein Prozess für die AI und den CC Bot geöffnet.

Also quasi ein RPC, der aber nur weiß, was genau in den letzten Sekunden passiert ist.
Also dann doch kein richtiger RPC.

Das mit dem erhöhten Traffic stimmt schon, wir hatten früher teilweise so viel Traffic und offene Verbindungen erzeugt, dass uns öffentliche RPC gesperrt haben.
An aktiven Monaten kommen wir durchaus an die 500+ GB nur Daten, aber ich denke das ist nicht das Problem, wohl eher die gleichzeitig offenen Verbindungen.
Seitdem dieses intern gestreamt wird, haben wir diese Probleme natürlich nicht mehr.

Diese Möglichkeit mit der SQL könnte für uns auch sehr interessant sein :)
Vielen Dank :)

0
0
0.000
avatar

Ich freue mich zu sehen, dass HiveSQL wieder einmal eine einfache Lösung für ein komplexes Problem war. 😀

0
0
0.000