Обновление : я выпустил новый проект baseball.computer, который задуман как преемник бокса. Он намного проще в использовании (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,5 ГБ), что означает, что вы можете остановить/удалить контейнер без необходимости перезагрузки данных при его повторном включении.
Clickhouse — это база данных, разработанная Яндексом, с очень впечатляющими показателями производительности. Он использует меньше дискового пространства, чем Postgres cstore_fdw, но значительно больше оперативной памяти (~5 ГБ). Мне еще предстоит провести какое-либо сравнение производительности запросов. Чтобы установить и запустить сервер базы данных:
docker run --name clickhouse -d -p 8123:8123 -v ~/boxball/clickhouse:/var/lib/clickhouse doublewick/boxball:clickhouse-latest
Через 15-30 минут после загрузки образа данные будут полностью загружены в базу данных, и вы сможете подключиться к ней либо подключив контейнер и используя CLI clickhouse-client
, либо используя клиент локальной базы данных на порту 8123
в качестве пользователь default
. Данные будут сохраняться на вашем компьютере в ~/boxball/clickhouse
(~700 МБ), что означает, что вы можете остановить/удалить контейнер без необходимости перезагрузки данных при его повторном включении.
Drill — это платформа, которая позволяет выполнять SQL-запросы непосредственно к файлам без объявления какой-либо схемы. Обычно он используется в вычислительном кластере с огромными наборами данных, но мы используем настройку с одним узлом. Чтобы установить и запустить:
docker run --name drill -id -p 8047:8047 -p 31010:31010 -v ~/boxball/drill:/data doublewick/boxball:drill-latest
Данные будут доступны для запроса сразу после загрузки изображения. Используйте порт 8047
для доступа к веб-интерфейсу пользователя (который включает в себя средство выполнения SQL) и порт 31010
для подключения через клиент базы данных. Вы также можете подключить контейнер и выполнить запрос из командной строки. Данные будут сохранены на вашем компьютере в ~/boxball/drill
(~700 МБ).
Примечание. Эти платформы, вероятно, будут чрезмерно медленными при запросе данных воспроизведения и занимают значительно больше дискового пространства, чем их столбцовые аналоги.
Конфигурация аналогична расширенной версии 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
(~12 ГБ), что означает, что вы можете остановить/удалить контейнер без необходимости перезагрузки данных при его повторном включении.
Чтобы установить и запустить:
docker run --name mysql -d -p 3306:3306 -v ~/boxball/mysql:/var/lib/mysql doublewick/boxball:mysql-latest
Примерно через два часа после загрузки образа данные будут полностью загружены в базу данных, и вы сможете подключиться к ней как пользователь root
по порту 3306
. Данные будут сохраняться на вашем компьютере в ~/boxball/mysql
(~12 ГБ), что означает, что вы можете остановить/удалить контейнер без необходимости перезагрузки данных при его повторном включении.
Чтобы установить и запустить:
docker run --name sqlite -d -p 8080:8080 -v ~/boxball/sqlite:/db doublewick/boxball:sqlite-latest
Примерно через две минуты после загрузки изображения данные будут полностью загружены в базу данных. localhost:8080
предоставит веб-интерфейс, где вы сможете писать запросы и выполнять исследование схемы.
Parquet — это формат столбчатых данных, изначально разработанный для экосистемы Hadoop. Он имеет надежную поддержку в Spark, Pandas и многих других платформах. OneDrive
Исходные CSV-файлы, полученные на этапе извлечения (каждый CSV-файл сжимается в формате ZSTD). OneDrive
Бюро Чедвика Теда Туроци разработало инструменты и репозитории, которые сделали этот проект возможным. Я также благодарен Шону Ламану за создание его базы данных, которой я пользуюсь уже более 15 лет. Мне удалось разработать и разместить этот проект бесплатно благодаря щедрым планам с открытым исходным кодом от Jetbrains, CircleCI, Github и Docker Hub.
Retrosheet представляет собой коллективные усилия тысяч любителей бейсбола, занимающихся ведением счета и вводом данных на протяжении более 150 лет. Я надеюсь, что боксбол будет способствовать продолжению исторических исследований и продолжению этой традиции.
Весь код распространяется под лицензией 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".