
Tishka17
30.10.2018
17:34:14

Artem?
30.10.2018
17:34:49

Andrew
30.10.2018
17:35:08
Да
Зачем? Так то и больше можно

Google

Tishka17
30.10.2018
17:39:53
Я вообще вопрос не понял

Vaderoff
30.10.2018
17:51:11
Гайс вопросик. Есть бот в тг на асинхроне для обмена криптой, вся инфа о балансах хранится в бд, как быть уверенным в том что пока проводится сделка между двумя пользователями, один из этих пользователей не вывел деньги? То есть как быть увереным что после проверки if user.balance == trade.amount баланс пользователя не изменится, все же делается асинхронно ?

Tishka17
30.10.2018
17:52:43

Vaderoff
30.10.2018
17:52:56

Tishka17
30.10.2018
17:53:04
Или select for update

LighteR
30.10.2018
17:54:31

Vaderoff
30.10.2018
17:55:30

LighteR
30.10.2018
17:55:33

Vaderoff
30.10.2018
17:55:45

LighteR
30.10.2018
17:56:14

Vaderoff
30.10.2018
17:56:44

LighteR
30.10.2018
17:57:05
а что за субд?

Tishka17
30.10.2018
17:57:08

Google

Vaderoff
30.10.2018
17:57:24

LighteR
30.10.2018
17:57:49
CREATE TABLE products (
product_no integer,
name text,
price numeric CONSTRAINT positive_price CHECK (price > 0)
);

Tishka17
30.10.2018
17:58:02
Лучше наверно select for update, мало ли какая там ещё логика

Bogdan
30.10.2018
17:58:18
либо alter table {name table} add constraint {name constraint}...

Vaderoff
30.10.2018
17:58:30

LighteR
30.10.2018
17:58:49

Tishka17
30.10.2018
17:58:52
https://github.com/Tishka17/sber_test вот похожий кейс

Vaderoff
30.10.2018
17:58:58

Nikolay
30.10.2018
17:59:38
Я уже много на кого досье набрал

Tishka17
30.10.2018
18:00:26
деанон
Ой да меня нагулить прям проблема

Bogdan
30.10.2018
18:02:20
у тебя тут очепятка

Tishka17
30.10.2018
18:02:30
Ой да пофиг
Там ещё и двухфазный комит не дописан

LighteR
30.10.2018
18:03:58
с select for update можно и в коде

Vaderoff
30.10.2018
18:14:01
Понял, всем спасибо

Nikolay
30.10.2018
18:15:22
int 13h

Vaderoff
30.10.2018
18:15:56
Понял, всем спасибо
То есть выход: constraints на неотрицательны баланс + проверка баланса в запросе? Select for update здесь нужен?

Google

LighteR
30.10.2018
18:16:43

Toha
30.10.2018
18:17:54
Кстати!
А как такие ограничения делать средствами СУБД?
Триггеры?

LighteR
30.10.2018
18:18:14
CREATE TABLE products (
product_no integer,
name text,
price numeric CONSTRAINT positive_price CHECK (price > 0)
);

Toha
30.10.2018
18:18:59
О_о

Никита
30.10.2018
18:19:16

Vaderoff
30.10.2018
18:19:27

Никита
30.10.2018
18:19:43
Перенос части бизнес логики в хранилище - не самое лучшее решение

LighteR
30.10.2018
18:20:16

Никита
30.10.2018
18:21:19

Vaderoff
30.10.2018
18:22:16

LighteR
30.10.2018
18:22:25

Никита
30.10.2018
18:22:39

LighteR
30.10.2018
18:22:47

Никита
30.10.2018
18:23:05
У вас что, данные сразу в базу приходят?

LighteR
30.10.2018
18:23:23
нет
приведи пример (можно на псевдоязыке) как будет выглядеть списание с пользователя определенной суммы

Toha
30.10.2018
18:23:53
На моем последнем проекте я ввел поле balance в сущность "кошелек"
На что мне сказали - "аяяй" так делать

Google

Toha
30.10.2018
18:24:21
Баланс должен высчитываться всегда из транзакций
И если нужно скорости - кешировать его

Vaderoff
30.10.2018
18:24:40

Toha
30.10.2018
18:25:30

Никита
30.10.2018
18:25:49

Vaderoff
30.10.2018
18:26:27

Admin
ERROR: S client not available

LighteR
30.10.2018
18:26:28

Toha
30.10.2018
18:27:01
Да мне кажется норм тема с кешированием баланса

Никита
30.10.2018
18:27:18

Toha
30.10.2018
18:27:19
и не хранить его в кошельке

LighteR
30.10.2018
18:27:30

Никита
30.10.2018
18:27:31

LighteR
30.10.2018
18:28:17

Vaderoff
30.10.2018
18:28:29

Никита
30.10.2018
18:29:03

LighteR
30.10.2018
18:29:51
давай сначала с этим разберемся

Никита
30.10.2018
18:31:33

Google

Toha
30.10.2018
18:31:50
что такое SSI?

Никита
30.10.2018
18:32:09

LighteR
30.10.2018
18:33:43

Никита
30.10.2018
18:34:00

Toha
30.10.2018
18:34:31

LighteR
30.10.2018
18:35:24
ахах
да, я аж чаем подавился ))

Vaderoff
30.10.2018
18:36:24

Toha
30.10.2018
18:37:26
Типа, не дает закоммитить транзакцию
Если до коммита был выполнен коммит в другой транзакции
если я правильно понел

Никита
30.10.2018
18:38:11
Да

Toha
30.10.2018
18:38:16
да
Прикольная штука, ннада будет изучить ее глубже. Мне это пригодится
получается, в таких случаях выполнять подобного рода операции нужно в цикле?
типа в декоратор какой нить обернуть