В марте 2024 года инженер-программист из Сан-Франциско заметил странную аномалию: его SSH-подключения стали выполняться на полсекунды дольше обычного. Большинство людей проигнорировали бы это. Он — нет. Запустив диагностические инструменты, он отследил проблему до библиотеки сжатия и обнаружил бэкдор, внедрённый поддерживаемым государством атакующим. Три года социальной инженерии потребовалось злоумышленнику, чтобы получить доступ к доверенному open-source проекту. Эксперты по безопасности назвали это потенциально самой опасной атакой на цепочку поставок в истории интернета. До компрометации сотен миллионов компьютеров оставались недели.
Инженера, который поймал угрозу, звали Андрес Фройнд. Его основная работа была связана с базой данных, о которой большинство людей никогда не слышало. С PostgreSQL.
Профессор, который не умел писать код
В 1971 году 28-летний Майкл Стоунбрейкер поступил на должность ассистента профессора в Калифорнийский университет Беркли. Его диссертация была посвящена цепям Маркова и, по его собственному признанию, не имела никакой практической ценности. У него было пять лет, чтобы получить постоянную должность. И вот замечательная деталь: он никогда в жизни не создавал программного обеспечения. Его коллега Дэвид Дьюитт позже удивлялся, как человек без опыта разработки и с ограниченными способностями к программированию (вообще без них, как он полагал) в итоге запустил индустрию стоимостью 50 миллиардов долларов.
Но Стоунбрейкеру не нужно было писать код. Ему нужно было думать. Вдохновлённый революционной статьёй Эдгара Кодда 1970 года о реляционной модели, он вместе с коллегой Юджином Вонгом создал Ingress — одну из первых работающих реляционных баз данных. Название было шутливым намёком на французского живописца Жана Огюста Доминика Энгра. Ingress конкурировал с IBM и выигрывал.
К 1980 году Стоунбрейкер основал компанию по продаже своей системы, но клиенты начали жаловаться. Финансовая фирма сообщила, что в системе неправильно реализовано время: они построили юлианский календарь, но финансовые контракты используют 360-дневный год с 12 равными месяцами. В Ingress это нельзя было представить. ГИС-проект работал недопустимо медленно, и это нельзя было исправить. Стоунбрейкер осознал, что создал базу данных, которую нельзя расширять.
В 1986 году он вернулся в Беркли и начал заново. Новый проект назвали Postgres — буквально «после Ingress». Его радикальная идея: позволить пользователям определять собственные типы данных, операторы и индексы. Сделать базу данных бесконечно расширяемой. Сам Стоунбрейкер не написал ни строчки кода — он руководил блестящими аспирантами, которые делали реальную работу. Postgres работал. Это было революционно.
А в 1994 году Стоунбрейкер ушёл из университета, чтобы основать очередную компанию. Беркли выпустил финальную версию кода и закрыл проект.
Случайное спасение
Два аспиранта Беркли спасли Postgres случайно. Эндрю Ю и Джолли Чен не были разработчиками Postgres. Им нужна была база данных для собственного исследовательского проекта, а заброшенный код оказался лучшим доступным вариантом. Они привели его в порядок: заменили старый язык запросов на SQL, переписали всё на стандартный C, сократили кодовую базу на 25%, повысив производительность до 50%. Публичный выпуск был почти случайностью. «Мы не планировали выпускать это публично, — говорил позже Чен. — Популярность стала приятным сюрпризом, а тот факт, что проект силён спустя столько лет после нашей работы, превосходит наши самые смелые мечты».
5 сентября 1995 года они выпустили Postgres95 под открытой лицензией. Стоунбрейкер в своей Тьюринговской лекции 20 лет спустя дал им прозвища «Ворчун» (Grumpy) и «Соня» (Sleepy). Он сказал, что именно они сделали Postgres значимым. Но ни Ю, ни Чен не имели времени поддерживать проект. Ю ушёл работать в компанию Стоунбрейкера, Чен — в индустрию. Передача была поразительно неформальной: просто создали несколько списков рассылки, FTP-сайты — и всё. «Ни Эндрю, ни я не чувствовали, что мы владеем проектом», — вспоминал Чен. Академический прототип, заброшенный и спасённый двумя студентами, которые даже не хотели этого, выпущенный почти случайно, а затем переданный незнакомцам в интернете. На этом фундаменте построена самая популярная база данных в мире.
Учитель и дизайнер пинбольных автоматов
Люди, превратившие заброшенный код в настоящий проект, имели самые неожиданные биографии. Брюс Момджан имел степень магистра в области образования, был учителем математики и информатики в старшей школе. Он консультировал юридические фирмы, когда скачал Postgres и понял: у проекта есть потенциал, но ему не хватает лидерства. «Над ним работал один человек неполный день, поэтому я решил помочь». Он стал публичным лицом проекта, евангелистом и организатором на следующие три десятилетия.
Том Лейн — самый невероятный герой в истории баз данных. Он получил PhD в Университете Карнеги-Меллон, но изначально хотел проектировать пинбольные автоматы. Он работал в HP над калькуляторами, создал библиотеку libjpeg, которая обрабатывает практически каждое JPEG-изображение, со-автор спецификации PNG, а его код работает на Марсе в системе визуализации марсохода Perseverance. Он присоединился к PostgreSQL в 1998 году, потому что нуждался в базе данных для хранения биржевых котировок, и подсел. К 2000 году он входил в десятку крупнейших контрибьюторов во всё открытое программное обеспечение на Земле. Когда кто-то предложил бессмысленный бенчмарк, Лейн ответил: «Попробуйте перевезти 500 человек из Лос-Анджелеса в Токио на F-15».
8 июля 1996 года Марк Фурнье из Онтарио, Канада, предоставил первый сервер. Проект переименовали в PostgreSQL — решение, которое будет преследовать их вечно. А из Красноармейска (Россия) разработчик Вадим Михеев добавил MVCC (многоверсионный контроль конкурентности) — одно из важнейших архитектурных решений в истории баз данных, позволяющее множеству пользователей одновременно читать и писать, не блокируя друг друга.
Момджан откровенно описывал первые дни: «В первые пару месяцев задача состояла в том, чтобы просто не дать ему упасть». Тем временем MySQL был везде — часть LAMP-стека, по умолчанию в каждом хостинге, его преподавали на всех курсах. PostgreSQL был, по словам Момджана, «очень далёким вторым».
Десятилетие скучной правильности
Пока MySQL оседлал волну Web 2.0, а MongoDB пропагандировал NoSQL-революцию, PostgreSQL делал нечто глубоко немодное: он фокусировался на корректности. Версия за версией, тихо и методично, проект накапливал возможности, которые в итоге окажутся решающими.
История с репликацией — характерный эпизод той эпохи. Годами основная команда считала репликацию вне фокуса проекта, что породило экосистему несовершенных обходных решений. Пользователи были разочарованы. На конференции PGCon 2008 Том Лейн наконец признал: «Эта политика слишком сильно препятствует принятию PostgreSQL». Потоковая репликация появилась в 2010 году, разработанная в основном японской NTT. На это ушло почти десятилетие давления сообщества.
А затем случилось движение, изменившее всё. В 2014 году PostgreSQL добавил JSONB — бинарный JSON с полноценной индексацией. Его построил профессиональный астроном Олег Бартунов из Московского государственного университета имени М.В. Ломоносова, который случайно оказался в разработке баз данных, потому что ему нужна была бесплатная база данных для изучения вселенной. Вместе с коллегой Теодором Сигаевым они реализовали полнотекстовый поиск, несколько типов индексов и JSONB — функцию, которая «съела обед» MongoDB. Астроном создал технологию, нейтрализовавшую целое движение баз данных. JSONB означал, что PostgreSQL может хранить гибкие JSON-документы и накладывать реляционные ограничения в одной базе. Мем разошёлся вирусно: машина, съезжающая с шоссе MongoDB на трассу PostgreSQL. Скучная база данных просто впитала NoSQL-революцию, даже не вспотев.
А затем разразился шторм. В 2016 году Uber опубликовал пост «Why Uber Engineering Switched from Postgres to MySQL» — одну из самых спорных статей в истории баз данных. Она подробно и беспощадно описывала проблемы с амплификацией записи, раздуванием индексов и репликацией. Сообщество PostgreSQL взорвалось. Разработчики публиковали поточечные опровержения. Консенсус: статья была технически точна для специфической нагрузки Uber на древней версии PostgreSQL, но это всё равно что судить об автомобиле 2024 года по модели 2012 года. Большинство проблем с тех пор было исправлено, но было больно. И это стало призывом исправить то, что сломано.
Между тем одна страна сделала ставку на PostgreSQL за годы до всех остальных. Япония приняла Postgres ещё в 1991 году — за пять лет до того, как западное сообщество вообще организовалось. NTT создала выделенный open-source центр, компания Fujitsu активно вносила вклад. К версии PostgreSQL 14 18% функций поступило от японских разработчиков. Брюс Момджан называл это «феноменом Джерри Льюиса» — когда что-то становится необъяснимо популярнее за границей. Но ранняя вера Японии окупилась. Потоковая репликация, наконец заткнувшая критиков в 2010 году, была создана преимущественно японской NTT.
Имя, которое все ненавидят
Том Лейн однажды написал, возможно, самое цитируемое письмо в истории проекта: «Решение 1996 года назвать это PostgreSQL вместо того, чтобы вернуться к простому Postgres, было единственной худшей ошибкой, которую этот проект когда-либо совершал». Споры об имени не утихают 30 лет. Джош Беркус предлагал 500 долларов из собственного кармана на перепечатку материалов. Французская и японская группы пользователей возражали из-за затрат на переход. В 2007 году основная команда издала вердикт, который ничего не решил: «Проект продолжит использовать имя PostgreSQL, но принимает Postgres как псевдоним». На официальном сайте есть аудиофайл с произношением, который почти никто не слушал. Это самый успешный программный продукт в истории, о названии которого никто не может договориться.
Золотая лихорадка вокруг PostgreSQL
В 2015 году Майкл Стоунбрейкер получил премию Тьюринга — Нобелевскую премию в области вычислений. В своей лекции он сказал замечательную вещь о сообществе, которое продолжило его творение: «Это лучшее, на что способен open source, и я хочу отметить, что я не имею к этому никакого отношения. Этой группе людей мы все обязаны огромной благодарностью». Он подписался: «Любяще, Ворчун». Сам Стоунбрейкер построил созвездие компаний по продаже баз данных: Illustra продана за 400 миллионов долларов, Vertica — до 500 миллионов, VoltDB, Tamr. Но ни одна не конкурировала напрямую с PostgreSQL. Он охарактеризовал его успех как «счастливую случайность, к которой я почти не имел отношения».
Создатель ушёл элегантно, но коммерческая экосистема, построенная на PostgreSQL, взорвалась. Supabase (open-source альтернатива Firebase) достигла оценки в 5 миллиардов долларов к 2025 году. Neon (serverless PostgreSQL) была куплена Databricks за миллиард. Crunchy Data — Snowflake за 250 миллионов. Citus Data — Microsoft. Каждый крупный облачный провайдер (AWS, Google, Azure) теперь продаёт управляемый PostgreSQL, генерируя миллиарды из кодовой базы, которую они не создавали. Общая коммерческая стоимость экосистемы PostgreSQL — далеко за 10 миллиардов долларов. Всё построено на коде, поддерживаемом волонтёрами.
Как PostgreSQL тихо победил
Вспомним инженера из начала. Андрес Фройнд — член основной команды PostgreSQL, работающий в Microsoft. Вечером пятницы в марте 2024 года он бенчмаркал PostgreSQL и заметил, что его SSH-подключения потребляют необычный процессор. Полсекунды дополнительной задержки. Большинство инженеров закрыли бы ноутбук и пошли ужинать. Фройнд — нет. Он отследил проблему до библиотеки сжатия xz-utils и обнаружил бэкдор уровня CVSS 10.0 — максимально возможный рейтинг серьёзности. Атакующий под псевдонимом Jia Tan потратил три года на социальную инженерию, используя выгорание одного из мейнтейнеров. Бэкдор дал бы создателям мастер-ключ к сотням миллионов компьютеров, работающих с SSH. Он был за несколько недель до включения в стабильные релизы Debian, Ubuntu и Fedora. Эксперт по безопасности Алекс Стамос назвал это «потенциально самым распространённым и эффективным бэкдором, когда-либо внедрённым в любой программный продукт». The New York Times сравнила Фройнда с пекарем, который чувствует, что со свежим хлебом что-то не так, и правильно вычисляет компрометацию всей цепочки поставок.
Ответ Фройнда был характерно сдержанным: «На самом деле потребовалось много совпадений». Он слушал подкаст о безопасности, пока писал раскрытие информации. Ирония густа: одержимость разработчика PostgreSQL микросекундами — та же культура точности, которая определяет весь проект, — спасла интернет от катастрофической атаки. Скучная база данных оказалась суперсилой, которую никто не ожидал.
Слон, который никогда не забывает
Профессор, не умевший писать код, создал базу данных и ушёл. Два аспиранта спасли её случайно и назвали как попало. Школьный учитель дал ей лидерство. Дизайнер пинбольных автоматов создал её движок. Астроном из Москвы дал оружие, убившее хайп NoSQL. Разработчик из Сан-Франциско доказал, что её культура может спасти мир. Никто не планировал ничего из этого. Стоунбрейкер сам называет это «счастливой случайностью». Но счастливые случайности не поддерживают сами себя 40 лет.
Что поддерживало PostgreSQL — это простая идея, заложенная с первого дня: сделайте базу данных расширяемой и позвольте людям строить то, что им нужно. PostGIS расширил её для географии. JSONB — для документов. PG Vector — для AI. Та же архитектура, спроектированная в 1986 году, продолжает впитывать всё, что индустрия в неё бросает. Сегодня PostgreSQL — самая популярная база данных на Земле. Более 55% профессиональных разработчиков используют её. Она работает на космической станции, питает Instagram, обрабатывает клинические испытания, прогнозы выборов и данные каждого плейлиста Spotify. Компании стоимостью более 10 миллиардов долларов целиком построены на её коде. А в официальной дорожной карте проекта до сих пор сказано: «Мы позволяем разработчикам исследовать темы по их выбору».
База данных без владельца, без корпорации, без бизнес-плана. Просто слон, который никогда не забывает и никогда не перестаёт расти.
Кстати, о слоне. В 1997 году участник сообщества предложил в списке рассылки слона в качестве маскота, ссылаясь на роман Агаты Кристи «Слоны умеют помнить»: как и слон, база данных должна надёжно хранить информацию. Другие предложения включали меч, гепарда и, что запомнилось, киллера. Поскольку «слон» является анаграммой к «Postgres»? (slon — postgres?), на самом деле «слоник» (slonik) — анаграмма? Нет, но сообщество выбрало слона. В 1999 году дизайнер из Санкт-Петербурга (Россия) набросала логотип и сохранила его как slonic.gif — «слоник» по-русски, просто потому, что называла файлы как хотела. Имя прижилось. Никто не переименовал файл. И именно так самая популярная база данных в мире получила свой талисман — случайно. Как и всё остальное.