Использовать БД только для складирования данных — это всё равно, что назвать Unix интерфейсом для работы с файлами. Посему, хочу напомнить об известных и не очень функциях БД, которые хотелось бы чаще встречать в боевых веб-приложениях.
Рубрика «postgresql» - 31
БД — это не только хранилище данных
2018-09-12 в 7:00, admin, рубрики: postgresql, ruby on rails, Администрирование баз данных, здравый смысл, любовь к бд, очевидные вещи, Разработка веб-сайтов, СУБДТест для молодого бойца PostgreSQL
2018-09-12 в 6:37, admin, рубрики: postgres, postgresql, sql, tips and tricks, Администрирование баз данных, базы данных, Программирование, СУБД, тестовые задачи, тесты
Приветствую всех любителей SQL!
В интернете я редко встречал тесты, которые охватывают типичные рабочие моменты и тонкости, связанные с обработкой данных.
Поэтому я решил написать свою версию теста на знание SQL.
Который будет нести образовательный характер, и являться продолжением моей прошлой статьи Курс молодого бойца PostgreSQL.
Представленные ответы подходят для PostgreSQL (большинство задач подойдут и для других СУБД, но результаты и решения могут быть иными).
Приступим!
Читать полностью »
USE, RED, PgBouncer, его настройки и мониторинг
2018-09-11 в 13:12, admin, рубрики: okmeter, pgbouncer, postgres, postgresql, Администрирование баз данных, Блог компании okmeter.io, Серверная оптимизация, Серверное администрирование
Мы начали обновлять в нашем сервисе мониторинг для PgBouncer и решили все немного причесать. Чтобы сделать всё годно, мы притянули самые известные методологии перформанс мониторинга: USE (Utilization, Saturation, Errors) Брендана Грегга и RED (Requests, Errors, Durations) от Тома Уилки.
Далее вы узнаете, как мы всё там навертели и про особенности конфигурационных параметров PgBouncer.
Знакомство с SOCI — C++ библиотекой доступа к базам данных
2018-09-10 в 16:28, admin, рубрики: c++, firebird, mysql, oracle, postgresql, sqlite, базы данных, ПрограммированиеВступление
Сама библиотека довольно таки зрелая, — первый релиз на гитхабе
датируется аж 2004 годом. Я был удивлён когда хабр в поиске
не выдал мне ни одной ссылки на статьи, в которых бы упоминалось
об этой замечательной библиотеке.
SOCI поддерживает ORM, через специализацию type_conversion.
В SOCI имеются бэкенды для:
- Firebird
- MySQL
- Oracle
- PostgreSQL
- SQLite
Я не стану переводить мануалы или приводить здесь код из примеров,
а постараюсь адаптировать (с изменением структуры таблицы, и других упрощений)
код из своего прошлого проекта, чтобы было наглядней и интересней.
PostgreSQL 10 был выпущен еще в начале октября 2017го, почти год назад.
Одна из наиболее интересных новых “фич” — это безусловно декларативное партиционирование. Но что, если вы не спешите апгрейдится до 10ки? Вот Amazon, к примеру, не торопится, и ввел поддержку PostgreSQL 10 только в последних числах февраля 2018-го.
Тогда на помощь приходит старое-доброе партиционирование через наследование. Я — software architect финансового отдела в компании занимающейся такси, так что все примеры будут так или иначе связаны с поездками (проблемы связанные с деньгами оставим на другой раз).
Поскольку мы начали переписывать нашу финансовую систему в 2015ом, когда я только присоединился к компании, ни о каком декларативном партиционировании речи не шло. Так что и по сей день успешно используется методика описанная ниже.
Изначальной причиной написания статьи стало то, что большинство примеров partitioning’а в PostgreSQL с которыми я сталкивался были очень базовыми. Вот таблица, вот одна колонка, на которую мы смотрим, и быть может даже заранее знаем, какие значения в ней лежат. Казалось бы, все просто. Но реальная жизнь вносит свои коррективы.
Читать полностью »
Oracle vs PostgreSQL. Почему выбор Oracle может быть разумным решением
2018-09-08 в 10:46, admin, рубрики: oracle, OracleDB, postgresql, sqlЧитая многочисленные статьи на хабре об успешной миграции с Oracle на PostgreSQL у неискушенного читателя может создаться впечатление что PostgreSQL ничем не хуже, а даже лучше Oracle. И выбор очевиден. А Сотни тысяч компаний, которые в итоге платят миллиарды долларов компании Oracle, просто тратят деньги на ветер. Но постараюсь вас разуверить, где-где, а в больших компаниях умеют считать деньги. И их решения отнюдь не ошибочны.
Цель статьи зародить зерно сомнения в душе читателя, который пытается сделать выбор между реляционными БД которые работают в режиме версионника.Читать полностью »
PostgreSQL: как и почему пухнет WAL
2018-09-03 в 14:45, admin, рубрики: okmeter, postgresql, replication, wal, Администрирование баз данных, Блог компании okmeter.ioЧтобы сделать мониторинг полезным, нам приходится прорабатывать разные сценарии вероятных проблем и проектировать дашборды и триггеры таким образом, чтобы по ним сразу была понятна причина инцидента.
В некоторых случаях мы хорошо понимаем, как работает тот или иной компонент инфраструктуры, и тогда заранее известно какие метрики будут полезны. А иногда мы снимаем практически все возможные метрики с максимальной детализацией и потом смотрим, как на них видны те или иные проблемы.
Сегодня будем смотреть как и почему может распухать Write-Ahead Log (WAL) постгреса. Как обычно — примеры из реальной жизни в картинках.
Функции для документирования баз данных PostgreSQL. Окончание
2018-09-01 в 1:50, admin, рубрики: pg_am, pg_attribute, pg_class, pg_constraints, pg_depend, pg_description, pg_index, pg_namespace, pg_sequence, pg_type, postgresql, Администрирование баз данныхЭто четвертая и последняя часть статьи, которая описывает пользовательские функции для работы с системными каталогами: pg_class, pg_attribute, pg_constraints и т.д. Первая, вторая и третья части статьи опубликованы ранее.
Предчувствую, что должен заранее извиниться перед теми из читателей, кого интересовали только устройство системных каталогов PostgrSQL, а также приемы извлечения данных из них. Функции, которые описываются в этой части статьи, не обращаются к еще не рассмотренным системным каталогам, да и приемы извлечения данных ничем не отличаются от тех, что изложены в предыдущих частях. Такие читатели могут завершить просмотр статьи прямо здесь.
Генерация последовательности дат и generate_series в PostgreSQL
2018-08-31 в 17:45, admin, рубрики: generate_series, postgresql, генерация последовательностейДанная статья может оказаться сферическим примером велосипедостроения. Если вам известно стандартное или более изящное решение задачи, то буду рад увидеть его в комментариях.
Однажды на одном из проектов нам понадобилось составить отчет по финансовым операциям за период с группировкой промежуточных итогов на конец месяца.
Задача в общем-то простая, определить требуемые периоды внутри большого интервала, привязать каждую операцию к подходящему периоду, сгруппировать и сложить сумму.
Для генерации периодов внутри интервала я привычно взял функцию generate_series, которую часто использую для генерации числовых последовательностей. Сверился с документацией насчет возможности генерации последовательности дат, рассмотрел пример, написал запрос и озадачился.
select gs::date
from generate_series('2018-01-31', '2018-05-31', interval '1 month') as gs;
gs |
---|
31.01.2018 |
28.02.2018 |
28.03.2018 |
28.04.2018 |
28.05.2018 |
Встреча #RuPostgres: масштабирование приложений на PostgreSQL
2018-08-30 в 9:25, admin, рубрики: distributed systems, distributed transactions, Microservices, postgresql, saga, Анализ и проектирование систем, Блог компании Avito, Проектирование и рефакторинг, хранение данных15 сентября в офисе Авито состоится встреча, посвященная масштабированию приложений на PostgreSQL. Поговорим об алгоритмах и нюансах реализации транзакционности в языках программирования, построении бизнес-транзакций в сервисах с паттерном database per service, как устроена OZO — асинхронная типобезопасная header-only библиотека-клиент PostgreSQL для C++17, и уровнях изоляции транзакций PostgreSQL. С докладами выступят Стас Кельвич (Postgres Professional), Сергей Хандриков (Яндекс), Константин Евтеев (Авито) и Михаил Тюрин. Регистрируйтесь на встречу и приглашайте коллег. Под катом — тезисы выступлений докладчиков, ссылка на регистрацию и информация по трансляции митапа.