Обновить
-6

Пользователь

0,2
Рейтинг
Отправить сообщение

MVCC-1. Изоляция

Время на прочтение25 мин
Охват и читатели218K
Привет, Хабр! Этой статьей я начинаю серию циклов (или цикл серий? в общем, задумка грандиозная) о внутреннем устройстве PostgreSQL.

Материал будет основан на учебных курсах по администрированию, которые делаем мы с Павлом pluzanov. Смотреть видео не все любят (я точно не люблю), а читать слайды, пусть даже с комментариями, — совсем «не то».

Конечно, статьи не будут повторять содержание курсов один в один. Я буду говорить только о том, как все устроено, опуская собственно администрирование, зато постараюсь делать это более подробно и обстоятельно. И я верю в то, что такие знания полезны прикладному разработчику не меньше, чем администратору.

Ориентироваться я буду на тех, кто уже имеет определенный опыт использования PostgreSQL и хотя бы в общих чертах представляет себе, что к чему. Для совсем новичков текст будет тяжеловат. Например, я ни слова не скажу о том, как установить PostgreSQL и запустить psql.

Вещи, о которых пойдет речь, не сильно меняются от версии к версии, но использовать я буду текущий, 11-й «ванильный» PostgreSQL.

Первый цикл посвящен вопросам, связанным с изоляцией и многоверсионностью, и план его таков:

  1. Изоляция, как ее понимают стандарт и PostgreSQL (эта статья);
  2. Слои, файлы, страницы — что творится на физическом уровне;
  3. Версии строк, виртуальные и вложенные транзакции;
  4. Снимки данных и видимость версий строк, горизонт событий;
  5. Внутристраничная очистка и HOT-обновления;
  6. Обычная очистка (vacuum);
  7. Автоматическая очистка (autovacuum);
  8. Переполнение счетчика транзакций и заморозка.

Ну, поехали.
Читать дальше →

Индексы в PostgreSQL — 1

Время на прочтение17 мин
Охват и читатели557K

Предисловие


В этой серии статей речь пойдет об индексах в PostgreSQL.

Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

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

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →

Объясняя необъяснимое. Часть 3

Время на прочтение16 мин
Охват и читатели62K
В рамках подготовки к конференции PG Day’16 мы продолжаем знакомить вас с интересными аспектами PostgreSQL. И сегодня предлагаем вам перевод третьей статьи из серии об explain.

В предыдущих постах этой серии я писал о том, как интерпретировать отдельно взятую строку в выводе анализа explain, его структуру, а также описал базовые операции получения данных (узлы дерева explain).

Сегодня мы перейдем к более сложным операциям.


Читать дальше →

Jev: как устроен его API решений и что на нём уже строят

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели27K

За три дня вокруг Jev выросла маленькая экосистема: браузерный агент искал авиабилеты за семь секунд, разработчики собрали торгового бота, фильтры контента и даже Tesla FSD. Но Jev не пишет текст. Его API выбирает ответ из пространства, которое заранее задало приложение.

Я разобрал документацию TypeSafe, код jev-ultrafast, опубликованную трассу семисекундного прогона и сто первичных или близких к ним источников. В статье — контракт Noul, Choice и Score, вызов API, цена, устройство браузерного агента и 15 ранних кейсов с границами их доказательности.

Главный вопрос простой: где узкий слой решений действительно выигрывает у обычной LLM, а где валидный ответ всё ещё оказывается просто не тем ответом?

Читать далее

«База» по метрикам в Prometheus

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели40K

Привет, Хабр! Меня зовут Глеб Типсин, я являюсь ведущим разработчиком продукта «Системы персонализации и геймификации» в SM Lab.

В этой статье мы разберём, как устроены метрики в Prometheus, как происходит их сбор, а также что с ними можно делать. Кроме того, обсудим подходы в мониторинге, архитектуру Prometheus и её ограничения.

Материал подойдёт тем, кто только знакомится с мониторингом и хочет освоить «базу», а также тем, кто уже работает с Prometheus, но хочет "освежить" свои знания и узнать что-то новое.

Читать далее

Модель Jev от TypeSafe AI стала доступна всем. На старте дают $5 на API‑счет

Время на прочтение1 мин
Охват и читатели12K

TypeSafe AI открыли общий доступ к Jev — модели для быстрых решений внутри AI-агентов и программных сценариев. Компанию основал Диого Алмейда, бывший исследователь OpenAI и соавтор работы об InstructGPT. Новым пользователям начисляют $5 на API-счёт — примерно 119 млн входных токенов по текущему тарифу.

Читать далее

Знакомство с PromQL + Cheatsheet

Время на прочтение5 мин
Охват и читатели53K

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

Поскольку Prometheus хранит данные в виде временных рядов (time-series data model), запросы PromQL радикально отличаются от привычного SQL. Понимание, как работать с данными в Prometheus, является ключом к тому, чтобы научиться писать эффективные запросы.

Читать далее

Человеческим языком про метрики 4: PromQL

Время на прочтение15 мин
Охват и читатели163K

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

Читать далее

С нуля до Junior DevOps в 2026 году. 8.1. Prometheus. Мониторинг

Уровень сложностиПростой
Время на прочтение20 мин
Охват и читатели12K

Разбираемся с мониторингом и observability, metrics, logs и traces, time series, labels, scrape, TSDB, PromQL и alerting rules.

Разберём, как Prometheus получает метрики через /metrics, чем target отличается от endpoint и job, зачем нужны exporters, а также почему запуск Node Exporter в Docker требует доступа к ресурсам Linux-хоста.

Читать далее

Что такое метаданные в BI и как ими управлять? Обзор инструмента OpenMetadata

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели11K

Метаданные или метаинформация – это данные, которые предоставляют информацию о других данных.

Подробнее о том, с какими метаданными сталкиваются в BI, чем полезны системы управления метаданными и с какими важными функциями инструмента OpenMetadata знакома на практике, рассказываю в этой статье.

Читать далее

Кто такой инженер по обеспечению качества данных и почему без него уже не обойтись?

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.6K

Современный бизнес переживает очередную трансформацию под влиянием информационных технологий. Он движется от стадии слепого принятия концепций больших данных (Big data) и искусственного интеллекта к более осознанной работе с информацией. На этом фоне появляются новые профессии, такие как инженер по обеспечению качества данных — data quality assurance engineer, или просто инженер DQ, как часто указывают в вакансиях. Почему эта профессия на пике востребованности, где она нужна и кому легче освоить её прямо сейчас? На эти и другие вопросы отвечают эксперты российской ИТ-компании «Криптонит»: руководитель департамента тестирования Александр Гречин и ведущий инженер по тестированию качества данных Вероника Казакова.

Как и в любой профессиональной среде, у специалистов по работе с данными есть своя терминология.  Мы подготовили краткий глоссарий, чтобы говорить с вами на одном языке:

Метаданные, или «данные о данных» — это их происхождение (источник), формат, время создания, правила обработки и контроля качества. Например, к нам загружаются таблицы с данными о компании (ИНН, названием компании, коды ОКВЭД и так далее). Здесь метаданные — это атрибуты таблицы (какие колонки мы загружаем, какой в них тип данных, обязательно ли их заполнение, какие правила мы накладываем на значения. 

Пайплайны (data pipelines): автоматизированные последовательности получения, преобразования и перемещения данных из источников в хранилища. Пайплайны работают как конвейеры, подготавливающие сырые данные для их дальнейшего анализа. 

Читать далее

Каталог данных: что за зверь и с чем его едят

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели2.6K

Всем привет! Меня зовут Роман Грибов, я директор по развитию данных и аналитики в «Спортмастере». Вместе с моей коллегой Татьяной Шишкиной, руководителем направления «Каталог данных», мы расскажем о том, что это за инструмент, как он работает и как позволяет сделать проще жизнь аналитиков, архитекторов и многих других (включая даже тех из нас, кто просто когда-либо смотрел на аббревиатуру «GMV» с немым вопросом «Что ты такое?»), а еще объясним главные цели его внедрения.

Читать далее

Платформа данных на минималках. Часть 1: проблемы Data Lake и роль Iceberg

Время на прочтение11 мин
Охват и читатели9.9K

Представим ситуацию: у нас есть сервисы, которые пишут логи событий и сообщения из очередей (Kafka, RabbitMQ) в формате Avro для гарантии схемы и потоковой доставки. В это же время отдел машинного обучения работает с датасетами в Parquet — ребята ценят столбцовое хранение и производительность на скалярных чтениях.  Соседняя команда фиксирует фактовые таблицы в ORC, поскольку этот формат подходит для тяжелых аналитических агрегаций. 

Пока объемы данных измерялись гигабайтами, такой «зоопарк форматов» был терпим: каждый отдел использовал свой инструмент, а данные копировались между ними через ETL-конвейеры. Но с ростом до терабайтов и выше эта архитектура начинает ломаться: запросы становятся медленными, стоимость хранения и вычислений стремительно растет, а главное — теряется единый источник истины. Теперь одна и та же бизнес-сущность существует в трех разных форматах, схемах и состояниях. 

В этот момент возникает потребность не в очередном хранилище, а в табличной абстракции поверх существующих форматов. Такой слой должен обеспечивать ACID-транзакционность, централизованное управление схемой и единый каталог для всех потребителей — от потоковой инженерии до машинного обучения и BI. Именно так и приходят к Apache Iceberg и к идее построения собственной платформы данных.

Читать далее

Платформа данных на минималках. Часть 2. Практика: разворачиваем и настраиваем каталог метаданных

Уровень сложностиСложный
Время на прочтение23 мин
Охват и читатели11K

В первой части мы разобрались с архитектурой Apache Iceberg. Увидели, как иерархия метаданных позволяет находить нужную информацию без полного сканирования хранилища. Также стало понятно, почему Iceberg — это не вычислительный движок и не формат файлов, а табличная спецификация поверх объектного хранилища. 

Теперь настало время ответить на практический вопрос: как все эти метаданные связать в единую систему, чтобы несколько движков могли работать с одними и теми же таблицами без хаоса. Помимо теории развернем HMS в Docker, настроим PyIceberg и разберем внутреннюю анатомию файла metadata.json.

Привет! Я Денис, старший бэкенд-разработчик в Selectel. Надеюсь, материал будет полезен инженерам данных и архитекторам. Мы рассмотрим Hive Metastore, AWS Glue, REST Catalog и Nessie и расскажем как выбрать подходящий инструмент под специфику проекта.

Читать далее →

Мидл — это не три года опыта. Грейды в DevOps как типы ответственности

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели95K

Два инженера, у обоих пять лет в DevOps и одинаковый стек в резюме: Kubernetes, Terraform, GitLab и вот это вот всё. Весной оба ходили по собеседованиям, но первый собрал офферы уровня “мидл, 200”, второй ушёл с “сеньор, 300” (алгоритмические секции первый, к слову, проходил лучше). Разница больше миллиона в год при неотличимых резюме. Ниже рамка, которая по моему мнению объясняет за что доплачивают, и три вопроса, чтобы найти в ней себя.

Читать далее

Как устроены хранилища Kubernetes: разбор для начинающего сисадмина

Время на прочтение10 мин
Охват и читатели11K

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

На простых примерах с реальной инфраструктурой изучим всю архитектуру выделения ресурсов. Развернем хранилище в тестовом кластере, смонтируем диск и заглянем внутрь файловой системы ноды.

Привет! Я Катя, младший системный администратор в Selectel. Надеюсь, моя работа поможет выстроить в голове четкую картину и сэкономит часы на дебаге, если нужный диск однажды откажется подключаться.

Читать далее

Всё, что вы хотели знать о t-тесте, но боялись спросить

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели14K

Всем привет!

Меня зовут Александр Щукин, я аналитик в СКБ «Контур». В этой статье я расскажу о базовых основах применения t‑критерия Стьюдента.

Для начала предлагаю Вам поучаствовать в викторине: если вы уверенно ответите на все вопросы ниже, то будете освобождены от прочтения этой статьи:‑)

Читать далее

Как проверить все Python‑окружения на опасные пакеты без запуска Python

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели13K

Вредоносная зависимость может годами лежать в забытом проекте, а обычная команда pip freeze — запустить оставленный злоумышленниками код. Разберём, как собрать реестр виртуальных окружений и с помощью uv безопасно проверить версии пакетов во всех локальных проектах.

Проверить пакеты

Чем вообще занимается служба безопасности GitHub?

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели22K

В GitHub прямо сейчас есть десятки тысяч репозиториев, которые распространяют вирусы. Любой из вас может найти такие репозитории и для этого вам не нужны какие-то специальные знания. Вам достаточно воспользоваться обычным поиском на сайте гитхаба.

Такие репозитории существуют уже 2 года. У гитхаба есть миллиарды долларов, служба безопасности и искусственный интелект.

Почему они за 2 года не решили эту проблему?

Читать далее

Дата-контракты 2.0: как мы автоматизировали обмен данными между продуктами

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели8.8K

Всем привет! С вами на связи Евгений Певцов, эксперт по качеству данных группы развития методологии из МТС. Около года назад мои коллеги уже рассказывали, зачем нам потребовались формализованные соглашения об обмене данными и какую проблему они должны были решить.

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

Сейчас дата-контракты — это полноценный сервис, встроенный в существующие ETL-процессы на всем жизненной пути данных. Им ежедневно пользуются продуктовые команды, архитекторы, аналитики и Владельцы данных. 

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

Читать дальше

Информация

В рейтинге
2 939-й
Зарегистрирован
Активность

Специализация

Специалист
Pascal