HeadlinesBriefing favicon HeadlinesBriefing.com

PlanetScale Introduces Neki: Sharded Postgres for Scalable Workloads

Hacker News •
×

Neki теперь доступен в предварительном просмотре платформы. Neki построен на уроках, которые мы узнали за восемь лет, запуская некоторые из крупнейших шардированных кластеров MySQL в мире. Тысячи производственных нагрузок с миллионами запросов в секунду для компаний, где даже несколько секунд простоя — это публичное событие. Мы знаем, что значит обеспечивать работу крупнейших рабочих нагрузок tier 0 мира. Когда мы выпустили Planet Scale Postgres год и полгода назад, мы знали, что нужно сделать больше. За это время мы onboarded несколько тысяч клиентов на Planet Scale, некоторые из них соперничают по размеру с нашими крупнейшими клиентами MySQL. Время от времени мы видели, как команды сталкиваются с потолком одной машины с Postgres. Купили металл, дали им время, но с клиентами, достигшими верхнего предела того, что может сделать одна машина, мы нашли нет хорошего варианта, который бы мы могли им предложить. Введите Neki. Что такое Neki? Neki — это шардированный Postgres от Planet Scale. Он позволяет масштабировать базу данных Postgres на многих машинах, сохраняя настоящий Postgres на каждой шарде. Ваше приложение подключается к роутеру Neki по стандартному протоколу Postgres wire, поэтому ваши существующие драйверы, ORMs и строки подключения продолжают работать. Каждая шарда — это полный кластер Postgres с одним primaries и минимум двумя репликами через 3 зоны доступности. Нет кастомного движка хранилища, поэтому расширения, поддержка SQL и производительность ведут себя так, как Postgres. Вы выбираете шардированный ключ и контролируете, как таблицы группируются и распределяются через JSON data topology. Изменения схемы, обновления версии, отказоустойчивость, импорты и решардинг выполняются как встроенные полностью онлайн-работфлows. Вы также получаете функции Planet Scale, на которые вы уже полагаетесь, включая Insights, рекомендации схемы, ветвления и MCP. Вам не нужно шардировать с первого дня. Запустите Neki как primaries с репликами, и когда вы превысите одну машину, решардинг — это workflow, который вы можете выполнить против кластера, который уже имеете. Почему Neki? Вы уже знаете проблемы, которые приходят с быстрым ростом баз данных Postgres: таблицы слишком большие для вакуума или индексации без влияния на трафик, резервные копии занимают часы, ограничения соединений, окна технического обслуживания для изменений схемы, wraparound транзакций и многое другое. Вы можете перейти на более крупный экземпляр, но в конечном итоге вы закончите больших машин, и проблемы не будут линейно масштабироваться с добавлением больших ядер и IOPS. Существующие ответы каждый просят вас отдать что-то. Прикладное шардирование.pushes routing в ваш код. Распределенные базы данных Postgres-“совместимые” скрывают шардированный ключ от вас, лишат вас расширений и добавляют сложность и задержку, которые трудно обрабатывать и отлаживать. Так что мы построили Neki с несколькими принципами, главным из которых: придерживайтесь Postgres, не работайте вокруг него, не фейкуйте, не отказывайтесь от него. Как работает Neki? Мы архитектурировали Neki с первых принципов для Postgres, с настоящим Postgres на каждой шарде. Есть четыре движущиеся части. Neki routers Ваше приложение сначала подключается к роутеру Neki. Роутер говорит протокол Postgres wire, поэтому ваши существующие драйверы, ORMs и строка подключения продолжают работать с одной строкой подключения. У роутера есть полный парсер запросов Postgres, распределенный планировщик запросов, буферизация запросов и еще. Он парсит ваш запрос, строит план, который решает, какие шарды должны его выполнить, отправляет работу наружу, и объединяет результаты обратно в один поток. Роутеры могут масштабироваться вертикально и горизонтально, поэтому ни один роутер не становится узким местом. Шардинг и группы шардов Каждая шарда в Neki — это настоящий Postgres с 1 primaries и минимум 2 репликами, распределенных по 3 зонам доступности. Нет модифицированного движка хранилища. Расширения, поддержка SQL и производительность ведут себя так, как Postgres, потому что это Postgres. Шарды организованы в группы шардов, поэтому разные таблицы или нагрузки могут жить на разных наборах шардов. Каждая шарда использует профиль конфигурации, который определяет размер экземпляра, количество реплик, хранилище, параметры Postgres и расширения, так что вы можете настроить каждый группу для i...