Tutorial -- SQL und die Steemit Blockchain -- Alle Informationen im Griff -- Teil 1 Basics

in #deutsch7 years ago (edited)

Lupe

Hi zusammen

Heute will ich euch eine einfache Möglichkeit vorstellen die Steemit Blockchain mal ein wenig unter die Lupe zu nehmen. Bestimmt habt ihr schon Auswertungen gesehen oder vielleicht hat jemand im Chat schnell eine angefertigt, wie ihr euch denken könnt ist das mitnichten Magie sondern ein paar Tools mit ein paar Abfragen.

Was braucht ihr ?

Wir werden die Blockchain nicht direkt angehen, sondern eine aufbereitete Kopie in einer SQL Datenbank. Das macht uns das Leben sehr viel leichter und führt letztlich zu den selben Ergebnissen :)
Um das tun zu können brauchen wir einen SQL Client, ich benutz an dieser Stelle HeidiSQL. Das Tool ist kostenlos und tut alles was ich an dieser Stelle brauche.

Ansonsten braucht ihr sicherlich ein paar Minuten eurer Zeit um das ganze im nächsten Schritt einzurichten.

Einrichten des SQL Clients

Für die Abfragen benutzen wir das Steemsql Projekt, bei dem es darum geht die Blockchain als SQL Datenbank zur Verfügung zu stellen.
Als ersten Schritt nach der Installation des Heidi SQL Clients müssen die Verbindungsparameter eingestellt werden, dass sieht im Detail wie folgt aus

Verbindungsparameter

Benutzername: steemit
Passwort: steemit

Mit den Einstellungen im Bild sollte die Connection direkt klappen, und weiter gehts im nächsten Abschnitt.

Erste Schritte in SQL

Wenn die Verbindung aufgebaut ist sieht das Bild wie folgt aus:

Connection established

Was ihr hier seht sind die Tabellen, in die das Steemsql Projekt die einzelnen Daten sortiert.
Alle Informationen innerhalb der Blockchain sind hier abgelegt, eine Menge Informationen, die nur darauf warten entdeckt zu werden :)
SQL ist eine Abfragesprache, es wird jeweils durch setzen von einer oder mehreren Bedingungen eine Auswahl getroffen und diese Daten dann angezeigt. Lasst uns das an einem kleinen einfachen Beispiel testen.

Um in den Abfragemodus zu kommen müsst ihr den Reiter mit dem blauen Pfeil und dem Wort Abfrage anklicken. Dann verändert sich das Bild wie folgt.

Abfrage

Wenn ihr jetzt zum Beispiel wissen wollt welche Transaktionen innerhalb von Steemit ihr getätigt habt, dann könnt ihr das folgende SQL Statement eingeben.
Ich habe das hier schon ausgeführt, mit dem blauen Pfeil oben in der Leiste oder mit der Taste F9, dann erscheint folgendes Bild mit der Anzeige meiner Daten.

Daten

Hier kurz der Befehl auseinandergenommen:

  • select * wählt alle Elemente einer Tabelle aus
  • from bezeichnet die Tabelle aus der wir auswählen in dem Fall dbo.TxTransfers
  • where startet den Bedingungsblock,
  • dieses "from" bezeichnet eine Spalte in der Tabelle, nämlich die Spalte in der der Ursprung der Transaktionen gespeichert wird. Die Gänsefüßchen sind wichtig da from auch ein SQL Steuerwort ist und wir kennzeichnen wollen, dass wir hier die Spalte in der Tabelle meinen. Ingesamt lautet die Bedingung "from" = 'jedigeiss' (auch hier sind die einfachen ticks um den Wert wichtig). Das heisst wir durchsuchen die ganze Tabelle und werfen nur Datensätze raus in der Transaktionen stehen die von mir (jedigeiss) ausgegangen sind.

Wie ihr im Bild sehen könnt werden alle meine Transaktionen angezeigt, wollt ihr das eingrenzen könnt ihr das über den Timestamp machen. Dieser ist schon in der Tabelle dbo.TxTransfers enthalten. Wenn ihr eine Tabelle anklickt seht ihr die Inhalte, wie auf folgendem Bild.

Tabelleninhalte

Wenn ihr jetzt, zum Beispiel, nur die Transaktionen ab dem 30.09. haben wollt müsst ihr das wie folgt weiter einschränken.
Als Verbindungswort benutzen wir in diesem Fall AND da wir ja wollen das die ursprüngliche Bedingung weiterhin gilt. Die ganze Abfrage sieht dann wie folgt aus: select * from dbo.TxTransfers where "from" = 'jedigeiss' AND "timestamp" >='2017-09-30'

verfeinerte Abfrage

Als Ergebnis werden dann die Transaktionen eingeschränkt und nur die ausgegeben die auch den Bedingungen entsprechen.

Wie ihr seht ist ne Menge an Informationen direkt verfügbar, wenn man weiss wie man auf diese zugreifen kann.
An dieser Stelle beende ich den ersten Post zu SQL und Steemit, falls ihr Fragen habt ich bin meistens im Steemit.Chat anzutreffen.

Danke fürs Lesen !

Euer Jan

ps wenn etwas nicht verständlich war oder ihr gerne hättet, dass ich den Schwerpunkt auf ein bestimmtes Thema lege nutzt die Kommentare und teilt euch mit :) Danke

Sort:  

Habe es nicht nachvollzogen, aber sehr gut, das mal von der Seite zu zeigen. Probiere später.

Ich hab mir den Server im ManagementStudio angehhangen. Ich sehe aber im Objekt-Explorer nur die Systemdatenbanken und die Datenbank-Momentaufnahmen. Wenn ich per "Use" auf die DBSteem zugreifen will, funktioniert das auch alles. Die Tabellen sind alle vorhanden und ich kann auch selektieren, was ich möchte. Weißt du ob es im SSMS auch eine Möglichkeit gibt, die DB im Objektexplorer angezeigt zu bekommen? Ich könnte zwar jedes Mal auch über sys.tables die entsprechenden Tabellen finden, aber Klick-und-bunt ist manchmal doch ganz hilfreich.

Hi @splatmat, sorry ich muss gestehen das ich vom SSMS keine Ahnung habe :) als nächstes werd ich vermutlich eh mit Python drauf zugreifen, aber für einfache Abfragen reicht so ein SQL Client auf alle Fälle :)

Ich hatte das auch nur mal ausprobiert, da ich das Management Studio ohnehin installiert hab. Ich weiß noch nicht, ob und in welchem Umfang das für mich überhaupt nützlich sein kann/wird. Grundsätzlich kann man die Klotzkette ja auch ohne einen SQL-Server abfragen.

Ja klar das geht auch so mit dem Abfrage ohne sql. Ich find es nur angenehmer mit :)

Klasse Artikel! Danke für die wohlaufbereitete Insider–Info, @jedigeiss. Ob ich das jemals brauche, jetzt wo der Chiller so ein tolles Tool veröffentlicht hat, weiß ich nicht. Aber sehr schön zu wissen, wie es geht! Jetzt kann ich mir sogar vorstellen, wie sein Tool so schnell und problemlos gebaut werden konnte. Und ich kann mir gut vorstellen, wie man über die APIs von den Börsen etc., die Infos hinein bekommt, die uns noch fehlen.

Danke lieber @afrog ! Ja @steemchiller ist drauf und dran all das unnütz zu machen, wie ich mich freuen würde ! Tatsächlich kann man über das joinen der Tabellen noch einige Infos mehr herauskitzeln, aber das wäre in diesem Post zu weit gegangen :)
btw die Übersetzung ist fertig und wird morgen gepostet, 1000 Dank nochmal !
LG
Jan

Ihr seid so fleißige Jungs, taträftig und fackelt nicht lange. Da bin ich als leidender Steemian wirklich an der passenden Adresse alles zu holen, was ich als DAU holen kann. Danke Jungs, ihr macht einen großartigen Job @jedigeiss, @steemchiller, da sind noch ein paar solcher Kaliber zugange…

Nix für Leroy, den Mausschubser. Trotzdem danke für den Einblick und die Mühe!!

:) wie @afrog schon sagte, @steamchiller s tool ist auch sehr mächtig, und dabei deutlich einfacher zu verstehen :)

This post has received a 6.45 % upvote from @boomerang thanks to: @jedigeiss

@boomerang distributes 100% of the SBD and up to 80% of the Curation Rewards to STEEM POWER Delegators. If you want to bid for votes or want to delegate SP please read the @boomerang whitepaper.

@royrodgers has voted on behalf of @minnowpond. If you would like to recieve upvotes from minnowpond on all your posts, simply FOLLOW @minnowpond. To be Resteemed to 4k+ followers and upvoted heavier send 0.25SBD to @minnowpond with your posts url as the memo

@minnowpond1 has voted on behalf of @minnowpond. If you would like to recieve upvotes from minnowpond on all your posts, simply FOLLOW @minnowpond. To be Resteemed to 4k+ followers and upvoted heavier send 0.25SBD to @minnowpond with your posts url as the memo

The @OriginalWorks bot has determined this post by @jedigeiss to be original material and upvoted it!

ezgif.com-resize.gif

To call @OriginalWorks, simply reply to any post with @originalworks or !originalworks in your message!

To enter this post into the daily RESTEEM contest, upvote this comment! The user with the most upvotes on their @OriginalWorks comment will win!

For more information, Click Here! || Click here to participate in the @OriginalWorks writing contest!
Special thanks to @reggaemuffin for being a supporter! Vote him as a witness to help make Steemit a better place!

This post received a 1.6% upvote from @randowhale thanks to @jedigeiss! To learn more, check out @randowhale 101 - Everything You Need to Know!

This post has received a 0.52 % upvote from @drotto thanks to: @banjo.