@spblug

Страница 903 из 1075
Phil
17.01.2017
20:32:07
Фил а что не так с обычной транзакцией в базе даных ?
а ты хотя бы селект фор апдейт составь. не, у сегя даже получилось. но этл срыв мозга. любое изменение логики будет превращаться в сложноотдаживаемый треш

Roman
17.01.2017
20:32:56
И что делать, когда захочется немонетарных балансов?

Phil
17.01.2017
20:33:54
Внедрение любого биллинга начинается с ответов на четкие вопросы: "что конкретно и каким образом ты хочешь считать". Ты сначала на эти вопросы ответь.
Когечно они есть. Я хочу иметь лог проводок. Считать что и как - дело конкретного сервиса или их комьинациио которой знают они, поддержтвпют они, и виноваты они

Google
Roman
17.01.2017
20:34:30
Типа "внеси на счет 5к руб и получи 5 доменов в подарок"

Phil
17.01.2017
20:35:51
Типа "внеси на счет 5к руб и получи 5 доменов в подарок"
тип того. долгая хрен с ним - так не бывает у меня.но сложная

Roman
17.01.2017
20:37:06
Ну или "домен к хостингу в подарок"

И проч

Алексей
17.01.2017
20:38:48
я не предлагаю select for update

я предлагаю трназакцию

неужели в муське нет транзакций ?

с нормальным rollback ? и commit

http://dev.mysql.com/doc/refman/5.7/en/commit.html

нет все в порядке трнзакции есть

я помню что там какая то беда была с изоляцией транзакций, типа гразные данные видать

но уровнем изоляции это решается вполне

Google
Алексей
17.01.2017
20:42:34
а может у тя просто автокоммит включен ?

или у тя Myisam для биллинговых данных ???????????????

Phil
17.01.2017
21:11:00
Фил, мой ресурс конечен. Тебе уже несколько человек описали что и как.
Я тебе даже упрощу. Есть User1 с 1$ на лицевом счету и работающей услугой VDS1за 4 бакса в месяц. Через три недели он захотел поменять услугу VDS1 на услугу VDS2 стоимостью 8 баксов в месяц. Давай это действие смены тарифа по шагам пройдем. Шаг - транзакция БД. Выключаем каждый и каждыей междушаг электричество. Как пинг. Смотрим размер фарша в моём варианте записи этих шагов и в твоем варианте забивания на запись.

я не предлагаю select for update
предлагаешь. потому что мне нужно залочить услуги, счета, проводки, метаинформацию

Алексей
17.01.2017
21:12:12
нет

транзакця это делает за тебя

Phil
17.01.2017
21:12:31
коечно нет

или ты предлагаешь сериализованную изоляцию? да, уже предлагали

Алексей
17.01.2017
21:13:22
я предлагаю не read commited да.

как минимум репитабл рид

Phil
17.01.2017
21:14:26
Т.е. при любом фейле (а они будут постоянно в виду особенности уровня изоляции) - вздрочнуть ещё раз? ну вариант да.

как минимум репитабл рид
а в этом селект фор аплейт - куда ты от него денешься?

Алексей
17.01.2017
21:15:06
да при чем тут селект фор апдейт.

Phil
17.01.2017
21:15:16
а как ?

Алексей
17.01.2017
21:15:24
селект форапдейт это псевдо трнзакция для простых вещей

Phil
17.01.2017
21:15:45
это псевдотранзакция для блокировки данных

Алексей
17.01.2017
21:15:51
да

которая является упрощением от нормальной трнзакции

Phil
17.01.2017
21:16:30
ну. у меня по задаче - толпа разношерстных данных в разных таблицах в разных рядах со сложным отношением друг к другу, которую надо заблокировать

Алексей
17.01.2017
21:16:37
ну

Google
Алексей
17.01.2017
21:16:59
бегин сделал. селект первый сделал, все данные в пределах трнзакции неизменны.

Phil
17.01.2017
21:17:03
ну мне не понравилось десятиэтажные селекты фор апдейты составлять

Алексей
17.01.2017
21:17:17
пока комимт или ролбек не сделаешь повтор чтения будет давать такие же результаты

селект форапдейты для простых случаев.

Phil
17.01.2017
21:18:18
мля

Алексей
17.01.2017
21:18:22
пофиг что тут про постгрес. в муське так же

Phil
17.01.2017
21:18:25
мы на разных языках?

Алексей
17.01.2017
21:18:25
https://www.youtube.com/watch?v=QU2PVSnBGEY&list=PLaFqU3KCWw6JgufXBiW4dEB2-tDpmOXPH&index=2

Phil
17.01.2017
21:18:35
как я не заблокирую данные-то?

мне нужно заблокировать всё, что я потом апдейтить буду. или кто-то туда писнет без меня

Алексей
17.01.2017
21:19:11
еще раз. не смотри что тут про постгрес говорят.

Phil
17.01.2017
21:19:22
да причем тут постгресс

Алексей
17.01.2017
21:19:22
в рамках транзакции никто ничего не пихнет

Phil
17.01.2017
21:19:36
в рамках нет. а за рамками да

Алексей
17.01.2017
21:19:51
а за рамками транзакции нет операций со счетом

Phil
17.01.2017
21:19:54
а у меня два десятка sum = sum +1

Алексей
17.01.2017
21:21:16
когда коммит проходит если строки были изменены которые менялись в транзакции комит непроходит

проходит ролбек

ладно баиньки

Google
Phil
17.01.2017
21:23:05
ну мне не нра

Alexey
17.01.2017
21:34:21
когда коммит проходит если строки были изменены которые менялись в транзакции комит непроходит
это называется однопоточный билинг, что имеет место быть, но и имеет свои геморы и весьма ощутимые

Roman
17.01.2017
21:39:26
У меня один вопрос: что будет если я из разных вкладок попытаюсь сменить тариф на разные тарифы

Phil
17.01.2017
21:44:54
У меня один вопрос: что будет если я из разных вкладок попытаюсь сменить тариф на разные тарифы
кстати, это у меня по сей день и в петерзосте до прошлого года превращало финансовые данные в фарш

но моя текущая система очень бедная и попасть между запросами надо было ещё умудриться :)))

но умудрялись

правда в ПХ теперь как в DO - мозг можно сломать пытаясь понять кто кому должен

Admin
ERROR: S client not available

Serge
17.01.2017
21:50:23
Резервирование средств должно ставить эксклюзивный лок. Чтобы оно проходило всегда консистентно

Alexey
17.01.2017
21:51:33
Фил, блин, в твоём примитивном билинге, нужна единственная таблица "очередь", с тем что надо списать/зачислить и один воркер её разгребающий, причём ни чего из неё не удаляющий, а только апдейтящий поля состояния задания. В чём гемор-то?

Serge
17.01.2017
21:52:48
А дальше, мы создаем операцию, которая в процессе - изменение тарифа. Двух параллельных изменений быть не может. Все из выполняем по очереди. А очередь ставим из чего во что мы хотим поменять. Если к началу операции "из чего" поменялось - откат.

Optimistic transactions

Phil
17.01.2017
21:53:26
Резервирование средств должно ставить эксклюзивный лок. Чтобы оно проходило всегда консистентно
да шут с ним с резервированием. это хорошая тема. но она чуть в стороне. смотри. есть сделки и деньги. сделка это наши финансовые отношения с клиентом. например заказ 555 с 01:00 по 12:00. есть услуги. это например контейнер C1 с такими-то характеристиками. вся суть бугурта - способ связать в одну бизнестранзакцию создание/изменение услуги C1 и вот той денежной части

Alexey
17.01.2017
21:56:46
Ну так заканчивает этот многогодовалый флуд и сделай уже все "свои предложения"

Phil
17.01.2017
21:56:53
Google
Alexey
17.01.2017
21:57:37
одна "очередь", зачем per customer? Задачи и так не пересекающиеся

Phil
17.01.2017
21:58:47
Ну так заканчивает этот многогодовалый флуд и сделай уже все "свои предложения"
так началось с того, что я спросил "есть чо" по поводу очередей :))))))) в pgsql есть в новейшей версии select ... skip locking for update limit 0,1

одна "очередь", зачем per customer? Задачи и так не пересекающиеся
а потому что тогда можно параллельно кастомеров обрабатывать. но в моём случае можно и просто последовательно конечно

Phil
17.01.2017
22:01:38
я так понимаю 9.6 ещё побаиваются

Vitaliy
17.01.2017
22:03:21
у меня 9.5, тысячи транзакций в секунду в пике , полёт нормальный

Phil
17.01.2017
22:06:09
да 9.5 уже в хвост и грву да

вон, тезка мне собственно подкинул идею с какой-то платежной системы как раз про очереди в pgsql

Ну так заканчивает этот многогодовалый флуд и сделай уже все "свои предложения"
ну кстати там начинает всплывать план счетов. то ли не ебстись и сделать двойную запись и подробный план. то ли простыню с флажками, чтобы не ебстись с двойной записью. так скажем форма представления плана счетов. я пока склоняюсь к венецианской двойной записи и подробному плану с субсчетами. причем без активно пассивных. машине вроде так проще будет

на языке Фила это select for update
на моём языке это тоже эксклюзивная блокировка. не заражайся говном от Сереги - дураков кроме него сюда не завезли. но мы там где-то уже про транзакции в базе говорили. а это ведь всегда SQL в данном типе задач. или есть мнение, что есть не реляционные базы под это (точнее есть какая-то нереляционная перспективная модель данных для биллинга? я с удовольствием почитаю) подходящие? или есть мнение, что есть какие-то не SQL реляционные базы, которые имеет смысл использовать?

Vitaliy
18.01.2017
07:02:58
есть NewSQL

Alexey
18.01.2017
07:15:16
есть NewSQL
The applications targeted by these NewSQL systems are characterized as having a large number of transactions that (1) are short-lived как раз то, что щорсу не надо...

Vitaliy
18.01.2017
07:16:21
длинные транзакции немного про другое, типа аналитики

Phil
18.01.2017
08:09:08
есть NewSQL
Ну они пока есть только в мечтах. Или экспериментах. Кстати спасибо. Не знал о таком

Vitaliy
18.01.2017
08:11:52
VoltDB — очень интерпрайзная штука

Phil
18.01.2017
08:12:27
длинные транзакции немного про другое, типа аналитики
Да не нужны мне длинные транзакции. Я не очень понимаю, чего вы не понимаете. Проблема в кодогенерации. Надо генерировать достаточно сложный запрос для эксклюзивной блокировки тех данных, которые меняем. Да, можно использовать какой-нибудь из объектов как абсолютный признак эксклюзивной блокировки - там лицевой счет, или вот резервированные деньги, как предлагал Сергей, но что-то меня смущает в этом. Поменяется где-то логика, а у меня вся консистентность завязана на конкретном объекте

Roman
18.01.2017
08:33:36
http://izvestia.ru/news/601535

любители шутить про гитлера в чятике?

Страница 903 из 1075