更新:我发布了一个新项目,baseball.computer,它被设计为 boxball 的后继者。它更容易使用(不需要 Docker,完全在浏览器/程序中运行),并且包含更多表格、功能和质量控制。事件模式不同,这将是主要的迁移痛点。我的目标是只要人们仍在使用 Boxball 就继续维护和更新它,并且我可能会尝试在新项目之上重新构建 Boxball 基础,以使维护变得更容易。如果您在 Boxball 中可以做一些在 Baseball.computer 中还不能做的事情,请通过在存储库上提交问题或通过 [email protected] 与我联系来告诉我。
Boxball创建两个最重要的开源棒球数据集的预填充数据库:Retrosheet 和 Baseball Databank。 Retrosheet 包含自 2000 年以来的每场大联盟投球、自 1928 年以来的每场比赛、自 1901 年以来的每场比赛得分以及自 1871 年以来的每场比赛的信息。数据库(基于拉赫曼数据库)包含历史上每个球员和球队的年度摘要。除了数据和数据库本身之外,Boxball 还依赖于以下工具:
请按照以下说明安装您选择的发行版。 Docker Hub 上还提供了全套镜像。
Retrosheet 模式在代码中有大量记录;请参阅此处的源代码,直到找到更漂亮的解决方案。
如果您发现该项目有用,请考虑捐赠给:
有问题或意见请随时与我联系!
该发行版使用 cstore_fdw 扩展将 PostgreSQL 转变为面向列的数据库。这意味着您可以获得 Postgres 的丰富功能集,但速度和磁盘使用率有了巨大的改进。安装并运行数据库服务器:
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
下载映像大约一个小时后,数据将完全加载到数据库中,您可以以用户postgres
身份、密码postgres
在端口5433
上连接到它(使用psql
命令行工具或您选择的数据库客户端) )。数据将保存在您的计算机上的~/boxball/postgres-cstore-fdw
(~1.5GB) 中,这意味着您可以停止/删除容器,而无需在重新打开容器时重新加载数据。
Clickhouse 是 Yandex 开发的数据库,具有一些非常令人印象深刻的性能基准。它使用的磁盘空间比 Postgres cstore_fdw 少,但 RAM 明显多(~5GB)。我还没有运行任何查询性能比较。安装并运行数据库服务器:
docker run --name clickhouse -d -p 8123:8123 -v ~/boxball/clickhouse:/var/lib/clickhouse doublewick/boxball:clickhouse-latest
下载镜像后 15-30 分钟,数据将完全加载到数据库中,您可以通过附加容器并使用clickhouse-client
CLI 或使用端口8123
上的本地数据库客户端作为连接到数据库。用户default
。数据将保存在您的计算机上的~/boxball/clickhouse
(~700MB) 中,这意味着您可以停止/删除容器,而无需在重新打开容器时重新加载数据。
Drill 是一个框架,允许直接对文件进行 SQL 查询,而无需声明任何模式。它通常用于具有大量数据集的计算集群,但我们使用单节点设置。安装并运行:
docker run --name drill -id -p 8047:8047 -p 31010:31010 -v ~/boxball/drill:/data doublewick/boxball:drill-latest
图片下载后可立即查询数据。使用端口8047
访问 Web UI(其中包括 SQL 运行程序),使用端口31010
通过数据库客户端进行连接。您还可以附加容器并从命令行进行查询。数据将保存在您的计算机上的~/boxball/drill
(~700MB) 中。
注意:这些框架在查询实时数据时可能会非常慢,并且它们比柱状框架占用更多的磁盘空间。
与上面的cstore_fdw扩展版本类似的配置,但以常规方式存储。
docker run --name postgres -d -p 5432:5432 -e POSTGRES_PASSWORD="postgres" -v ~/boxball/postgres:/var/lib/postgresql/data doublewick/boxball:postgres-latest
下载映像后大约 90 分钟,数据将完全加载到数据库中,您可以以用户postgres
和密码postgres
在端口5432
上连接到它(使用psql
命令行工具或您选择的数据库客户端) )。数据将保存在您的计算机上的~/boxball/postgres
(~12GB) 中,这意味着您可以停止/删除容器,而无需在重新打开容器时重新加载数据。
安装并运行:
docker run --name mysql -d -p 3306:3306 -v ~/boxball/mysql:/var/lib/mysql doublewick/boxball:mysql-latest
下载镜像后大约两个小时,数据将完全加载到数据库中,您可以以root
用户身份在端口3306
上连接到数据库。数据将保存在您的计算机上的~/boxball/mysql
(~12GB) 中,这意味着您可以停止/删除容器,而无需在重新打开容器时重新加载数据。
安装并运行:
docker run --name sqlite -d -p 8080:8080 -v ~/boxball/sqlite:/db doublewick/boxball:sqlite-latest
下载图像后大约两分钟,数据将完全加载到数据库中。 localhost:8080
将提供一个 Web UI,您可以在其中编写查询并执行模式探索。
Parquet 是一种最初为 Hadoop 生态系统开发的列式数据格式。它在 Spark、Pandas 和许多其他框架中拥有坚实的支持。云端硬盘
提取步骤中的原始 CSV(每个 CSV 文件都以 ZSTD 格式压缩)。云端硬盘
Ted Turocy 的 Chadwick Bureau 开发了使该项目成为可能的工具和存储库。我还感谢 Sean Lahman 创建了他的数据库,我已经使用该数据库超过 15 年了。感谢 Jetbrains、CircleCI、Github 和 Docker Hub 慷慨的开源计划,我能够免费开发和托管这个项目。
Retrosheet 代表了数千名棒球迷 150 年来记分和数据输入的集体努力。我希望 Boxball 能够促进更多的历史研究,以延续这一传统。
所有代码均在 Apache 2.0 许可证下发布。棒球数据库数据根据 CC-SA 4.0 许可证分发。 Retrosheet数据在以下文本突出显示的情况下发布:
The information used here was obtained free of
charge from and is copyrighted by Retrosheet. Interested
parties may contact Retrosheet at "www.retrosheet.org".