Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм ежемесячного снятия денег с аккаунта, Идеи по улучшению? 
:(
    Опции темы
Wowa
  Дата 19.1.2005, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Я разрабатываю биллинг систему и сейчас перешел к алгоритму ежемесячного снятия денег с аккаунта клиента.

Т.к. услуга могла быть заказана не только первого числа месяца, то деньги снимать через месяц надо не первого числа, а произвольного - именно того числа месяца, когда была заказана услуга.

Для этого через cron каждый день в 4 часа ночи запускается скрипт, которые ищет всех клиентов у которых дата следующего снятия денег(хранится в базе) меньше сегодняшнего числа.

После снятия денег - "дата следующего снятия денег" меняется на другую дату.

Таким образом в случае возникновения какой-нибудь ошибки(например, кто-то нажмет на Reset в момент работы программы) - на следующий день деньги будут все равно сняты, если вчера что-то не было обработано.

Но тут надо тогда наверное надо исходить при расчет суммы из того, что деньги все-таки "были сняты как-будто вчера".


Может у кого-то есть идеи по улучшению этого алгоритма?
PM WWW   Вверх
Akina
Дата 19.1.2005, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Для таких случаев и придуманы транзакции.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Wowa
Дата 19.1.2005, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Akina @ 19.1.2005, 13:15)
Для таких случаев и придуманы транзакции.

но тут транзакции я делаю ведь сам.
PM WWW   Вверх
Akina
Дата 19.1.2005, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Admin
Ну и делай... если ты собираешься изменить запись, то твои действия:

1) Проверить наличие временной таблицы. Если она есть, то
1а) Скопировать записи из временной таблицы в основную (при этом затираются имеющиеся в ней записи с тем же ID)
1б) Проверить что все записи скопированы правильно
1в) Удалить временную таблицу
2) Сделать выборку записей, которые подлежат изменению.
3) Скопировать их в отдельную временную таблицу.
4) Произвести изменения.
5) Проверить правильность внесенных изменений.
6) Удалить временную таблицу.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Wowa
Дата 19.1.2005, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Обязательна ли временная таблица?
PM WWW   Вверх
Akina
Дата 19.1.2005, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Admin
Для ручной организации транзакций - обязательно. Вместо создания-удаления таблицы можно в дополнительную таблицу добавлять-удалять копии изменяемых записей.

Даже на серьезных SQL-серверах транзакции организованы именно таким образом.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Wowa
Дата 19.1.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Akina @ 19.1.2005, 14:17)
Вместо создания-удаления таблицы можно в дополнительную таблицу добавлять-удалять копии изменяемых записей.

это для надежности? Для предотвращения одного из 1 000 000 возможности сбоя?
PM WWW   Вверх
Akina
Дата 19.1.2005, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Да.
Впрочем основное назначение таких таблиц - поддержание целостности при каскадных операциях и реализация триггерных операций.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.