Size: a a a

pgsql – PostgreSQL

2021 March 02

С

Сергей in pgsql – PostgreSQL
Yuliya Bel
Спасибо, попробую через них
источник

YB

Yuliya Bel in pgsql – PostgreSQL
Сергей
Спасибо огромное!!!!!!!
источник

OB

Oleg Bartunov in pgsql – PostgreSQL
Warstone
У нас есть задача хранения стейта пользователя. Стейт это большой JSON. До нескольких мегабайт. Фактически это такое key-value хранение. Ключ - id пользователя, value - пожатый json в bytea. Естественно что хотелось-бы чтобы через SQL иногда можно было собирать какую-нибудь аналитику. Когда появился jsonb сделали тесты. bytea выиграл по скорости (не помню точные цифры, но перевес был большой) вставки, так как там JSON был запакован, а в случае jsonb он передавался не запакованным и, в результате, забивал весь сетевой интерфейс (соответственно сохранение стейта и его загрузка сильно проседали-бы). Пришлось и дальше сидеть на bytea.
Сейчас обсуждают компрессию в libpq, это вам поможет. А зачем вам весь jsonb тащить, вам ведь все можно в базе сделать и вытаскивать только результаты.
источник

SG

Sergey Gr in pgsql – PostgreSQL
Похоже на оракловый код
источник

АЯ

Александр Ягубов... in pgsql – PostgreSQL
Sergey Gr
Похоже на оракловый код
Он самый
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
источник

W

Warstone in pgsql – PostgreSQL
Oleg Bartunov
Сейчас обсуждают компрессию в libpq, это вам поможет. А зачем вам весь jsonb тащить, вам ведь все можно в базе сделать и вытаскивать только результаты.
Нельзя. Не потянет. У нас архитектура построена по принципу: Пока пользователь подключен - весь его стейт в памяти того бека, куда он подключен. Как отключится - положим обратно в базу. И да, если вдруг стейт откатится по каким-либо причинам - это, конечно, плохо, но вариантов у нас нету.

А насчет компресии - это хорошо. Давно пора.
источник

V

V in pgsql – PostgreSQL
Warstone
Нельзя. Не потянет. У нас архитектура построена по принципу: Пока пользователь подключен - весь его стейт в памяти того бека, куда он подключен. Как отключится - положим обратно в базу. И да, если вдруг стейт откатится по каким-либо причинам - это, конечно, плохо, но вариантов у нас нету.

А насчет компресии - это хорошо. Давно пора.
а если тот бэк внезапно упадет?)
источник

D

Dmitriy in pgsql – PostgreSQL
Warstone
Нельзя. Не потянет. У нас архитектура построена по принципу: Пока пользователь подключен - весь его стейт в памяти того бека, куда он подключен. Как отключится - положим обратно в базу. И да, если вдруг стейт откатится по каким-либо причинам - это, конечно, плохо, но вариантов у нас нету.

А насчет компресии - это хорошо. Давно пора.
А как вы масштабируетесь? Запросы ж при балансировке в разные бэки могут прилетать
источник

OB

Oleg Bartunov in pgsql – PostgreSQL
Warstone
Нельзя. Не потянет. У нас архитектура построена по принципу: Пока пользователь подключен - весь его стейт в памяти того бека, куда он подключен. Как отключится - положим обратно в базу. И да, если вдруг стейт откатится по каким-либо причинам - это, конечно, плохо, но вариантов у нас нету.

А насчет компресии - это хорошо. Давно пора.
Мы сейчас с psycopg экспериментируем передачу jsonb   в бинарном виде, выигрыши видны, но там не про компрессию.
источник

W

Warstone in pgsql – PostgreSQL
V
а если тот бэк внезапно упадет?)
Значит не судьба. Не пишите код, который падает. У нас пока получается.
источник

W

Warstone in pgsql – PostgreSQL
Не всегда, правда... Но достаточно.
источник

W

Warstone in pgsql – PostgreSQL
Oleg Bartunov
Мы сейчас с psycopg экспериментируем передачу jsonb   в бинарном виде, выигрыши видны, но там не про компрессию.
Еще лучше.
источник

V

V in pgsql – PostgreSQL
Warstone
Значит не судьба. Не пишите код, который падает. У нас пока получается.
ну это как на мотоцикле ездить. ты можешь делать все правильно, но все равно есть шанс что откуда-нибудь дурак прилетит)
источник

OB

Oleg Bartunov in pgsql – PostgreSQL
Warstone
Еще лучше.
Можешь с Даниеле поговорить про это, он на конфе доклад и туториал делает.
источник

W

Warstone in pgsql – PostgreSQL
V
ну это как на мотоцикле ездить. ты можешь делать все правильно, но все равно есть шанс что откуда-нибудь дурак прилетит)
Да. И в этом случае будет откат. Проще решить проблемы с пользователями из-за отката, чем, вместо одной тачки с Пг использовать 30 (это если все данные в базе будут) и тормозить все операции пользователя (а там реально от пользователя одна команда в секунду может быть, а пользователей... Кстати надо посмотреть)
источник

OB

Oleg Bartunov in pgsql – PostgreSQL
А пробовали ssl-компрессию включать?
источник

W

Warstone in pgsql – PostgreSQL
Oleg Bartunov
А пробовали ssl-компрессию включать?
Во время тестов не пробовали. Про ssl компрессию знаю, но не проверяли. Все руки не дошли. Во время тестов нам как-бы решение сейчас надо было... После того как мускуль вслед за монгой развалился с уносом бекапов.
источник

OB

Oleg Bartunov in pgsql – PostgreSQL
Warstone
Во время тестов не пробовали. Про ssl компрессию знаю, но не проверяли. Все руки не дошли. Во время тестов нам как-бы решение сейчас надо было... После того как мускуль вслед за монгой развалился с уносом бекапов.
Можно вообще написать свою функцию, которая передает jsonb как есть сжатый, но тогда в приложении надо слишком много знать о потрохах постгресаб
источник

W

Warstone in pgsql – PostgreSQL
Oleg Bartunov
Можно вообще написать свою функцию, которая передает jsonb как есть сжатый, но тогда в приложении надо слишком много знать о потрохах постгресаб
Не, на такие жертвы ради возможность селектить из стейта мы пойтить не готовы. По крайней мере пока что ))
источник