Update : Ich habe ein neues Projekt veröffentlicht, Baseball.computer, das als Nachfolger von Boxball konzipiert ist. Es ist viel einfacher zu verwenden (kein Docker erforderlich, läuft vollständig in Ihrem Browser/Programm) und enthält viel mehr Tabellen, Funktionen und Qualitätskontrollen. Das Ereignisschema ist anders, was das Hauptproblem bei der Migration darstellen wird. Mein Ziel ist es, die Wartung und Aktualisierung von Boxball fortzusetzen, solange die Leute es noch verwenden, und ich werde möglicherweise versuchen, Boxball auf das neue Projekt umzustellen, um die Wartung beider zu vereinfachen. Bitte lassen Sie mich wissen, ob Sie in Boxball Dinge tun können, die Sie in Baseball.computer noch nicht tun können, indem Sie ein Problem im Repo einreichen oder mich unter [email protected] erreichen.
Boxball erstellt vorab ausgefüllte Datenbanken der beiden wichtigsten Open-Source-Baseball-Datensätze: Retrosheet und die Baseball-Datenbank. Retrosheet enthält Informationen zu jedem Spielfeld der Major League seit 2000, jedem Spiel seit 1928, jedem Box-Score seit 1901 und jedem Spiel seit 1871. Die Datenbank (basierend auf der Lahman-Datenbank) enthält jährliche Zusammenfassungen für jeden Spieler und jedes Team in der Geschichte. Neben den Daten und Datenbanken selbst setzt Boxball auf folgende Tools:
Befolgen Sie die nachstehenden Anweisungen, um die Distribution Ihrer Wahl zu installieren. Der vollständige Satz an Bildern ist auch auf Docker Hub verfügbar.
Das Retrosheet-Schema ist ausführlich im Code dokumentiert; Sehen Sie sich die Quelle hier an, bis ich eine schönere Lösung gefunden habe.
Wenn Sie das Projekt nützlich finden, denken Sie bitte über eine Spende nach:
Bei Fragen oder Anmerkungen können Sie mich gerne kontaktieren!
Diese Distribution verwendet die Erweiterung cstore_fdw, um PostgreSQL in eine spaltenorientierte Datenbank umzuwandeln. Das bedeutet, dass Sie den umfangreichen Funktionsumfang von Postgres nutzen, jedoch mit einer enormen Verbesserung der Geschwindigkeit und Festplattennutzung. So installieren und führen Sie den Datenbankserver aus:
docker run --name postgres-cstore-fdw -d -p 5433:5432 -e POSTGRES_PASSWORD="postgres" -v ~/boxball/postgres-cstore-fdw:/var/lib/postgresql/data doublewick/boxball:postgres-cstore-fdw-latest
Ungefähr eine Stunde nach dem Herunterladen des Bildes werden die Daten vollständig in die Datenbank geladen und Sie können als Benutzer postgres
mit dem Passwort postgres
auf Port 5433
eine Verbindung dazu herstellen (entweder mit dem psql
Befehlszeilentool oder einem Datenbank-Client Ihrer Wahl). ). Die Daten werden auf Ihrem Computer in ~/boxball/postgres-cstore-fdw
(~1,5 GB) gespeichert, was bedeutet, dass Sie den Container stoppen/entfernen können, ohne die Daten neu laden zu müssen, wenn Sie ihn wieder einschalten.
Clickhouse ist eine von Yandex entwickelte Datenbank mit einigen sehr beeindruckenden Leistungsbenchmarks. Es verbraucht weniger Speicherplatz als Postgres cstore_fdw, aber deutlich mehr RAM (~5 GB). Ich habe noch keinen Vergleich der Abfrageleistung durchgeführt. So installieren und führen Sie den Datenbankserver aus:
docker run --name clickhouse -d -p 8123:8123 -v ~/boxball/clickhouse:/var/lib/clickhouse doublewick/boxball:clickhouse-latest
15–30 Minuten nach dem Herunterladen des Bildes werden die Daten vollständig in die Datenbank geladen, und Sie können eine Verbindung zu ihr herstellen, indem Sie entweder den Container anhängen und die clickhouse-client
CLI verwenden oder indem Sie einen lokalen Datenbank-Client an Port 8123
als verwenden default
. Die Daten werden auf Ihrem Computer in ~/boxball/clickhouse
(~700 MB) gespeichert, was bedeutet, dass Sie den Container stoppen/entfernen können, ohne die Daten neu laden zu müssen, wenn Sie ihn wieder einschalten.
Drill ist ein Framework, das SQL-Abfragen direkt auf Dateien ermöglicht, ohne dass ein Schema deklariert werden muss. Es wird normalerweise in einem Computercluster mit riesigen Datensätzen verwendet, wir verwenden jedoch ein Einzelknoten-Setup. Zum Installieren und Ausführen:
docker run --name drill -id -p 8047:8047 -p 31010:31010 -v ~/boxball/drill:/data doublewick/boxball:drill-latest
Nach dem Herunterladen des Bildes stehen die Daten sofort zur Abfrage zur Verfügung. Verwenden Sie Port 8047
für den Zugriff auf die Web-Benutzeroberfläche (die einen SQL-Runner enthält) und Port 31010
für die Verbindung über einen Datenbank-Client. Sie können den Container auch anhängen und über die Befehlszeile abfragen. Die Daten werden auf Ihrem Computer in ~/boxball/drill
(~700 MB) gespeichert.
Hinweis: Diese Frameworks sind beim Abfragen von Play-by-Play-Daten wahrscheinlich übermäßig langsam und beanspruchen deutlich mehr Speicherplatz als ihre spaltenorientierten Gegenstücke.
Ähnliche Konfiguration wie die erweiterte Version von cstore_fdw oben, jedoch auf herkömmliche Weise gespeichert.
docker run --name postgres -d -p 5432:5432 -e POSTGRES_PASSWORD="postgres" -v ~/boxball/postgres:/var/lib/postgresql/data doublewick/boxball:postgres-latest
Ungefähr 90 Minuten nach dem Herunterladen des Bildes werden die Daten vollständig in die Datenbank geladen und Sie können sich als Benutzer postgres
mit dem Passwort postgres
auf Port 5432
mit ihr verbinden (entweder mit dem psql
-Befehlszeilentool oder einem Datenbank-Client Ihrer Wahl). ). Die Daten werden auf Ihrem Computer in ~/boxball/postgres
(~12 GB) gespeichert, was bedeutet, dass Sie den Container stoppen/entfernen können, ohne die Daten neu laden zu müssen, wenn Sie ihn wieder einschalten.
Zum Installieren und Ausführen:
docker run --name mysql -d -p 3306:3306 -v ~/boxball/mysql:/var/lib/mysql doublewick/boxball:mysql-latest
Ungefähr zwei Stunden nach dem Herunterladen des Bildes werden die Daten vollständig in die Datenbank geladen und Sie können sich als Benutzer root
auf Port 3306
mit ihr verbinden. Die Daten werden auf Ihrem Computer in ~/boxball/mysql
(~12 GB) gespeichert, was bedeutet, dass Sie den Container stoppen/entfernen können, ohne die Daten neu laden zu müssen, wenn Sie ihn wieder einschalten.
Zum Installieren und Ausführen:
docker run --name sqlite -d -p 8080:8080 -v ~/boxball/sqlite:/db doublewick/boxball:sqlite-latest
Etwa zwei Minuten nach dem Herunterladen des Bildes werden die Daten vollständig in die Datenbank geladen. localhost:8080
stellt eine Web-Benutzeroberfläche bereit, über die Sie Abfragen schreiben und Schema-Explorationen durchführen können.
Parquet ist ein spaltenorientiertes Datenformat, das ursprünglich für das Hadoop-Ökosystem entwickelt wurde. Es bietet solide Unterstützung in Spark, Pandas und vielen anderen Frameworks. OneDrive
Die ursprünglichen CSVs aus dem Extraktionsschritt (jede CSV-Datei wird im ZSTD-Format komprimiert). OneDrive
Das Chadwick Bureau von Ted Turocy entwickelte die Tools und Repos, die dieses Projekt ermöglichten. Ich bin auch Sean Lahman für die Erstellung seiner Datenbank dankbar, die ich seit über 15 Jahren verwende. Dank der großzügigen Open-Source-Pläne von Jetbrains, CircleCI, Github und Docker Hub konnte ich dieses Projekt kostenlos entwickeln und hosten.
Retrosheet repräsentiert die gemeinsame Leistung Tausender Baseball-Fans aus über 150 Jahren Erfahrung in der Punkteführung und Dateneingabe. Ich hoffe, dass Boxball mehr historische Forschung ermöglicht, um diese Tradition fortzusetzen.
Der gesamte Code wird unter der Apache 2.0-Lizenz veröffentlicht. Die Daten der Baseball-Datenbank werden unter der CC-SA 4.0-Lizenz vertrieben. Retrosheet-Daten werden unter der Bedingung veröffentlicht, dass der folgende Text gut sichtbar erscheint:
The information used here was obtained free of
charge from and is copyrighted by Retrosheet. Interested
parties may contact Retrosheet at "www.retrosheet.org".