@scala_ru

Страница 1157 из 1499
Nick
19.12.2017
13:41:00
потому что из доклада следует, что протокол как раз умеет

а сишная реализация нет

Юрий
19.12.2017
13:41:24
Возможно имелось в виду что-то другое

Nick
19.12.2017
13:41:58
@odomontois прокомментируй

Google
Юрий
19.12.2017
13:42:49
https://www.postgresql.org/message-id/flat/CAMsr+YFUjJytRyV4J-16bEoiZyH=4nj+sQ7JP9ajwz=B4dMMZw@mail.gmail.com#CAMsr+YFUjJytRyV4J-16bEoiZyH=4nj+sQ7JP9ajwz=B4dMMZw@mail.gmail.com Вроде как есть планы по прикручиванию асинхронности в протокол

Нашел

Nick
19.12.2017
13:43:40
там речь идет про libpq

а не про протокол

Oleg
19.12.2017
13:44:43
libpq также именуемая выше как "говнолиба"

Юрий
19.12.2017
13:48:12
Ну тогда круто, че

Oleg
19.12.2017
13:50:25
https://www.postgresql.org/docs/devel/static/protocol-flow.html#id-1.10.5.7.4 It is not actually necessary for the frontend to wait for ReadyForQuery before issuing another command, but the frontend must then take responsibility for figuring out what happens if the earlier command fails and already-issued later commands succeed.

Юрий
19.12.2017
14:01:06
А на практике можно ли различить ответы?

Oleg
19.12.2017
14:06:48
Ну ты же помнишь, в каком порядке ты их отправлял

Nick
19.12.2017
14:08:32
там скорее всего есть id

Oleg
19.12.2017
14:10:42
Юрий
19.12.2017
14:11:41
Oleg
19.12.2017
14:14:48
Google
Юрий
19.12.2017
14:16:01
Тогда непонятно, как достигается асинхронность

Вот отправил я запрос долгий. А после него простой, но с ошибкой. Если порядок строгий - то ответ второго будет ждать долгий запрос?

Oleg
19.12.2017
14:25:22
Тогда непонятно, как достигается асинхронность
Никто не говорил об асинхронности на уровне протокола

Её нет

Юрий
19.12.2017
14:26:07
Ну я о ней говорил

Пайплайнинг без асинхронности ничего не даёт

Oleg
19.12.2017
14:26:49
Пайплайнинг без асинхронности ничего не даёт
Даёт. Пайплайнинг даёт очень хороший прирост

В определённых кейсах

Юрий
19.12.2017
14:27:32
Все равно странно, что нету асинка

Oleg
19.12.2017
14:28:22
Зачастую ты сам можешь предсказать с какой-то погрешностью сложность запроса

sherzod
19.12.2017
14:28:49
async должен на пользовательском уровне делаться мне кажется. зачем это в бекенд тащить

Oleg
19.12.2017
14:28:55
И гонять кучи мелких независимых запросов в отдельном подключении

async должен на пользовательском уровне делаться мне кажется. зачем это в бекенд тащить
Не очень понял, но Юрий прав. Если бы протокол поддерживал асинхронность, это очень помогло бы

На уровне СУБД асинхронность есть, быстрые запросы могут обрабатываться независимо от долгих. А на уровне протокола воспользоваться этим затруднительно

Юрий
19.12.2017
14:36:08
В определённых кейсах
ну да, если нагрузка равномерная - это поможет.

sherzod
19.12.2017
14:39:15
Не очень понял, но Юрий прав. Если бы протокол поддерживал асинхронность, это очень помогло бы
чем? Сейчас на одно подключение один процесс (+ параллельность внутри плана) очень просто все диагностируется

sherzod
19.12.2017
14:41:55
знаю ПГ как пользователь, не знаю стоит ли за это платить усложнением работы с бекендом. Мне кажется это проблема на уровене пользовательского кода все-таки.

sherzod
19.12.2017
14:49:23
еще как изменится

Google
sherzod
19.12.2017
14:50:00
Всегда ценил ПГ за простоту. один connection один процесс. Все последовательно внутри процесса. Диагностика супер простая.

Юрий
19.12.2017
14:50:57
ну и нужно открыть 100500 конекшенов для нормальной нагрузки

а так 5 конектов открыл и готов

sherzod
19.12.2017
14:51:42
вот именно. о чём и говорят, надо просто юзать отдельные connection-ы. Не пихать сложную логику асинка в протокол.

Юрий
19.12.2017
14:52:14
соединения не бесплатные

если можно сделать больше работы с одним и тем же количеством соединений - почему нет

а так они большую часть времени стоят и ничего не делают

это же как с соединениями и блокирующими операциями. Можно отправить запрос и заблокировать поток. А можно отправить запрос и продолжить использовать поток для других вещей.

sherzod
19.12.2017
14:57:11
так так и надо делать)) зачем тут протокол? соединения в данном случае копейки, так как все равно вы их держите, и ровно столько сколько можете на стороне ПГ запустить процессов.

Юрий
19.12.2017
14:58:43
так так и надо делать)) зачем тут протокол? соединения в данном случае копейки, так как все равно вы их держите, и ровно столько сколько можете на стороне ПГ запустить процессов.
еще раз. Соединение - это не копейки. И я просто провел аналогию. Зачем держать кучу соединений, когда всё равно они почти всё время простаивают?

sherzod
19.12.2017
14:58:57
это копейки. установить соединение это дорого.

Mikhail
19.12.2017
14:59:04
в телеграме можно как-то к человеку вешать бейджик: "Школьник" ?

sherzod
19.12.2017
14:59:38
если будет 3 соединения и 9 postgres-процессов, то добавить 6 соединений (которые активны) ничего стоить не будет.

Mikhail
19.12.2017
15:00:21
держать в памяти таблицу соединений, которые не используются - это конечно не дорого. но обслуживать ио по множеству активных соединений - это очень дорого.

sherzod
19.12.2017
15:02:05
почему дорого? может расскажете?

от уровня jvm до ОС, как все происходит и сколько всего нужно.

Daniel
19.12.2017
15:02:55
если будет 3 соединения и 9 postgres-процессов, то добавить 6 соединений (которые активны) ничего стоить не будет.
Хз как в постгре, подозреваю схоже в общем. Оракл для каждого соединения создает у себя сессии. Память под них выделяется в специальной области. И это весьма тяжелая вещь.

Alexander
19.12.2017
15:04:32
Доклад Олега классный, кассандра тоже

sherzod
19.12.2017
15:04:55
Хз как в постгре, подозреваю схоже в общем. Оракл для каждого соединения создает у себя сессии. Память под них выделяется в специальной области. И это весьма тяжелая вещь.
суть в том, что для асинхронности вы потратите ровно столько сколько нужно будет для отдельных подключений. как на клиенте так и на сервере.

Google
Юрий
19.12.2017
15:05:24
Хз как в постгре, подозреваю схоже в общем. Оракл для каждого соединения создает у себя сессии. Память под них выделяется в специальной области. И это весьма тяжелая вещь.
а еще впереди может стоять pgpool. А еще пг может быть шареным, где для каждого выделено ограниченное число соединений. И вот уже соединения не такие бесплатные и хочется сделать с минимальным количеством максимум.

sherzod
19.12.2017
15:05:31
+ усложните работу с сервером. про оракл не скажу. postgres лучший. ps aux | grep postgres | ... решает 90% проблем.

Юрий
19.12.2017
15:07:34
я согласен, что асинк усложнит опс, но при этом это безусловно будет значительным шагом вперед для постгри

sherzod
19.12.2017
15:08:40
если ты про домашнюю страничку, то про это в котлин чат
прежде чем вешать ярлык, советовал бы подумать. иногда полезно этим занятием заниматься.

Daniel
19.12.2017
15:09:26
+ усложните работу с сервером. про оракл не скажу. postgres лучший. ps aux | grep postgres | ... решает 90% проблем.
Вот уж явно не видели проблем. Универсальный инструмент с кучей ручек надо тюнить под кейсы. А если нет, то либо все просто и без нагрузки/объемов либо дикий фарт с кейсом и дефолтами.

sherzod
19.12.2017
15:10:19
если про ПГ, абсолютно согласен)

Mikhail
19.12.2017
15:11:51
Вот уж явно не видели проблем. Универсальный инструмент с кучей ручек надо тюнить под кейсы. А если нет, то либо все просто и без нагрузки/объемов либо дикий фарт с кейсом и дефолтами.
еще и не просто тюнить, но и разносить по разным рабочим нодам (не кластеризация, а именно каждая нода со своим тюнингом под нужный кейс). но это конечно если не хоумпейджи

sherzod
19.12.2017
15:13:13
ну да PG не коробочный продукт. linux way

Alexander
19.12.2017
15:16:34
Посоветуйте, есть REST метод, который принимает на вход JSON с кучей параметров, надо его "закэшировать", чтобы повторно не вычислять для тех же самых параметров. Но эти параметры - это класс с вложенными коллекциями, и в целом около 10 параметров разных - то есть класть их все в базу (постгрес) как поля - не вариант. Что если этот класс сериализовать в JSON с одними и теми же настройками сериализации и положить в одно поле базы и по этому полю искать. Нормальное решение или есть лучше варианты?

Admin
ERROR: S client not available

Alexey
19.12.2017
15:23:11
можно посчитать несколько хешей, чтобы на 99.99999 процентов быть уверенным что всё ок и класть в базу только хеши

Alexander
19.12.2017
15:23:44
ну потом всё равно надо будет сравнить с оригинальным запросом, в случае если хэш совпал

но такой вариант тоже норм

Alexey
19.12.2017
15:24:01
ну для этого я предложил считать 2 хеша

Mikhail
19.12.2017
15:24:26
Alexander
19.12.2017
15:24:41
ну условно гарантирует, если использовать один и тот же механизм

Google
Alexey
19.12.2017
15:25:17
Ну если база резиновая, то можно класть числовой хеш + json

Alexander
19.12.2017
15:25:29
да, вполне резиновая

Alexey
19.12.2017
15:25:44
так будет 100% гарантия и скорость приемлемая

Oleg
19.12.2017
15:26:00
полагаю, что можно выбрать один хороший хеш и забить

Alexey
19.12.2017
15:26:15
Ну вообще да, я тоже так думаю

Oleg
19.12.2017
15:26:29
типа там sha256

но всё равно проблемы с репрезентацией параметров, нужно очень очень быть уверенным, что генерируешь одну и ту же символьную последовательность

а какого рода коллекции?

Юрий
19.12.2017
15:29:00
есть лучшие решения

а почему постгря в качестве кеша?

Alexander
19.12.2017
15:31:05
коллекции - листы, отсортирую их перед сериализацией

Oleg
19.12.2017
15:31:30
листы чего?

Alexander
19.12.2017
15:31:49
а почему постгря в качестве кеша?
уже используется просто, это не супер пупер что-то нагруженное, тянуть ради этого ещё что-то нет смысла

листы чего?
листы UUID-ов

sherzod
19.12.2017
15:34:18
листы UUID-ов
а что вычисляется-то, сам JSON?

Alexander
19.12.2017
15:34:48
параметры анализа, в спарк уходит

sherzod
19.12.2017
15:42:33
а json входящий насколько большой?

Alexander
19.12.2017
15:42:51
да небольшой

смотря сколько UUID-ов в коллекциях

Kyrylo
19.12.2017
17:31:00
Привет! я посмотрел доклад Олега, сериализация типов из скала в касандра типы все класнно, но... может я что не понял. зачем сериализировать getOffer function?? или мы там храним по-сути кэш всех вызовов функции и она автоматом кэшируется неявно в кассандру? я что-то не уловил как использовать либу и что в итоге мы получим

Kyrylo
19.12.2017
17:35:23
прикольно! спасибо, вроде понял. то-есть кэширование истории экзекьюшена, и если вдруг там после обновления что-то поламалось оно будет работать... очень интересно.. спасибо ?

Страница 1157 из 1499