
Alexey
03.02.2017
07:23:47
SELECT * FROM table;

Fike
03.02.2017
07:25:05

Артур
03.02.2017
07:25:19
У меня следующая заморочка (качательно версионности). Нужно выводить пользователю, что и когда менялось в записи

Fike
03.02.2017
07:25:51
event sourcing x2

Google

Артур
03.02.2017
07:26:11
:)
Уже хабр открыл, чтобы понять о чем речь

Stas
03.02.2017
07:27:09

Артур
03.02.2017
07:33:00
Мы сейчас прикрутили листнеры к оберверам и в части ORM вызываем сохранение в логи. Но получается это емко.
При апдейте - берется запись, сравниаваются изменения, создается массив следующего содержания:
Получается что а каждое событие происодит не только доп select из бэкенда, но и анализ и сравнение информации после получения.
event sourcing
Я как понял это тот же паттерн observer, но на стороне БД
?


Fike
03.02.2017
07:39:35
В доменной модели описываются события, которые могут произойти над сущностью: увеличение баланса, уменьшение баланса, смена владельца, любое другое доменное событие. Как правило, каждое такое событие оформляется классом, который реализует два функционала: произведение изменений над готовой сущностью и сериализация-десериализация свойств этого события. Например, событие "изменение баланса" будет иметь поле "изменение", в которое будет записываться указанное изменение баланса, а при применении к объекту это изменение будет складываться с текущим балансом. В результате каждая сущность представляет из себя просто лог событий, которые с ней происходили, а для восстановления состояния достаточно все эти события применить к болванке сущности.
В результате какой-нибудь банковский аккаунт получается логом из событий "создан", "внесены деньги", "сняты деньги", все это дело хранится в базе данных с минимальным оверхедом, т.к. требуется хранить только необходимые данные для каждого события, аудит представляет собой не историю изменений атрибутов, а реальную историю событий с сущностью, обновления происходят через простую оптимистичную блокировку, но у этого есть очевидные минусы - например, надо городить ручные мат.вью для сущностей, чтобы делать обычные выборки, изменения приходится хранить в виде сериализованных объектов.
Надеюсь, более-менее понятно написал, н оесли нет, всегда есть Фаулер http://martinfowler.com/eaaDev/EventSourcing.html
Но в ряде случаев (например, нам надо хранить историю происходящего во время звонка, чтобы выяснять произошедшее не по текстовому логу) это вообще бесценная штука, и на всякие минусы плюешь, не оглядываясь.


Sergey
03.02.2017
12:49:30
Привет! Может кто поскажет по процедуре промоутинга. У нас есть процесс, он построен на ручных действиях и состоит примерно из таких действий:
1) Остановка старого мастера (если он жив)
2) Создание триггер-файла на целевом слейве
3) Актуализация конфигурации нового мастера
4) Обновление CNAME DNS (мы используем их для определения кто мастер и кто слейв)
5) Переналивка слейва относительно нового мастера
6) Все решения принимает человек, информацию о том какая текущая роль у сервера он берет из мониторинга по метрикам и сверяет их с другими фактами (ДНС, записи от системы управления конфигурации)
Пункты 5 и 3 делаются самой системой управления конфигурации, а не руками, но не суть.
Сейчас встал вопрос в автоматизации всех этих действий т.к. есть подозрения в том что дежурные могут сильно накосячить в случае когда промоутинг придется делать по инструкции вне штатной ситуации, и здесь не чоень понятно как заскриптить весь процесс и даст ли это преимущество над человеческой ошибкой, также проблема ДНС в ближайшее время может дать свои проблемы, т.к. есть планы масштабировать слейвы для распределения нагрузки на чтение, внутри команды есть инициатива использовать плавающий адрес, и менять его привязку к серверу в зависимости от живой и активной ноды.
Может кто поделиться опытом как еще устраивают подобные сценарии промоутинга, может есть какие полезные доклады или статьи на эту тему?

Google

Vadim
03.02.2017
13:44:10
http://wiki.clusterlabs.org/wiki/PgSQL_Replicated_Cluster

Fike
03.02.2017
13:52:32
Вы не боитесь, что у вас DNS в какой-то момент где-нибудь закешируется?

Alexey
03.02.2017
13:53:17
А он закешируется. Обязательно. И с кривым экспайром.

Sergey
03.02.2017
13:53:36
Да, думаем об этом. Или просто запись не обновится в ожидаемое время, и основная проблема - мы не можем проверить что запись обновилась для всех-всех инстансов работающих с БД
В свзяи с и смотрим на плавающий адрес, не знаю правда какие там проблемы могут нас ожидать

Fike
03.02.2017
13:55:26
У нас keepalived несколько раз очень больно падал

Sergey
03.02.2017
14:00:16
А как выглядило это падение? И у вас он использовался для автоматического переключения адресов или в ручном режиме?
По wiki что дали, там предлагаю ставить corosync + pacemaker, это выглядит ближе к autofailover. Выглядит сложно, в таком случае понадобится еще машина "свидетель/арбитр", из того что видно сразу.

Fike
03.02.2017
14:01:52
Я не уверен, что существуют специализированные средства для таких ситуаций, и здесь наиболее разумным (с моей колокольни) кажется bash/ruby/etc-скрипт, который просто будет заходить на все машины по ssh, выполнять необходимые действия, переходить к следующему этапу, и так пока успешно не завершится.


Игорь
03.02.2017
14:02:27
Привет! Может кто поскажет по процедуре промоутинга. У нас есть процесс, он построен на ручных действиях и состоит примерно из таких действий:
1) Остановка старого мастера (если он жив)
2) Создание триггер-файла на целевом слейве
3) Актуализация конфигурации нового мастера
4) Обновление CNAME DNS (мы используем их для определения кто мастер и кто слейв)
5) Переналивка слейва относительно нового мастера
6) Все решения принимает человек, информацию о том какая текущая роль у сервера он берет из мониторинга по метрикам и сверяет их с другими фактами (ДНС, записи от системы управления конфигурации)
Пункты 5 и 3 делаются самой системой управления конфигурации, а не руками, но не суть.
Сейчас встал вопрос в автоматизации всех этих действий т.к. есть подозрения в том что дежурные могут сильно накосячить в случае когда промоутинг придется делать по инструкции вне штатной ситуации, и здесь не чоень понятно как заскриптить весь процесс и даст ли это преимущество над человеческой ошибкой, также проблема ДНС в ближайшее время может дать свои проблемы, т.к. есть планы масштабировать слейвы для распределения нагрузки на чтение, внутри команды есть инициатива использовать плавающий адрес, и менять его привязку к серверу в зависимости от живой и активной ноды.
Может кто поделиться опытом как еще устраивают подобные сценарии промоутинга, может есть какие полезные доклады или статьи на эту тему?
Посмотри https://github.com/zalando/patroni
Можно сделать через haproxy


Fike
03.02.2017
14:02:37
У нас в автомате было. Я не имел большого отношения к его конфигурации и не знаю всех подрробностей, но в результате мускул умудрился среплицировать /dev/null размером в полбазы

Sergey
03.02.2017
14:21:27
Патрони выглядит интересно

Eugene
03.02.2017
14:54:55
"внутри команды есть инициатива использовать плавающий адрес, и менять его привязку к серверу в зависимости от живой и активной ноды."
У нас постгре кластер, с 4 слейвами, над ним PgPool. Пгпул отвечает за промоутинг и за распределение нагрузки (тупое правда, селекты по round-robin отправляет на слейвы), при этом пгпулов 2 в режиме hot-stand-by, на пгпулах как раз виртуальный айпи. Собстно в апп серверах этот виртуальный айпи как айпи базы указывается.
Не могу сказать, что это прямо все круто, но промоутинг работает, как и хот-стендбай. Но за два года трижды ловили ситуацию, когда пгпулы теряли все ноды бд, руками из интерфейса приходилось подтыкивать. Причина не очень понятна...

Alex
03.02.2017
15:43:34
страшновато звучит

vladget
03.02.2017
18:21:18
196G /var/lib/pgsql/9.5/data/base/pgsql_tmp - что за папка?
выростает раз в 6ть часов потом исчезает
размер базы всего 40 гиг
что там можно темповать?

Ivan
03.02.2017
18:32:30
Seq scan запросы?

Аггей
03.02.2017
18:33:19
Скорее всего неверно настроен workmem

Google

vladget
03.02.2017
18:33:26
бизнес аналитики из Power BI написали запрос со 100500 CASE когда можно было сделать join

Аггей
03.02.2017
18:34:17
Мало

Айтуар
03.02.2017
18:34:59
Тут ещё транзакция может быть настроена

Igor
03.02.2017
22:03:37
всем привет
почему база может быть не видна на удаленном серваке?

Alexey
03.02.2017
22:03:54
Сервер не тот например.

Igor
03.02.2017
22:03:59
в списке через \list видна, подключаюсь из идеи - не видна
и база postgres видна
хм, муть какая-то. поменял порт с 5433 на 5432 - пропала и из \list, слетел пароль на postgres, но создал заново и заработало ><

Анатолий
04.02.2017
06:38:13
права на базу?
всем привет
почему база может быть не видна на удаленном серваке?

Darafei
04.02.2017
06:45:21
два постгреса разных версий, потому что обновляли убунту? :)

Anna
04.02.2017
08:59:56
всем привет) у меня вопрос: нужно перегнать большой массив данных из csv файла в БД, попыталась сделать вот так: COPY accelerator_log FROM
'/home/username/blahblahblah.csv'
WITH CSV HEADER, ругнулось на несоотвествия данных, а именно таймстемпа - дело в том, что мне дала файлики с Unix timestamp а мне нужно как-то перевести их в postgres timestamp.. кто-нибудь сталкивался с этой проблемой?
Помогите пожалуйста, дедлайн на носу((

Alex
04.02.2017
09:02:26
перегнать в таблицу без таймстампа, потом написать вставку в другую, с приведением к таймстампу, не ?

Anna
04.02.2017
09:03:01
а как его приводить есть соображения? я с юниксовым тамйстемпом впервые встречаюсь

Alex
04.02.2017
09:04:45
to_timestamp? :)

Anna
04.02.2017
09:09:14

ros
04.02.2017
09:24:21
напоминалка http://www.epochconverter.com/

Darafei
04.02.2017
09:25:33
да хоть в браузере в консоли new Date(timestamp*1000);

Google

Dmitry
06.02.2017
07:13:41

Роман
06.02.2017
07:24:27
Немного о том, что пропатчили в PostgreSQL в составе Astra Linux и как это повлияло на скорость работы с базой данных.
В PostgreSQL, входящий в Astra Linux добавлены средства расширенного аудита и разграничения доступа вплоть до ячейки, а с версии 1.5 PostgreSQL стал поддерживать мандатно-ролевую модель разграничения в полном объеме.
Собственно, ниже небольшое описание влияния средств защиты информации и расширенного аудита на скорость работы модифицированной версии PostgreSQL в Astra Linux Special Edition.
Как видно из материала, средства защиты почти не замедляют работу, чего не скажешь об аудите в ряде операций.

Mike Chuguniy
06.02.2017
11:29:12
Одно таки маленькое НО. В астре пг - 9.4, а выше - нет и неизвестно.

Alex
06.02.2017
11:47:55

Vova
06.02.2017
11:50:52
А есть тут кто с киева? :)

Darafei
06.02.2017
11:51:19

Dmitry
06.02.2017
11:57:00

Alex
06.02.2017
12:51:56

Аггей
06.02.2017
12:52:59
И пока вы ваш продукт сертифицируете (иначе зачем вам астра), еще пару версий pg выйдет

Danila
06.02.2017
13:07:32
привет.
есть два сервера бд на одном сервере на дебиане: 9.4 и 9.6
нужно сделать бекап с базы 9.4, но пгдамп не хочет видеть базу

Darafei
06.02.2017
13:08:51
порт указали? :)

Danila
06.02.2017
13:08:55
да

Darafei
06.02.2017
13:10:35
а что значит "не хочет видеть базу"?

Danila
06.02.2017
13:11:25
пишет, что база не найдена

Петр
06.02.2017
13:15:27
покажите ошибку
если бд не найдена, значит не найдена

Slava
06.02.2017
14:49:00

Google

Алексей
06.02.2017
14:50:58
нет, ну может плохо искали ? :)
дебиан поди :)

Alexey
06.02.2017
14:51:44

Петр
06.02.2017
14:54:38

Alexey
06.02.2017
14:55:59
Я специально чтобы кто-нибудь подыграл, а ты не подыграл.

Петр
06.02.2017
14:56:22
?

Evgeniy
06.02.2017
15:00:07
да, у постгреса был бы ответ "просто потюнь автовакуум"

Sergey
06.02.2017
15:21:10