Learning Platform
Глоссарий Troubleshooting
Урок 02.02 · 19 мин
Средний
trinoprestohistoryopen-source

История: Facebook Presto, PrestoSQL, ребрендинг в Trino

История Trino — это не просто красивая легенда о создании проекта. Понимать её важно по практической причине: имена «Presto» и «Trino» до сих пор оба живут в индустрии, в документации, в названиях коннекторов и драйверов, в вопросах на собеседованиях. Если не знать, что именно и когда произошло, легко запутаться: это один проект под двумя именами? Два разных проекта? Trino — это новая версия Presto?

Короткий ответ: сегодня существуют два разных проекта с общим прошлым. Длинный ответ — точная хронология ниже. Особое внимание уделим тому, что часто рассказывают неточно: разделению 2018 года. Это был не один аккуратный момент, а цепочка из нескольких отдельных событий, растянутая на два с лишним года.


2012: рождение Presto в Facebook

В 2012 году инженеры Facebook столкнулись с конкретной проблемой. У компании было огромное хранилище данных на Hadoop, и аналитика по нему делалась через Apache Hive. Hive работал, но был медленным: он транслировал SQL в задания MapReduce, а MapReduce материализовал промежуточные результаты на диск между этапами. Для пакетной обработки это терпимо, но для интерактивной аналитики, где аналитик хочет ответ за секунды, — неприемлемо.

Команда из четырёх инженеров — Martin Traverso, Dain Sundstrom, David Phillips и Eric Hwang — начала проект нового движка под названием Presto. Идея была в том, чтобы построить распределённый SQL-движок, который не материализует данные на диск между этапами, а гонит их через конвейер операторов в памяти. Это и есть тот pipelined-подход, о котором мы говорили в модуле про скорость Trino.

Зачем создавали Presto: проблема Hive
Hive на MapReduceSQL транслируется в задания MapReduce, промежуточные результаты пишутся на диск между этапами — медленно для интерактивной аналитики
Facebook, 2012
PrestoРаспределённый SQL-движок с pipelined-исполнением: данные текут через операторы в памяти без материализации на диск

Presto оказался успешным внутри Facebook и в 2013 году был открыт как open-source. Его быстро подхватили другие крупные компании со схожей проблемой — большие данные на Hadoop и потребность в быстрой аналитике.

2018-2020: разделение — четыре отдельных события

Здесь начинается самая важная и чаще всего рассказываемая неточно часть. Многие источники сжимают всё в одну фразу: «в 2018 создатели ушли и сделали Trino». Это неверно сразу в нескольких местах. Trino в 2018 ещё не существовало как имя, а само разделение растянулось на цепочку событий с конца 2018 по конец 2020 года. Разберём по шагам.

Событие 1. Конец 2018 — основатели уходят из Facebook и форкают проект. Martin Traverso, Dain Sundstrom и David Phillips покидают Facebook. Они хотят развивать движок дальше как полностью самостоятельный community-проект, вне корпоративного контроля Facebook. Они создают форк — отдельный репозиторий — и называют его PrestoSQL. Обратите внимание: на этом шаге проект называется именно PrestoSQL, а не Trino. Имя Trino появится только через два года.

Событие 2. Январь 2019 — основан Presto Software Foundation. Чтобы у community-проекта была некоммерческая правовая основа, основатели учреждают Presto Software Foundation — независимый некоммерческий фонд, который управляет проектом PrestoSQL. Это отделяет проект от любой одной компании: им управляет фонд, а не корпорация.

Событие 3. Сентябрь 2019 — Facebook создаёт свой фонд и получает trademark. Facebook, со своей стороны, не бросает оригинальный репозиторий Presto. Компания передаёт его под управление Presto Foundation при Linux Foundation и закрепляет за собой trademark — товарный знак на имя «Presto». Теперь есть два фонда с похожими названиями: Presto Software Foundation (у основателей, управляет PrestoSQL) и Presto Foundation при Linux Foundation (у Facebook, управляет оригинальным Presto).

Событие 4. 27 декабря 2020 — PrestoSQL ребрендится в Trino. Из-за trademark на имя «Presto», принадлежащего Facebook, проект PrestoSQL не может дальше использовать слово «Presto» в своём названии. 27 декабря 2020 года PrestoSQL официально переименовывается в Trino. Это не новый проект и не новая версия — это тот же самый код, тот же самый PrestoSQL, просто под новым именем, свободным от trademark-спора.

Хронология разделения: четыре события, не одно
2012Четыре инженера Facebook (Traverso, Sundstrom, Phillips, Hwang) создают Presto как быструю замену Hive
конец 2018
Конец 2018Основатели уходят из Facebook и форкают проект в отдельный репозиторий под именем PrestoSQL — НЕ Trino
январь 2019
Январь 2019Учреждён Presto Software Foundation — некоммерческий фонд, управляющий PrestoSQL
сентябрь 2019
Сентябрь 2019Facebook передаёт оригинальный Presto в Presto Foundation при Linux Foundation и получает trademark на имя Presto
27 декабря 2020
27 декабря 2020Из-за trademark-спора PrestoSQL переименован в Trino — тот же код под новым именем
WARNING

Частая ошибка на собеседованиях — сказать «в 2018 году Presto переименовали в Trino». Это неверно дважды. Во-первых, в 2018 был форк под именем PrestoSQL, а не Trino. Во-вторых, переименование в Trino произошло в конце 2020 года, и это было переименование PrestoSQL, а не оригинального Presto. Между форком и ребрендингом — больше двух лет и два отдельных правовых события.

Почему вообще понадобился форк

Резонный вопрос: зачем основателям было уходить и форкать собственный проект? Дело в разнице моделей развития. Внутри Facebook приоритеты проекта определялись потребностями одной компании. Основатели же хотели вести Presto как настоящий открытый community-проект: с независимым управлением, с прозрачной дорожной картой, с участием широкого сообщества и компаний, не подчинённых одному корпоративному владельцу.

Форк в open-source — это легитимный механизм именно для таких ситуаций. Лицензия позволяет взять код и развивать его отдельной командой по своим правилам. Так из одного проекта Presto получились две ветки развития: оригинальная под управлением Facebook и community-ветка под управлением основателей. Trademark-спор лишь определил, кому какое имя достанется в итоге.

Стоит понимать, что форк здесь — не «раскол со скандалом», а нормальная развилка в жизни открытого проекта. У основателей было ясное видение, какой должна быть модель управления Presto, и open-source-лицензия дала им законный способ это видение реализовать, не дожидаясь ничьего разрешения. Именно так устроена сила открытого кода: проект не заперт в одной компании, и если видение расходится, ветка может пойти своим путём. Для Trino этот путь оказался успешным — community-модель привлекла широкое сообщество и компании, и проект быстро набрал темп развития.

Что досталось Trino от имени Presto

Полезно отдельно проговорить, что именно из «эпохи Presto» Trino унаследовал, потому что эти следы вы будете встречать постоянно.

Главное наследство — сама кодовая база. Trino не написан с нуля в 2020 году; это прямое продолжение кода, начатого в Facebook в 2012-м и развивавшегося как PrestoSQL с 2018-го. Архитектурный фундамент — MPP, координатор и воркеры, модель коннекторов, pipelined-исполнение — заложен ещё в Presto и дошёл до Trino эволюционным путём, постоянно дорабатываясь.

Второе — нумерация версий. Версии Trino — это целые числа без схемы major.minor, и счётчик не сбрасывался при ребрендинге: номера продолжились с тех, что были у PrestoSQL. Поэтому когда вы видите трёхзначный номер релиза Trino, помните, что часть этого счёта накоплена ещё под прежним именем.

Третье — следы в экосистеме. Организация на GitHub называется trinodb, документация живёт на trino.io — это уже Trino. Но в старых интеграциях, конфигурациях и зависимостях иногда встречаются классы, пакеты или имена со словом presto — это отголоски прежнего имени, и пугаться их не нужно.

TIP

Когда читаете техническую литературу про этот движок, ориентируйтесь не на имя, а на дату и контекст. Материал 2019-2020 годов про «PrestoSQL» — это про Trino. Материал про «Presto» нужно читать внимательнее: он может описывать как общий ранний фундамент (тогда применимо к Trino), так и современный PrestoDB (тогда детали могут расходиться). Дата публикации и ссылки на домен — лучшая подсказка.

Что это значит для вас как инженера

Из этой истории следуют несколько практических выводов.

Имя Trino моложе самого движка. Кодовая база ведёт начало с 2012 года, имя Trino — с конца 2020. Когда вы видите в старых статьях, книгах или докладах слово «PrestoSQL» — это ровно то, что сегодня называется Trino. «Trino: The Definitive Guide» от O’Reilly — книга про этот же движок.

Следы старого имени остались в коде и экосистеме. Многое всё ещё несёт отпечаток имени Presto. Версии Trino — целые числа, и нумерация унаследована от PrestoSQL без сброса. Идентификатор организации на GitHub — trinodb. Драйверы и клиенты переименованы, но в старых интеграциях встречаются классы и пакеты со словом presto.

Trino и Presto сегодня — разные проекты. Это ключевой вывод, и ему посвящён следующий урок. У них общий предок и общий код до 2018 года, но с тех пор они развиваются раздельно разными командами и за годы заметно разошлись. Trino — это не «новый Presto» и не «форк Presto, который надо догонять»; это самостоятельный проект, который во многом ушёл вперёд по функциональности.

NOTE

Краткая формула, которую стоит запомнить: Presto (2012, Facebook) -> форк PrestoSQL (конец 2018, основатели) -> ребрендинг в Trino (27 декабря 2020). А оригинальный репозиторий Presto продолжил жить отдельно под управлением Facebook и Linux Foundation — сегодня это проект PrestoDB.

Попробуй сам

Откройте на сайте trino.io блог-пост от 27 декабря 2020 года с анонсом переименования (announcing-trino). Прочитайте его и выпишите, как сами авторы объясняют причину смены имени и что, по их словам, изменилось, а что осталось прежним.

Затем восстановите хронологию по памяти, не подглядывая в урок: назовите год создания Presto, год форка и имя форка, год основания Presto Software Foundation, дату ребрендинга в Trino. Сверьтесь с диаграммой. Если хотя бы один пункт вспомнился неточно — перечитайте раздел про четыре события, потому что именно эта последовательность чаще всего проверяется на собеседованиях.


Проверка знанийKnowledge check
Опишите точную хронологию пути от Presto к Trino. Почему неверно говорить, что 'в 2018 году Presto переименовали в Trino'?
ОтветAnswer
Точная хронология состоит из нескольких отдельных событий. В 2012 году четыре инженера Facebook (Martin Traverso, Dain Sundstrom, David Phillips, Eric Hwang) создали Presto как быстрый распределённый SQL-движок на замену медленному Hive. В конце 2018 года трое основателей ушли из Facebook и форкнули проект в отдельный репозиторий под именем PrestoSQL — именно PrestoSQL, не Trino. В январе 2019 года они учредили Presto Software Foundation — некоммерческий фонд для управления PrestoSQL. В сентябре 2019 года Facebook передал оригинальный Presto в Presto Foundation при Linux Foundation и закрепил за собой trademark на имя Presto. И только 27 декабря 2020 года PrestoSQL из-за trademark-спора был переименован в Trino — это был тот же код под новым именем. Фраза 'в 2018 году Presto переименовали в Trino' неверна дважды: во-первых, в 2018 произошёл форк под именем PrestoSQL, а не Trino, и имени Trino тогда ещё не существовало; во-вторых, ребрендинг в Trino случился в конце 2020 года, и переименовывали PrestoSQL, а не оригинальный Presto. Между форком и ребрендингом прошло больше двух лет и два отдельных правовых события — фонд и trademark.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 4. Зачем в 2012 году инженеры Facebook создали Presto?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 5