Проверка базы данных в режиме реального времени для отправки команды - PullRequest
1 голос
/ 14 мая 2011

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

  • Пользователь инициирует звонок
  • Текущий баланс восстановлен
  • Рассчитывается стоимость телефонного звонка и определяется, сколько всего минут пользователь может приобрести
  • Время ожидания сеанса сохраняется в базе данных

Мне нужно опросить базу данных (каждую секунду?), Чтобы выяснить, равно ли время ожидания сеанса =

Любой совет по поводу опроса базы данных так часто, я в настоящее время использую MySQL, но я хочу изменить.

cron не будет бегать достаточно часто. Поскольку за каждую минуту мне будут выставлять счет, мне нужно убедиться, что время выполнения этого сценария точное.

Я смотрел на node.js, чтобы выполнить задачу, никогда не использовав нод - это подходит? Стоит ли использовать функцию публикации / подписки базы данных? (не может рисковать потерей данных, так как это может означать, что пользователь может продолжить разговор по телефону навсегда)

Любой совет приветствуется.

P.S. все будет на стороне сервера. Не будет внешнего интерфейса для запросов на запуск.

1 Ответ

1 голос
/ 14 мая 2011

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

В терминах БД представьте, что это работает с использованием прокси-таблицы, использующей механизм памяти, с периодическим началом / переименованием mem_table / созданием новой mem_table / commit, после чего следует начало / обновление static_table с использованием old_mem_table / drop old_mem_table / commit .

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

Что касается вашей проблемы (node.js), почему бы не использовать setInterval ()?

...