Как стать автором
Обновить
150.69

PostgreSQL *

Свободная объектно-реляционная СУБД

Сначала показывать
Порог рейтинга
Уровень сложности

«Ящик Пандоры», или из чего состоит планировщик запросов СУБД Greenplum

Время на прочтение11 мин
Количество просмотров1.1K

Всем привет! Меня зовут Виктор, я работаю в Компании БФТ-Холдинг руководителем группы разработки. Продолжаю цикл статей по работе с Greenplum. В этом материале хочу рассказать, как СУБД Greenplum строит планы и выбирает самый оптимальный, а также разберу типовые проблемы, которые влияют на выбор плана запроса. Статья будет полезна разработчикам Greenplum, которые пока не имеют достаточного опыта «чтения» плана запроса.

Читать далее
Всего голосов 5: ↑5 и ↓0+7
Комментарии2

Новости

Postgres Pro Shardman: горизонтальное масштабирование реляционных СУБД

Уровень сложностиСредний
Время на прочтение24 мин
Количество просмотров3.4K

Последние несколько лет мы в Postgres Professional активно занимаемся разработкой своего решения для горизонтального масштабирования PostgreSQL. Пользователям нужен был простой способ увеличить производительность путем добавления узлов. Традиционно для веба в таких случаях просто брали NoSQL базы или шардировали вручную, позже появились распределенные SQL-решения с поддержкой ACID-транзакций. Тем не менее терялась часть возможностей и достоинств PostgreSQL. Корпоративный рынок тяжелых вертикальных решений также сильно ограничен как ценой, так и доступностью. Поэтому исследованиями в области распределенных СУБД в компании занимались еще с 2017 года, а в 2020 началась работа над коммерческим продуктом. 

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

Читать далее
Всего голосов 24: ↑24 и ↓0+32
Комментарии5

CDC на примитивах

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.4K

CDC вам не «Centers for Disease Control and Prevention» а «Change data capture». В статье рассказано какие есть виды CDC и как реализовать один из CDC при помощи Debezium.

Читать далее
Всего голосов 4: ↑3 и ↓1+5
Комментарии8

«IT-Планета 2024»: задачи второго этапа по PostgreSQL

Время на прочтение32 мин
Количество просмотров2.5K

Вдохновившись прошлогодним опытом, мы продолжили начинание и снова проводим конкурс по SQL на международной олимпиаде «IT-Планета».

Конкурс состоит из трех этапов. Заочный теоретический тест собрал почти 3000 человек, из которых на следующий этап мы отобрали примерно 200. Вопросы для этого этапа были подготовлены моим коллегой, Евгением Давыдовым.

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

Третий — очный — этап пройдет в конце мая; постараюсь не затягивать с отчетом, но пока храню интригующее молчание.

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

Приступить к делу
Всего голосов 15: ↑15 и ↓0+22
Комментарии10

Истории

PostgreSQL 16. Организация данных. Часть 1

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

PostgreSQL очень популярная СУБД. Её используют во многих проектах, как новички, так и профессионалы. Однако не все понимают, как именно работает данная система и какое у неё внутренне устройство.

Давайте разберемся вместе на основе книги «PostgreSQL 16 изнутри» и официальной документации!

Читать далее
Всего голосов 24: ↑24 и ↓0+27
Комментарии3

Древовидные структуры в SQL в одну таблицу

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров11K

Как реализовать хранение и работу каталога папок в PostgreSQL? Есть большое количество вариантов. Но хочется, чтобы реализация выглядела лаконично, не нарушала прозрачность выполняемых операций, не вызывала блокировок, не требовала большого вовлечения клиента в специфику работы и т.д. Потому сегодня попробуем реализовать хранение древовидных структур и работу с ними без использования триггеров, блокировок, дополнительных таблиц (представлений) и внешних инструментов в SQL.

Читать далее
Всего голосов 45: ↑45 и ↓0+52
Комментарии29

Как аналитик учился java log читать. Часть первая: логи бывают разные

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

Когда я пришёл работать в компанию GreenData шесть лет назад, мои задачи были достаточно стандартными для аналитика, который работает с low-code решениями. Работа с объектной моделью, написание алгоритмов, настройка визуалов - всё что обычно выполняет начинающий специалист в данной области. Однако в процессе моей работы и роста иногда я сталкивался с необходимостью разбираться в тонкостях работы Java, а именно с ошибками, которые возникали в процессе её исполнения.

Эти встречи с Java сначала были случайностью, но со временем превратились в моё новое профессиональное увлечение. Каждый случай сбоя или нестандартного поведения программы становился для меня вызовом; я понял, что за ошибками стоят не просто коды и сообщения, а целые истории о том, как работает система. Этот интерес постепенно перерос в глубокое погружение в мир Java-логов, благодаря чему я стал одним из ведущих экспертов по анализу программных сбоев в компании.

Читать далее
Всего голосов 5: ↑4 и ↓1+7
Комментарии0

Цикл статей о Greenplum. Часть 1. GP под капотом

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров3.9K

Всем привет!

Как вы знаете, многие поставщики ПО ушли с российского рынка ввиду введённых санкций и многие компании столкнулись с необходимость заняться импортозамещением в кратчайшие сроки. Не стал исключением и наш заказчик. Целевой системой, на которое было принято решение мигрировать старое хранилище, стал Greenplum (далее GP) от компании Arenadata.

Этой статьей мы запускаем цикл материалов посвященных Greenplum. В рамках цикла мы разберем, как вообще устроен GP и как выглядит его архитектура. Постараемся выделить must have практики при работе с данным продуктом, а также обсудим, как можно спроектировать хранилище на GP, осуществлять мониторинг эффективности работы и многое другое. Данный цикл статей будет полезен как разработчикам БД, так и аналитикам.

Читать далее
Всего голосов 17: ↑16 и ↓1+19
Комментарии2

Большая иерархия в SQL запросе + PostgreSQL

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров7.1K

Сначала запрос адаптирован для работы в PostgreSQL 15.6.

Затем работа запроса проверена на достаточно объемной иерархии - в качестве источника данных использована структура архива jdk-master.zip из OpenJDK 22

Читать далее
Всего голосов 14: ↑14 и ↓0+17
Комментарии6

Асимметричные и симметричные ключи в PostgreSQL

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

Привет, Хабр!

Как мы знаем, защита конфиденциальной информации — это неотъемлемая часть любого проекта. В статье поговорим про шифрование данных в PostgreSQL, а именно про шифрование с использованием как асимметричных, так и симметричных ключей.

Читать далее
Всего голосов 13: ↑8 и ↓5+9
Комментарии4

PGConf.Russia #10 (2024)

Время на прочтение13 мин
Количество просмотров1.6K

Юбилейная - 10-я - конференция PGConf.Russia опередила юбилей компании (Postgres Professional исполнилось 9 лет). А самая первая - PGConf.Russia 2015 - даже опередила саму компанию: конференция прошла в феврале, а официальный день рождения Postgres Professional 1 апреля 2015.

Читать далее
Всего голосов 14: ↑14 и ↓0+18
Комментарии2

Распознавание, хранение и поиск лиц в базе данных

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров11K

В этой статье я максимально коротко и просто объясню принцип распознавания, хранения и поиска лиц в базе данных. В качестве примера будет использована библиотека Insightface и база данных PostgreSQL.

Читать далее
Всего голосов 30: ↑25 и ↓5+28
Комментарии6

Пишем поиск семантически похожих текстов (или товаров) за полчаса на Go и Postgres (pgVector)

Время на прочтение5 мин
Количество просмотров6.6K


Казалось бы, в посгресе и так есть неплохой полнотекстовый поиск (tsvector/tsquery), и вы из коробки можете проиндексировать ваши тексты, а потом поискать по ним. Но на самом деле это не совсем то, что нужно — такой поиск работает лишь по чётким совпадениям слов. Т.е. postgres не догадается, что "кошка гонится за мышью" — это довольно близко к "котёнок охотится на грызуна". Как же победить такую проблему?


TLDR:


  1. Преобразовываем наши тексты в наборы чисел (векторы) при помощи API openAI.
  2. Сохраняем векторы в базе с помощью pgvector.
  3. Легко ищем близкие друг к другу векторы или ищем их по вектору-запросу.
  4. Ускоряем индексами.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+24
Комментарии8

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

Неожиданные последствия запуска PostgreSQL в Docker: замедление запросов в 100 раз

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров39K

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

Читать далее
Всего голосов 95: ↑84 и ↓11+93
Комментарии54

Эффективное использование журнала регистрации и технологического журнала 1С в решении вопросов производительности

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.9K

Эта статья носит своей целью продемонстрировать другой подход в анализе проблем производительности в системах 1С:Предприятие с применением журнала регистрации (ЖР) и технологического журнала (ТЖ).

Напомню, что ЖР логирует действия пользователей — кто, когда в каком объекте внес изменения, с какого компьютера, каким сеансом и т. п. ТЖ — это средство для логирования уже самой платформы. Для расследования проблем производительности информация из журналов очень полезна, но основное время уходит на её поиск, сопоставление с другими метриками и счетчиками мониторинга.

При проведении расследований мы сами часто сталкиваемся с проблемой длительной обработки и сопоставления данных журналов 1С с остальными метриками. И вот наконец руки дошли до парсинга журналов. С точки зрения анализа производительности все данные журналов нам не нужны. А какие нужны?

Вот! В этом как раз вся «соль» идеи.

Читать далее
Всего голосов 6: ↑5 и ↓1+9
Комментарии2

Поиск по коду — это сложно

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров6.6K

Функциональность поиска на Val Town не очень впечатляет. Сейчас в её основе лежит механизм ILIKE Postgres, работающий на основе алгоритма поиска подстроки: если искомое выражение в коде есть, оно выводится в результатах. Этот процесс не включает никакого ранжирования и очень слабо поддерживает запросы из нескольких слов. Более эффективный поиск является одной из самых желанных для нас возможностей.
Читать дальше →
Всего голосов 29: ↑27 и ↓2+43
Комментарии3

HyperLogLog в PostgreSQL

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.9K

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

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

В этой статье рассмотрим, как реализован HLL в PostgreSQL.

Читать далее
Всего голосов 10: ↑8 и ↓2+8
Комментарии3

Безопасный Continuous Deployment БД по принципам DB-First

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

В статье рассматривается Continuous Deployment для БД с бесшовными релизами за счёт обратно-совместимых обновлений и автоматизации проверок совместимости с помощью подхода DB-First.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии8

Потенциальные проблемы с автоинкрементным ключом. MySQL <8.0, PostgreSQL

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

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

Читать далее
Всего голосов 11: ↑9 и ↓2+11
Комментарии24

Создание реактивных сервисов Micronaut и Kotlin

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.1K

В данной статье обсудим создание REST-сервиса в “реактивном” исполнении. Приведу примеры кода на Kotlin в двух вариантах: Reactor и coroutines

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии16
1
23 ...

Вклад авторов