#база данных

10 постов
пост №1998

Ядро чатжпт работает на одном Postgres-сервере с 50 read-only репликами. Это к вопросу о масштабируемости и потребности в сложной инфраструктуре.

PostgreSQL — одна из фундаментальных программ, на которых держится половина интернета и компьютерных систем в целом. Это бесплатная база данных, которой пользуются все — от маленьких интернет-магазинов до банков и крупнейшие сервисы на планете. Именно она гарантирует, что наши данные не потеряются и будут доступны в любой момент.

Этот проект сильно повлиял на мою жизнь. Именно по его прекрасной документации я учился базам данных. Это одновременно один из лучших учебников по теме для студентов и в то же время справочный материал для профессионалов.

У postgres открытая, по-настоящему распределенная разработка, в которой участвуют сотни инженеров со всего мира.

Многие ИТ-проекты держатся на власти диктатора (Линукс на Линусе), а Postgres вот уже 30 лет управляется меритократией в консенсусной модели.

Свободная BSD-подобная лицензия, которая (в отличие от религиозной GPL) позволяет открыто делать коммерческие продукты на его основе.

Отличная обратная совместимость и близкое соответствие стандартам, и при этом они умудряются первыми реализовывать фичи, которые только позже появляются в платных БД.

PostgreSQL как программа — это настоящее произведение инженерного искусства, а проект в целом — чудо в плане самоорганизации людей. Горжусь, что у нас как у человечества получилось сделать такую красивую штуку.

Я рад, что Postgres постепенно становится самой популярной базой для начинающих, заменяя MySQL.

Проекты, которые мы делаем с Федей и командой, сильно отличаются от постгреса всем — и размером, и стеком, и задачами. Но это тот уровень инженерного мастерства, которым вдохновляюсь я и на который, я надеюсь, равняется вся моя команда.

пост №1740

Figma красиво рассказывает, как они масштабируют свою базу данных (горизонтальное шардирование Postgres).

Всего 4 года назад они хвастались, что все данные помещаются в одной БД на самой жирной тачке в AWS и выросли с тех пор в 100 раз.

Во-первых, прикольно читать, как устроен сервис, которым пользуешься почти каждый день. Во-вторых, в «internet-scale компаниях», мне кажется, засилие MySQL, так что приятно, когда делятся серьезными инсталляциями Postgres, который предпочитаем мы и большинство наших знакомых.

Вспомню ещё две другие, довольно старые истории про масштабирование баз данных:

1. Вот техническая команда инстаграма в 2012 году дает прикольные советы и рассказывает про шардирование постгреса. Заметьте, совсем другой вайб — не огромный лонгрид, а короткие заметки «с чем столкнулись и что сделали».

2. Культовая статья Uber 2016го года, которая называется «Почему мы переехали с MySQL на Postgres». Прикол в том, что название не отражает сути: они отказались от реляционной БД и сделали свою собственную СУБД на основе MySQL — срачи про это не утихают до сих пор, вот последнее обсуждение 2021 года и набор ссылок на предыдущие.

Вот неплохой список подходов к масштабированию БД, пускай они и не нужны в 99% проектов.

пост №1683

Clickhouse — база данных для гибкого анализа огромных потоков информации. Microsoft, Uber и Deutsche Bank — лишь некоторые известные пользователи.

Как экспериментальный проект одного разработчика вырос в отдельную компанию с оценкой в миллионы долларов — говорим с создателем Clickhouse Лешей Миловидовым.

Слушайте на всех платформах: Apple, Google, Яндекс, Spotify, Castbox, Overcast, веб-версия.

пост №1286

В мире есть 4 главные программы базы данных. Oracle, Microsoft SQL и даже MySQL принадлежат корпорациям. Четвертую, PostgreSQL, придумали ученые в Калифорнийском университете в Беркли и сделали опенсорсной. Вместе с американскими учеными и энтузиастами по всему миру, эту базу данных разрабатывал Олег Бартунов. Спустя много лет он основал компанию, которая занимается поддержкой PostgreSQL и помогает ее использовать Яндексу и Министерству финансов РФ. Мы поговорили с Олегом о его работе с базами данных. Как Олег из ученого-астронома стал главных специалистом по PostgreSQL в России, как он наблюдал рождение IT-гигантов Кремниевой долины и как участвовал в создании рунета.

Слушайте и подписывайтесь: Apple, Google, Castbox, Spotify, Яндекс, Overcast, веб-версия.

пост №1120

Давно не писал, две недели решительно не хотел ничего делать. Хочется свалить всё на пневмонию (не коронавирусную), на самом деле просто устал. Продолбал несколько лидов-клиентов. Раньше бы стыдился, но это тема для отдельного поста.

Между тем, происходит куча всего интересного. В мире пандемия (вот классная визуализация и хорошее видео про неё), а у нас в iGooods рекорд за рекордом. Если раньше в пике было по 70 запросов в секунду, то теперь — больше 400. Каждое выступление Путина — +20% посещаемости.

Чтобы выдерживать такие нагрузки, нужно оптимизировать код и увеличивать объем железа. Серверы масштабируются горизонтально и вертикально. Горизонтально — это когда ставишь рядом со старым сервером ещё один, такой же новый, и они делят нагрузку. Это идеальная схема, так мы сейчас регулярно добавляем серверы приложений. К сожалению, базу данных мы горизонтально масштабировать не умеем — для того, чтобы поставить в параллель два сервера БД, нужна специальная магия, запрогать которую мы не успели.

После последнего выступления Путина мы поняли, что скоро уткнемся в гигабитную сетевую карту на сервере БД (раньше я такого не видел и да, нам нужно переписать эти долбаные запросы). Спасибо огромное селектелу — пошли навстречу и мгновенно собрали кастомный сервер с 10гигабитным интерфейсом. Вот теперь сижу жду, когда ребята потушат на пару минут сайт и переключат базу данных на новую машину. Это — вертикальное масштабирование.

Спокойной ночи! 🌛

пост №908

Нашёл классный способ выбрать по одному представителю из группы в SQL.

SQL — cтруктурированный язык запросов, изначально — SEQUEL, «структурированный английский язык запросов» к базам данных родом из 1974го (да, IBM). Почти все технари и аналитики на нем описывают, какие столбцы и строки из таблиц мы хотим получить, как их отфильтровать, отсортировать и преобразовать.

В SQL мы описываем не что сделать, но какой результат мы хотим получить (декларативная парадигма программирования). Большинство программирования в мире происходит по-другому: мы перечисляем компьютеру, какие шаги нужно выполнить (императивная модель). Переключиться на другой режим мышления непросто. Порой при написании большого запроса я чувствую, что «мозги скрипят» - как при решении математической задачи.

Умение пользоваться различными парадигмами, осознанно выбирать более подходящую в данный момент — то, что отличает по-настоящему крутого специалиста. Учите SQL! В конце концов, думать над запросами просто приятно :)

Продакты и аналитики! Научитесь SQL и сможете сами, без программиста отвечать на многие вопросы про проект.

Вот четыре супер классных интерактивных курса (бесплатно без СМС): побогаче, полапидарнее, с довольно сложными задачами в конце и очень красивыми фабулами.

В мои годы таких курсов не было, так что я учился по официальной документации PostgreSQL. Это один лучших технических текстов, что я видел (хороший русский перевод).

На сладкое для заинтересованных:
- хороший туториал по написанию своей базы данных, где разобраны основные концепции на примере клона SQLite;
- доклад создателя SQLite о том, как работают базы данных (ютуб): подача так себе, но в теме чувак разбирается очень хорошо, поэтому интересно.

пост №793

Basecamp уже несколько часов в read-only. У чуваков переполнились первичные ключи в таблице в базе (были в int, нужно было bigint).

Работы всё ещё идут, но они ведут идеальный status report и уже написали два детальных объяснения (сначала покороче и потом подлиннее), что идет не так, почему так получилось и что они делают для починки. ИДЕАЛЬНО.

пост №749

Приятный анонс с работы: за последний месяц мы собрали самый большой в мире каталог видеоигр (245 тысяч игр!) и прикрутили возможность править карточки игр обычным игрокам. Раньше, у нас было мало мобильных и indie игр, теперь есть практически всё. Раньше, игроки писали нам о неточностях и мы правили их в админке, теперь ошибку может исправить любой желающий прямо на сайте.

Впереди гораздо более интересные штуки (я сам порой залипаю на наш альфа-прототип), но полнота и качество базы — основа, на которой мы строим свой сервис.

UGC редактирование баз данных — классический rabbit hole. Казалось бы — ну формочки простые, кнопка «сохранить» и «отменить». В реальности, нужен десяток разных контролов и все они должны вести себя чуть по-разному, чтобы ими было удобно пользоваться. Мы заморочились (местами даже слишком) и получилось довольно круто. Пока для редактирования доступны три первых экрана: базовая информация, скриншоты и сторы, но основа уже есть и остальные экраны мы будем открывать постепенно в ближайшие недели.

Проект вскрыл недостаточное вовлечение программистов в дизайн-процесс, правим это (приглашаем дизайнеров на еженедельные видео-созвоны разработки, например).

Про парсинг стоит написать отдельный пост, пока же дам одну, но важную рекомендацию: используйте scrapinghub.

В ролях: продакт 🤔 Алексей Горностаев, дизайн 🖌 Эрлан Жолдош, фронтенд 🖼 Роман Ахмадуллин и Ольга Котова, бэкенд ⚙️ Евгений Уваров и Антон Шурашов, бесценный консультант и редактор нашей базы 📝 Евгений Цветков. Ура!

пост №524

Наконец-то классный десктоп-клиент для баз данных. Нативный, Mac & Win, поддерживает кучу СУБД, классный редактор SQL и умная подсветка изменений.

Платная версия стоит 50$ в год, бесплатная ограничена двумя табами.

Хороший лендинг, все функции показаны https://tableplus.io