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

PostgreSQL *

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

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

Huge Pages в PostgreSQL

Время на прочтение3 мин
Количество просмотров38K
В PostgreSQL начиная с версии 9.4 появилась поддержка больших страниц. Это очень хорошая новость, с большими страницами я познакомился когда работал с виртуализацией. Коротко о чем же речь. В ОС Linux работа с памятью основывается на обращении к страницам размер которых равен 4kB (на самом деле зависит от платформы, проверить можно через getconf PAGE_SIZE), так вот когда объем памяти переваливает за несколько десятков, а то и сотни гигабайт управлять ею становится сложнее, увеличиваются накладные расходы на адресацию памяти и поддержание страничных таблиц. Для облегчения жизни и были придуманы большие страницы, размер которых может быть 2MB а то и 1GB. За счет использования больших страниц можно получить ощутимый прирост скорости работы и увеличение отзывчивости в приложениях которые активно работают с памятью. Как я уже отметил, впервые я столкнулся с большими страницами при работе с виртуализацией, в частности с KVM. Проведенные в свое время тесты показали что прирост производительности виртуальных машин составил от 7 до 10% (измерялось все это дело синтетическими тестами различных сервисов типа redis/memcache/postgres/etc внутри виртуальных машин). Теперь это появилось в PostgreSQL.

image

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

Работа с геолокациями в режиме highload

Время на прочтение6 мин
Количество просмотров60K
При разработке ПО часто возникают интересные задачи. Одна из таких: работа с гео-координатами пользователей. Если вашим сервисом пользуются миллионы пользователей и запросы к РСУБД происходят часто, то выбор алгоритма играет важную роль. О том как оптимально обрабатывать большое количество запросов и искать ближайшие гео-позиции рассказано под катом.

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

Введение в PostgreSQL BDR

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

Введение в PostgreSQL BDR


image
PostgreSQL это не только стабильная и надежная СУБД но и плюс ко всем это динамично развивающийся продукт, в котором от релиза к релизу появляются самые разные прорывные вещи. В свое время одной из таких технологий была потоковая репликация. Это высокопроизводительная репликация которая позволяет очень легко и дешево масштабировать базу данных на чтение. Используя ее можно создавать надежные конфигурации распределяя нагрузку на чтение между узлами. Однако как я написал выше, продукт развивается, и сегодня в статье речь пойдет о новой технологии BDR (Bi-Directional Replication).
Читать дальше →

Восстановление базы данных PostgreSQL из WAL-бэкапа с пропуском части записей

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

Вводная


В СУБД PostgreSQL есть такое интересное техническое решение — перед тем как собственно начать что то менять в файлах самой базы данных СУБД пишет уже переведенные во внутренний формат команды в специальный журнал — Write-Ahead Log, а после успешного завершения транзакции делает в этом журнале пометку. Сделано это было для восстановления после сбоев, но в итоге пытливый ум разработчиков дошел до идеи использовать этот журнал для резервирования и репликации. В принципе логично, все ходы в нём записаны, более того можно не просто восстановить данные из бэкапа, но и восстановить состояние базы на определенный момент времени, прервав проигрывание записей WAL-лога в нужный момент.

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

Возникает логичный вопрос, а нельзя ли сделать проигрывание WAL-логов с понедельника по пятницу, при этом исключив наш «ошибочный» запрос?

В обычной ситуации я ограничился бы вопросом на форум, но у меня было 2 дистрибутива FreeBSD, 10 тарболлов с исходниками PostgreSQL разных версий, 10Гб места на винте, gcc, две относительно незагруженных недели, а также текила, ром, ящик пива и обрывочные воспоминания о синтаксисе языка C. Не то чтобы это был необходимый запас для решения, но раз уж заглянул в исходные коды, то сложно остановиться…
Читать дальше →

DevConf 2014 — пройдет в эту субботу. Новая секция Storage — раскроет все секреты хранения данных

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

14 июня(суббота) в Москве пройдет DevConf 2014
Впервые в России нам удалось собрать авторов MySQL, PostgreSQL, Percona Server, Sphinx, Tarantool и экспертов NeoJ4,BigData,HandlerSocket, NoSQL в отдельном потоке DevConf::Storage — по сути это отдельная конференция по современным БД.

Программа DevConf 2014::Storage


  • Круто как в гугле. Поисковые сервисы на основе Sphinx
    Владимир Федорков. Последние двенадцать лет работает в области высоких нагрузок.
  • NoSQL атакует: JSON функции в MySQL сервере.
    Света (svetasmirnova) Смирнова, автор JSON функций для MySQL и книги «MySQL Troubleshooting», а также инженер технической поддержки MySQL с 2006 года, компания Oracle.
  • Schema-less PostgreSQL
    Олег Бартунов, major contributor PostgreSQL, научный сотрудник Государственного Астрономического института им.Штернберга, МГУ.
  • Ноотропы RDF для BigData
    Леонид Юрьев — ведущий системный архитектор в «Петер-Сервис» R&D. Ранее был замечен в Центре Инноваций Натальи Касперской и Infowatch.

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

Разбор строки адреса (улица [дом]) средствами Golang и Postgis

Время на прочтение3 мин
Количество просмотров15K
Hi, %habrauser%.
Столкнулся я на днях с интересной задачей — пользователь вводит строку, которая может быть улицей с домом, просто улицей или вообще не улицей, а нам надо узнать имел ли он ввиду улицу с домом и соответствующее ему подсказать.
— Казалось бы чего проще — разбей строку по пробелу и наслаждайся — подумал Штирлиц
— А как насчет улицы Павла Корчагина — шепнула птица Обломинго
— Эм, ну номер дома же наверняка число — сказал Штирлиц
— Ага, корп1 — хорошее число
— Мдя, придется изобретать велосипед

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

Пример экономии на лицензии при внедрении сервера 1С предприятия

Время на прочтение4 мин
Количество просмотров178K
Добрый день, статья написана в качестве некоего продолжения данного опуса. Компания 1С довольно часто подвергается критике, нередко объективной, но я попытаюсь своим примером показать, что 1С предоставляет свободу выбора, что в нынешнее время как минимум заслуживает уважения. Также немного посчитаем деньги.
Подробности

OpenSCG’s HA failover solution “PGHA”. Решение Master-Slave для PostgreSQL 9.3

Время на прочтение5 мин
Количество просмотров5.9K
Ниже будет описан опыт настройки отказоустойчивой системы Master-Slave с использованием собственных ресурсов PostgresSQL — Asynchronous Replication + pgBouncer + PGHA — в формате вольного перевода с комментариями одного поста и руководства по установке.

pgHA

pgHA — программа, написанная на Perl, код которой представлен в файле failoverd.pl, который и является основой инструмента. Использует в своей работе pgbouncer и собственную репликацию PostgresSQL; мониторит ведущую бд и в случае ее недоступности открывает вспомогательную бд на запись, останавливая репликацию. По крайней мере с версии 9.3 устанавливается вместе с PostgresSQL, скачать можно здесь. Процесс установки описан в файле README, который лежит в ./9.3/pgha/doc/.

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

PgTune — настройка производительности PostgreSQL для заданной аппаратной конфигурации (онлайн версия)

Время на прочтение1 мин
Количество просмотров80K
Добрый день, хабровчане. Сегодня я хочу рассказать о такой интересной вещи, как PgTune.

image

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

Студенты, где вы? Вы нужны PostgreSQL!

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


Незаметно промелькнул пост о юбилейном GSoC 2014, и наш проект PostgreSQL снова оказался в числе участников. Надо сказать, что если на многие другие проекты есть большой конкурс, то мы похвастаться этим не можем. Будь тому виной высокий порог вхождения и сложность проекта или недостаточно активно проводимая кампания, но нам приходилось даже возвращать неиспользованные slot'ы, так как на них не нашлось достойных претендентов. Как mentor, я не могу выдавать информацию о числе и составе заявок, скажу только, что ситуация меня печалит ещё больше, чем в прошлые годы.
Читать дальше →

PostgreSQL feature highlight: быстрое превращение старого мастера в stand-by с pg_rewind

Время на прочтение5 мин
Количество просмотров13K
Всем кому приходилось сталкиваться с процедурой failover при работе с потоковой репликацией в PostgreSQL, наверняка озадачивались вопросом: «А как бы мне ничего заново не копировать, а по-быстрому завести старый мастер в качестве stand-by». Так вот к сожалению, встроенной такой функциональности в PostgreSQL, увы нет. Да, нельзя так просто взять и подключить старый мастер к новому и чтобы все заработало. Для этого нужно повторить процесс настройки потоковой репликации заново, т.е. скопировать весь кластер и запустить postgres в режиме hot-standby.
К счастью работы в этом направлении ведутся, причем результаты довольно не плохие. Называется же проект pg_rewind.
Сразу предупреждаю это еще не production-ready и пост носит характер how-to + technology preview.
Читать дальше →

Облегчаем себе жизнь 2 (Postgresql + asp.net)

Время на прочтение4 мин
Количество просмотров28K
Чуть более года назад, стояла задача написания web приложения работающая с БД Postgresql. К моему сожалению, стандартного адаптера для работы с БД PostgreSQL не было, а с тем, что был найден на просторах интернета ( бесплатный ) работать было не возможно.
В итоге было решено обойтись библиотекой Npgsql.
Как работать с этой библиотекой, есть документация и множество примеров в интернете. Сразу же после начала работы с ней, мне не понравилось, что нужно много писать однотипного кода. Для облегчения работы была создана дополнительная прослойка в виде отдельного класса, для работы с БД через данную библиотеку.

Особенности:
1. данные для подключения берутся с файла web.config
2. есть возможность для работы с несколькими подключениями. ( например если у проекта модульная система, и каждый модуль работает только со своей схемой )
Читать дальше →

Облегчаем себе жизнь

Время на прочтение4 мин
Количество просмотров7.2K
При разработке проектов используем БД PostgreSQL, благодаря ее открытости, бесплатности и довольно большого функционала. По принятой архитектуре, для таблиц создаем вьюшки (представления) и приложения работают уже с ними. Во многих случаях вьюшки один в один копируют таблицы, но каждую из них надо создавать и писать правила для обновления, удаления и вставки записи, что занимает время.
И вот в один из прекрасных дней, мне это надоело и я решил автоматизировать этот процесс. Вот так появилась следующая функция:
Читать дальше →

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

Обращение к заинтересованным

Время на прочтение1 мин
Количество просмотров4K
Здравствуйте!

Базы данных — это не просто, да. Но это всем очевидно, и об этом написано 100500 толстых книг. Поэтому могут вызывать особенное удивление и озабоченность появляющиеся в данном разделе тексты на пять абзацев, авторы которых пытаются делать выводы относительно предельно развитой opensource СУБД.
Читать дальше →

Пути более эффективного использования PostgreSQL

Время на прочтение5 мин
Количество просмотров59K
Прочитав статью Базы данных в онлайн играх и особенно комменты к ней, я в очередной расстроился от мысли, что многие разработчики меняют БД в своём проекте, пытаясь этой сменой решить свои проблемы, не исчерпав, однако, всех возможностей, предоставляемой заменяемой БД. Я принимаю участие в работе над проектом, БД которого характеризуется:
  • Количеством транзакций порядка 5'000 — 10'000 в секунду
  • Объемом примерно в 100ГБ (который бодро растёт)
  • Примерно равным количеством операций на чтение/запись
  • Преимущественно мелкими транзакциями

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

Я опишу некоторые проблемы, с которыми мы сталкиваемся, и применённые решения. Если кто-то сочтёт это полезным — ради Бога. Если кто-то поправит — я буду только рад обнаружить уязвимость в используемых подходах и увеличить эффективность работы БД. Описанное может быть применено без вмешательства в логику приложения, исключительно путём модификации схемы БД.
Читать дальше →

Настройка pgpool-II + PostgreSQL + Streaming replication + Hot standby в среде AWS

Время на прочтение11 мин
Количество просмотров45K
Всем привет!
Решил описать основные моменты настройки отказоустойчивого (HA) кластера БД PostgreSQL в IaaS среде от Amazon — AWS.

Про настройку указанной связки с момента появления в свет 9й версии с нативной репликацией уже написано достаточно много статей, поэтому подробно останавливаться на настройке самого PostgreSQL и pgpool не буду, тут все относительно стандартно. Приводимые куски конфигов непригодны к бездумному копипасту, в любом случае придётся открывать свои конфиги и править необходимые параметры. Не хочу поощрять процесс конфигурации по методу копипаста.
Читать дальше →

Перенос данных в Windows Azure SQL Database из PostgreSQL

Время на прочтение3 мин
Количество просмотров5.7K
Добрый день!

В этой статье я покажу как легко и просто мигрировать (перенести данные) с PostgreSQL на облачную базу данных Windows Azure SQL Database.

Основные шаги:
  1. Создание новой базы данных в панели управления Windows Azure
  2. Установка ODBC-драйвера для PostgreSQL
  3. Создание проекта в SQL Server Data Tool
  4. Импорт данных

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

Тестирование хранимых функций с помощью pgTAP

Время на прочтение4 мин
Количество просмотров15K
Недавно я выложил статью со «скелетом» схемы данных, который можно использовать для создания своих схем PostgreSQL.
Помимо собственно скриптов разворачивания схемы, создания объектов, там были примеры хранимых функций и Unit-тесты на них.



В этой статье я хочу на примере pg_skeleton подробней остановиться на том, как писать тесты для хранимых функций PostgreSQL при помощи pgTAP.
Читать дальше →

Выборка из обновляемых материализованных представлений в PostgreSQL 9.3

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

Здравствуйте, хабрачеловеки! Вы, вероятно, уже пощупали материализованные представления, появившиеся в PostgreSQL 9.3. Одним из недостатков есть то, что в процессе обновления представления используется эксклюзивная (ACCESS EXCLUSIVE) блокировка, делающая невозможным запросы к представлению. В PostgreSQL 9.4 планируется добавить возможность чтения из представления во время его обновления. Ну, а пока, в этой небольшой заметке, я хочу показать один из способов выхода из этого положения.
Подробней

Заготовка для схемы данных с тестами, CI, без преферанса

Время на прочтение3 мин
Количество просмотров10K
Реляционная базы данных — зверь сравнительно непознанный, и имеет репутацию генератора проблем. Не то, чтобы проблем не существовало, но как и с другими инструментами, чаще всего сложности возникают от неумения их (РСУБД) готовить.
Готовить с одной статьи не выучиться, но одно блюдо сдюжим.

Я постарался выделить скелет, набор скриптов, на базе которого можно делать свои схемы данных PostgreSQL и тестировать их при помощи pgTAP: github.com/C-Pro/pg_skeleton
И в качестве приятного бонуса я прикрутил это дело к Travis, чтобы у вас ещё и CI было уже на старте :)


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

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