Size: a a a

pgsql – PostgreSQL

2021 February 08

KK

Konstantin K in pgsql – PostgreSQL
ага я нашёл уже
источник

OD

ORACLE DBA in pgsql – PostgreSQL
Переслано от ORACLE DBA
Hello expert pls suggest me steps to install pgaudit on docker container
источник

SP

Slava Pinchuk in pgsql – PostgreSQL
Всем привет.

У меня стоит задача: рассчитывать баланс банковской карты.

Быстрый вариант рассчёта баланса: хранить текущий баланс в отдельной таблице.
Это намного быстрее, но нужно чтобы БД умела делать транзакции с условиями. Постгерс я уже прикрутил, риквесты пишутся, уря.

Тут вопрос не во времени а в O(N). То есть чем больше транзакций тем медленее будет работать.
Быстрый вариант работает как O(1). То есть не важно сколько записей - скорость всегда одна. Это супер круто.

Один баланс это "баланс по логу транзакций" - это то что ты можешь получить если суммируешь все транзакции в таблице.

И второй это "куммулятивный баланс" - это тот который ты постоянно увеличиваешь и уменьшаешь когда приходят транзакции в первую таблицу. По сути это оптимизация ради скорости. В идеальном мире хватило бы одной таблицы.

Если система работает верно, то оба баланса должны всегда сходиться.

С таблицой баланса всё понятно
там номер счёта и баланс юзера, собственно всё.
 
TABLE balance
bank_card
current_balance


А что должно быть в таблице транзакций? Какие поля?

У меня есть таблица риквестов, requests. Это по сути все риквесты на сервер. Одна транзакция это 4 запроса на самом деле:

1. первый авторизационный
2. Второй запрос на снятие или пополнение
3. Апрув
4.  деклаин транзакци

Судя по всему надо, чтобы в таблице транзакий
было поле статус транзакции, айди транзакции, та ккак в каждом запросе есть `TXn_ID`и токен банковской карты.
Ещё что-то надо может.

transacctions
ID
Txn_ID
Token - токен банковской карты, он уникален и по сути это номер счёта
Amount - сколько денег надо снятьили положить
TrxType - тип транзакции это снять с банкомата, между счетами и так далее...
Status - статус трандазкции Pending, Failed, Approved



Баланс это сумма всех трназакций по конкретному счёту.
Кажись под определение така ятаблица транзакций подходит. Если это верно я задам вопрос 2
источник

SI

Shahina Ismoilova in pgsql – PostgreSQL
Cмотрите. Теперь почему-то такое выходит
источник

RL

Roman Lukianov in pgsql – PostgreSQL
Shahina Ismoilova
Cмотрите. Теперь почему-то такое выходит
Пишет, что нет соответствующей записи в таблице snif с id = 1.
источник

am

a m in pgsql – PostgreSQL
Slava Pinchuk
Всем привет.

У меня стоит задача: рассчитывать баланс банковской карты.

Быстрый вариант рассчёта баланса: хранить текущий баланс в отдельной таблице.
Это намного быстрее, но нужно чтобы БД умела делать транзакции с условиями. Постгерс я уже прикрутил, риквесты пишутся, уря.

Тут вопрос не во времени а в O(N). То есть чем больше транзакций тем медленее будет работать.
Быстрый вариант работает как O(1). То есть не важно сколько записей - скорость всегда одна. Это супер круто.

Один баланс это "баланс по логу транзакций" - это то что ты можешь получить если суммируешь все транзакции в таблице.

И второй это "куммулятивный баланс" - это тот который ты постоянно увеличиваешь и уменьшаешь когда приходят транзакции в первую таблицу. По сути это оптимизация ради скорости. В идеальном мире хватило бы одной таблицы.

Если система работает верно, то оба баланса должны всегда сходиться.

С таблицой баланса всё понятно
там номер счёта и баланс юзера, собственно всё.
 
TABLE balance
bank_card
current_balance


А что должно быть в таблице транзакций? Какие поля?

У меня есть таблица риквестов, requests. Это по сути все риквесты на сервер. Одна транзакция это 4 запроса на самом деле:

1. первый авторизационный
2. Второй запрос на снятие или пополнение
3. Апрув
4.  деклаин транзакци

Судя по всему надо, чтобы в таблице транзакий
было поле статус транзакции, айди транзакции, та ккак в каждом запросе есть `TXn_ID`и токен банковской карты.
Ещё что-то надо может.

transacctions
ID
Txn_ID
Token - токен банковской карты, он уникален и по сути это номер счёта
Amount - сколько денег надо снятьили положить
TrxType - тип транзакции это снять с банкомата, между счетами и так далее...
Status - статус трандазкции Pending, Failed, Approved



Баланс это сумма всех трназакций по конкретному счёту.
Кажись под определение така ятаблица транзакций подходит. Если это верно я задам вопрос 2
Я из вашего потока сознания ничего не понял, но вы явно ступили на длинный путь изобретения https://en.wikipedia.org/wiki/Double-entry_bookkeeping
источник

SP

Slava Pinchuk in pgsql – PostgreSQL
a m
Я из вашего потока сознания ничего не понял, но вы явно ступили на длинный путь изобретения https://en.wikipedia.org/wiki/Double-entry_bookkeeping
а есть в какой-то книге по постгресу помимо статейки в вики?
источник

am

a m in pgsql – PostgreSQL
Второе. Вне зависимости от того, что вы там напроектировали — вам все равно понадобится таблица account с колонкой balance. Потому что если ее не будет, то из-за постгресового MVCC вам придется для корректной работы лочить всю таблицу transactions.
источник

SP

Slava Pinchuk in pgsql – PostgreSQL
a m
Второе. Вне зависимости от того, что вы там напроектировали — вам все равно понадобится таблица account с колонкой balance. Потому что если ее не будет, то из-за постгресового MVCC вам придется для корректной работы лочить всю таблицу transactions.
Я кажется написал что надо 2 таблицы и та что Вы говорите там есть
источник

SP

Slava Pinchuk in pgsql – PostgreSQL
не надо мне третья таблица аккаунт, зачем?
источник

am

a m in pgsql – PostgreSQL
Можете назвать ее balance. Я разрешаю.
источник

SP

Slava Pinchuk in pgsql – PostgreSQL
a m
Можете назвать ее balance. Я разрешаю.
спасибо :D
источник

SI

Shahina Ismoilova in pgsql – PostgreSQL
Roman Lukianov
Пишет, что нет соответствующей записи в таблице snif с id = 1.
ааа понятно спасибо
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Slava Pinchuk
а есть в какой-то книге по постгресу помимо статейки в вики?
Вы не заметили, что это один из основных принципов этой проклятой бухгалтерии как таковой? ;)
Т.е. к постгресу не имеет никакого отношения, и вряд ли это можно найти в какой-то книге по СУБД, разве что как пример чего-то (управления транзакциями).

И да, непонятно, в чём именно у Вас вопрос, IMHO.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Федор Гулин
Поясните плз.
Пользователи будут работать под техническими юзерами
Для схемы orx : orx_trx,
Ois : ois_trx вопрос куда сувать общие функции
Я не уверен, что понял вопрос. :(
Как вариант — в отдельную схему, куда есть доступ на выполнение функций у всех ролей, которым это нужно (ни одна из них ничем из этого не владеет, конечно).
источник

SP

Slava Pinchuk in pgsql – PostgreSQL
Yaroslav Schekin
Вы не заметили, что это один из основных принципов этой проклятой бухгалтерии как таковой? ;)
Т.е. к постгресу не имеет никакого отношения, и вряд ли это можно найти в какой-то книге по СУБД, разве что как пример чего-то (управления транзакциями).

И да, непонятно, в чём именно у Вас вопрос, IMHO.
Вопрос простой.
Понятно, что если есть один сервис, который просит списать или положить бабло, то мы просто апдейтим запись. Е сли деклаин тоже апдейтим запись
А если таких сервисов 4 или 5?
То может быть таоке что в единицу времени ежечасно я заапрувил и снял деньги для одного сервиса(то есть сперв азабронировал денбги а потмо списал),  а второй раньше забронировал и потом надо списать, то уже писывать нечего так как первый списал ранее.

Конкурентое списнаие денег баланса... Что тогда делать? Это задача базы или всё же решается в коде?
источник

am

a m in pgsql – PostgreSQL
По-моему вы хотите от нас не чтобы мы проблему решили, а чтобы мы ее сначала за вас придумали.
источник

SP

Slava Pinchuk in pgsql – PostgreSQL
не
источник

ИК

Игорь Кудрешов... in pgsql – PostgreSQL
Kirill
Всем привет! Есть сервер с PostgreSQL на котором раз в неделю выполняется бэкап pg_dumpall, который вызывается через баш скрипт в кроне. Столкнулся с проблемой, что заколнчилось место на диске и решил сжимать бэкапы через gzip backup.sql. Запустил сжатие текущего бэкапа, но случился дисконнект и операция прервалась. Подскажите как можно запустить выполнение команды, чтобы при этом можно было отключится от сервера, а команда продолжила свое выполнение?
Я посоветовал бы подключить доп диск и хранить бекапы на нем
источник

SP

Slava Pinchuk in pgsql – PostgreSQL
Я хочу просто узнать куда копать
источник