Size: a a a

pgsql – PostgreSQL

2020 June 13

TS

Tagil Steel in pgsql – PostgreSQL
Ð
возможно надо попробовать сделать это по-нормальному через group by и через агрегаты
не получится.
источник

Ð

Ð in pgsql – PostgreSQL
почему?
источник

Д

Диман in pgsql – PostgreSQL
pragus
нет, не в кубе и все не так просто. у каждого пользователя толпа балансов(деньги, смс, минуты, whatever), списание с этих балансов происходят параллельно и по разным наборам правил(серфить в инете во время разговора + смс, например, а стоимость услуг вообще зависит от времени суток) и с одного баланса у вас тратятся услуги для всей семьи(friends & family). И отвечать на все запросы надо за 50ms
И с чем именно не справляется бд?
источник

p

pragus in pgsql – PostgreSQL
Диман
И с чем именно не справляется бд?
со всем справляется кроме таймингов
источник

2_

2flower _ in pgsql – PostgreSQL
pragus
со всем справляется кроме таймингов
ну в этой задачи не обязательно ВСЕ считать в БД.
источник

TS

Tagil Steel in pgsql – PostgreSQL
Ð
почему?
Во-первых потому что в выборке такие отношения, что данные будут задваиваться. В принципе, это можно обойти, сделав еще один слой, как предлагал Диман, но это добавит оверхеда, а сумму посчитать так, как нам надо, все равно не получится.
Так как в разных строках значения в разных единицах измерения.
источник

p

pragus in pgsql – PostgreSQL
2flower _
ну в этой задачи не обязательно ВСЕ считать в БД.
именно. я потому и писал, что в  такой задаче бд использовалась как cold storage, в которую периодически скидывалось состояние
источник

Д

Диман in pgsql – PostgreSQL
pragus
со всем справляется кроме таймингов
Ну так вы видимо пулл не юзаете. Каждый коннект к бэ это создание нового бэкэнд на ней. Это скажем таки не быстрая операция так то.
источник

Ð

Ð in pgsql – PostgreSQL
Tagil Steel
Во-первых потому что в выборке такие отношения, что данные будут задваиваться. В принципе, это можно обойти, сделав еще один слой, как предлагал Диман, но это добавит оверхеда, а сумму посчитать так, как нам надо, все равно не получится.
Так как в разных строках значения в разных единицах измерения.
так почему нельзя сгруппировать строки по единицам измерения?
источник

Ð

Ð in pgsql – PostgreSQL
и проигнорить задваивания
источник

2_

2flower _ in pgsql – PostgreSQL
pragus
именно. я потому и писал, что в  такой задаче бд использовалась как cold storage, в которую периодически скидывалось состояние
неее. вы не поняли, обсчет баланса и других важных частей ТОЛЬКО после фиксации в бд, иначе будет больно.
источник

Д

Диман in pgsql – PostgreSQL
Может у них свет не моргал на проде ни разу.)
источник

Д

Диман in pgsql – PostgreSQL
Тагил, а как происходит вызов функции?
источник

p

pragus in pgsql – PostgreSQL
2flower _
неее. вы не поняли, обсчет баланса и других важных частей ТОЛЬКО после фиксации в бд, иначе будет больно.
там логика какая: мы пишем в специальную табличку сколько хотим списать, потом оказываем услуг на эту резервацию и так пока есть денег на следующую итерацию.
источник

TS

Tagil Steel in pgsql – PostgreSQL
Диман
Тагил, а как происходит вызов функции?
common.SUM_VALUE("st"."value", st.unit_id, st.id) FILTER ( WHERE "st"."from_type"=4) AS valueFrom,st.id) FILTER ( WHERE "st"."from_type"=4) AS valueFrom,
источник

2_

2flower _ in pgsql – PostgreSQL
pragus
там логика какая: мы пишем в специальную табличку сколько хотим списать, потом оказываем услуг на эту резервацию и так пока есть денег на следующую итерацию.
т.е. вы все же данные обсчитываете и храните в бд , как я и говорил, а уж как именно это дело десятое.
источник

p

pragus in pgsql – PostgreSQL
2flower _
т.е. вы все же данные обсчитываете и храните в бд , как я и говорил, а уж как именно это дело десятое.
да, но то что относительно редко меняется(правила обсчёта) - высасывается в памятью
источник

TS

Tagil Steel in pgsql – PostgreSQL
Ð
так почему нельзя сгруппировать строки по единицам измерения?
Это надо будет делать на отдельном уровне, оверхед будет огромный. Функцией лучше.
источник

2_

2flower _ in pgsql – PostgreSQL
pragus
да, но то что относительно редко меняется(правила обсчёта) - высасывается в памятью
ну так про это я и не возражал, никто же не будет реально каждый раз лезть в бд чтобы показать кол-во абонентов на сайте,
вы снаружи закэшируете и будете обновлять периодически.
источник

Д

Диман in pgsql – PostgreSQL
Тагил, что-то имя другое вроде как у функции.
источник