Mise à jour : j'ai publié un nouveau projet, baseball.computer, conçu comme le successeur du boxball. Il est beaucoup plus facile à utiliser (aucun Docker requis, s'exécute entièrement dans votre navigateur/programme) et comprend beaucoup plus de tableaux, de fonctionnalités et de contrôles de qualité. Le schéma des événements est différent, ce qui sera le principal problème de la migration. Mon objectif est de continuer la maintenance et les mises à jour de Boxball tant que les gens l'utilisent encore, et je pourrais essayer de rebaser Boxball au-dessus du nouveau projet pour faciliter la maintenance des deux. S'il vous plaît laissez-moi savoir s'il y a des choses que vous pouvez faire dans Boxball que vous ne pouvez pas encore faire dans baseball.computer en déposant un problème sur le dépôt ou en me contactant à [email protected].
Boxball crée des bases de données préremplies des deux ensembles de données de baseball open source les plus importants : Retrosheet et Baseball Databank. Retrosheet contient des informations sur chaque terrain de ligue majeure depuis 2000, chaque jeu depuis 1928, chaque score depuis 1901 et chaque match depuis 1871. La banque de données (basée sur la base de données Lahman) contient des résumés annuels pour chaque joueur et équipe de l'histoire. En plus des données et bases de données elles-mêmes, Boxball s'appuie sur les outils suivants :
Suivez les instructions ci-dessous pour installer la distribution de votre choix. L’ensemble complet des images est également disponible sur Docker Hub.
Le schéma Retrosheet est largement documenté dans le code ; voir la source ici jusqu'à ce que je trouve une solution plus jolie.
Si vous trouvez le projet utile, pensez à faire un don à :
N'hésitez pas à me contacter pour toute question ou commentaire !
Cette distribution utilise l'extension cstore_fdw pour transformer PostgreSQL en une base de données orientée colonnes. Cela signifie que vous bénéficiez de la richesse des fonctionnalités de Postgres, mais avec une énorme amélioration de la vitesse et de l'utilisation du disque. Pour installer et exécuter le serveur de base de données :
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
Environ une heure après le téléchargement de l'image, les données seront entièrement chargées dans la base de données et vous pourrez vous y connecter en tant qu'utilisateur postgres
avec le mot de passe postgres
sur le port 5433
(soit en utilisant l'outil de ligne de commande psql
, soit en utilisant un client de base de données de votre choix). ). Les données seront conservées sur votre machine dans ~/boxball/postgres-cstore-fdw
(~1,5 Go), ce qui signifie que vous pouvez arrêter/supprimer le conteneur sans avoir à recharger les données lorsque vous le rallumez.
Clickhouse est une base de données développée par Yandex avec des tests de performances très impressionnants. Il utilise moins d'espace disque que Postgres cstore_fdw, mais beaucoup plus de RAM (~ 5 Go). Je n'ai pas encore effectué de comparaisons de performances de requête. Pour installer et exécuter le serveur de base de données :
docker run --name clickhouse -d -p 8123:8123 -v ~/boxball/clickhouse:/var/lib/clickhouse doublewick/boxball:clickhouse-latest
15 à 30 minutes après le téléchargement de l'image, les données seront entièrement chargées dans la base de données et vous pourrez vous y connecter soit en attachant le conteneur et en utilisant la CLI clickhouse-client
, soit en utilisant un client de base de données local sur le port 8123
comme default
de l'utilisateur. Les données seront conservées sur votre machine dans ~/boxball/clickhouse
(~700 Mo), ce qui signifie que vous pouvez arrêter/supprimer le conteneur sans avoir à recharger les données lorsque vous le rallumez.
Drill est un framework qui permet d'effectuer des requêtes SQL directement sur les fichiers, sans avoir à déclarer de schéma. Il est généralement utilisé sur un cluster informatique avec des ensembles de données volumineux, mais nous utilisons une configuration à nœud unique. Pour installer et exécuter :
docker run --name drill -id -p 8047:8047 -p 31010:31010 -v ~/boxball/drill:/data doublewick/boxball:drill-latest
Les données seront immédiatement disponibles pour interrogation après le téléchargement de l’image. Utilisez le port 8047
pour accéder à l'interface utilisateur Web (qui inclut un exécuteur SQL) et le port 31010
pour vous connecter via un client de base de données. Vous pouvez également attacher le conteneur et la requête à partir de la ligne de commande. Les données seront conservées sur votre machine dans ~/boxball/drill
(~700 Mo).
Remarque : ces frameworks sont susceptibles d'être d'une lenteur prohibitive lors de l'interrogation de données play-by-play, et ils occupent beaucoup plus d'espace disque que leurs homologues en colonnes.
Configuration similaire à la version étendue cstore_fdw ci-dessus, mais stockée de manière conventionnelle.
docker run --name postgres -d -p 5432:5432 -e POSTGRES_PASSWORD="postgres" -v ~/boxball/postgres:/var/lib/postgresql/data doublewick/boxball:postgres-latest
Environ 90 minutes après le téléchargement de l'image, les données seront entièrement chargées dans la base de données et vous pourrez vous y connecter en tant qu'utilisateur postgres
avec le mot de passe postgres
sur le port 5432
(soit en utilisant l'outil de ligne de commande psql
, soit en utilisant un client de base de données de votre choix. ). Les données seront conservées sur votre machine dans ~/boxball/postgres
(~12 Go), ce qui signifie que vous pouvez arrêter/supprimer le conteneur sans avoir à recharger les données lorsque vous le rallumez.
Pour installer et exécuter :
docker run --name mysql -d -p 3306:3306 -v ~/boxball/mysql:/var/lib/mysql doublewick/boxball:mysql-latest
Environ deux heures après le téléchargement de l'image, les données seront entièrement chargées dans la base de données et vous pourrez vous y connecter en tant qu'utilisateur root
sur le port 3306
. Les données seront conservées sur votre machine dans ~/boxball/mysql
(~12 Go), ce qui signifie que vous pouvez arrêter/supprimer le conteneur sans avoir à recharger les données lorsque vous le rallumez.
Pour installer et exécuter :
docker run --name sqlite -d -p 8080:8080 -v ~/boxball/sqlite:/db doublewick/boxball:sqlite-latest
Environ deux minutes après le téléchargement de l'image, les données seront entièrement chargées dans la base de données. localhost:8080
fournira une interface utilisateur Web dans laquelle vous pourrez écrire des requêtes et effectuer une exploration de schéma.
Parquet est un format de données en colonnes développé à l'origine pour l'écosystème Hadoop. Il bénéficie d'un support solide dans Spark, Pandas et de nombreux autres frameworks. OneDrive
Les CSV originaux issus de l'étape d'extraction (chaque fichier CSV est compressé au format ZSTD). OneDrive
Le bureau Chadwick de Ted Turocy a développé les outils et les dépôts qui ont rendu ce projet possible. Je remercie également Sean Lahman d'avoir créé sa base de données, que j'utilise depuis plus de 15 ans. J'ai pu développer et héberger ce projet gratuitement grâce aux généreux plans open source de Jetbrains, CircleCI, Github et Docker Hub.
Retrosheet représente l'effort collectif de milliers de fans de baseball sur 150 ans de tenue de scores et de saisie de données. J'espère que Boxball facilitera davantage de recherches historiques pour perpétuer cette tradition.
Tout le code est publié sous la licence Apache 2.0. Les données de la Baseball Databank sont distribuées sous la licence CC-SA 4.0. Les données Retrosheet sont publiées à condition que le texte ci-dessous apparaisse bien en évidence :
The information used here was obtained free of
charge from and is copyrighted by Retrosheet. Interested
parties may contact Retrosheet at "www.retrosheet.org".