powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение проводок, остаток на счету нужен на текущий момент
6 сообщений из 6, страница 1 из 1
Хранение проводок, остаток на счету нужен на текущий момент
    #34630658
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток.
Ситуация напоминает лицевой счет клиента в сотовой компании: платеж, потом поэтапное списание со счета за услуги. Но чаще платеж будет равен поступлению: т.е. клиент пополнил счет, тут же оплатит услугу. Нельзя уходить в минус, поэтому остаток на счете клиента необходимо получать в момент попытки платежа.
Ежедневных транзакций будет максимум 3000-5000. СУБД - MSDE. Задним числом платежи и списания проводиться не будут, скорость получения остатков на дату - не критична. Критична скорость получения остатка на текущий момент, т.к. если денег на счету не хватает - списание со счета не производится. Есть смысл при таких условиях разности по таблицам оборотку и остатки? За период вполне подойдет месяц.
Заранее большое спасибо!
...
Рейтинг: 0 / 0
Хранение проводок, остаток на счету нужен на текущий момент
    #34631032
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Можно обновлять запись-баланс в рамках каждой транзакции по лицевому счёту, но это может привести к высокой конкуренци за доступ к этой записи, но в тоже время сериализует доступ.

2. Можно вычислять баланс агрегируя отдельные записи начисления и оплаты, но это со временем может привести к заедлению расчёта баланса, когда данных накопиться очень много.

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

Последний вариант расчёта остатка включает в себя 1 и 2, отличается техническая реализация расчёта сёртки. В 1 случае её нужно включить в метод транзакции, в 3 это отдельный метод, выполняющийся в отдельном процессе
...
Рейтинг: 0 / 0
Хранение проводок, остаток на счету нужен на текущий момент
    #34631273
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab1. Можно обновлять запись-баланс в рамках каждой транзакции по лицевому счёту, но это может привести к высокой конкуренци за доступ к этой записи, но в тоже время сериализует доступ.


Дабы гарантировать неуход в минус потребукется защиттиться от одновременного проведения двух операций, то есть без блокировки не обойтись. В таком разе имеет смысл хранить текущие остатки по счетам - их обновлять легко и блокировать.
...
Рейтинг: 0 / 0
Хранение проводок, остаток на счету нужен на текущий момент
    #34632206
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyДабы гарантировать неуход в минус потребукется защиттиться от одновременного проведения двух операций, то есть без блокировки не обойтись. В таком разе имеет смысл хранить текущие остатки по счетам - их обновлять легко и блокировать.

Для неухода в минус нужно защититься от одновременного проведения двух и более расходных операций. Приходные операции могут проводиться одновременно.
...
Рейтинг: 0 / 0
Хранение проводок, остаток на счету нужен на текущий момент
    #34633276
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо за советы!
Остановлюсь на 3-м варианте: ежемесячно буду делать свертку, а оперативные остатки получать как свертку + изменения на текущую дату из оборотов.
Есть вопрос по созданию сальдо: надо заблокировать операции списания, но если и приход и расход будут находиться в одной таблице, то есть вариант только блокировать на уровне выполнения ХП (приход и расход поместить в разные ХП). Т.е. чтобы в любой момент времени могла выполняться не более одной копии процедуры списания денег со счета клиента. Ну и проверять еще не придумал как на таймаут выполнения процедуры. А есть еще какие-нибудь более удобные варианты?
Еще раз спасибо!
...
Рейтинг: 0 / 0
Хранение проводок, остаток на счету нужен на текущий момент
    #34652196
casmith
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_яЕсть вопрос по созданию сальдо: надо заблокировать операции списания, но если и приход и расход будут находиться в одной таблице, то есть вариант только блокировать на уровне выполнения ХП (приход и расход поместить в разные ХП). Т.е. чтобы в любой момент времени могла выполняться не более одной копии процедуры списания денег со счета клиента. Т.е. Вы хотите взять работу сервера на себя? :) Вернее, повторить тот механизм, что ребята из MS с таким старанием отлаживали долгие годы? :).
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение проводок, остаток на счету нужен на текущий момент
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]