Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тарифы в биллинге / 9 сообщений из 9, страница 1 из 1
23.09.2006, 11:35
    #34007666
postt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в биллинге
С помощью каких средств обычно вычисляются денежные списания в биллинге ethernet-провайдера?
Есть таблица логов iptables. Поля pkts,bytes,source,dest,timestamp (по две строчки на клиента, то есть вх и исх трафик). Добавляются раз в n минут. Есть таблица тарифов с временными скидками, с понижением цены в зависимости от суммарного трафика за месяц (сетка скидок). Деньги должны списываться в течении всего расчетного периода (возможно абонплата списывается по истечении это го периода или пропорционально). При завершении средств должна происходить блокировка.
Думаю реализовывать это с помощью триггеров на INSERT на таблицу с логами. При
добавлении новой строки запускать процедуру, которая будет считать списания за период с последнего обновления данных и делать UPDATE в таблице счетов, вычитая из поля баланс деньги. В правильном ли я направлении мыслю и если несложно поделитесь простыми примерами решения этой задачи. Или может есть, где прочитать об этом.

PS:PostgreSQL 8.1.4, Linux.
...
Рейтинг: 0 / 0
24.09.2006, 00:12
    #34008063
contr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в биллинге
posttДумаю реализовывать это с помощью триггеров на INSERT на таблицу с логами. При добавлении новой строки запускать процедуру, которая будет считать списания за период с последнего обновления данных и делать UPDATE в таблице счетов, вычитая из поля баланс деньги. В правильном ли я направлении мыслю и если несложно поделитесь простыми примерами решения этой задачи. Или может есть, где прочитать об этом.
К сожалению, не могу поделиться конкретными способами решения - тексты принадлежат работодателю.
Но предостеречь, думаю, могу: не получится. Вы просто не сможете грузить трафик с нужным рейтом, если на таблице будет висеть триггер.
Даже простой индекс может представлять проблему.
...
Рейтинг: 0 / 0
24.09.2006, 07:04
    #34008123
postt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в биллинге
contr posttДумаю реализовывать это с помощью триггеров на INSERT на таблицу с логами. При добавлении новой строки запускать процедуру, которая будет считать списания за период с последнего обновления данных и делать UPDATE в таблице счетов, вычитая из поля баланс деньги. В правильном ли я направлении мыслю и если несложно поделитесь простыми примерами решения этой задачи. Или может есть, где прочитать об этом.
К сожалению, не могу поделиться конкретными способами решения - тексты принадлежат работодателю.
Но предостеречь, думаю, могу: не получится. Вы просто не сможете грузить трафик с нужным рейтом, если на таблице будет висеть триггер.
Даже простой индекс может представлять проблему.
Спасибо за подсказку. В каком направлении смотреть тогда? Может тогда раз в какое-то время запускать процедуру или программу по cron-у, которая проверяет последние внесения в таблицу по дате и для еще не обработанных строк производит вычисления?
...
Рейтинг: 0 / 0
28.09.2006, 13:09
    #34018658
он же
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в биллинге
Примитивная схема:
читатель логов -> агрегатор -> загружатель в базу -> тарификатор

Более сложная включает в себя разные способы сбора сырого трафика (CDR, Radius, etc.), отсутствие агрегатора и быструю загрузку прямо в мозг БД (на Oracle и им подобных, поддерживающих direct load) и много всякой другой ерундистики.

Тарификация может выполняться как при загрузке трафика, так и постфактум (раз в N-ое количество минут).
...
Рейтинг: 0 / 0
28.09.2006, 13:11
    #34018669
он же
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в биллинге
А насчет триггера - уже было сказано, что идея крайне плохая.
...
Рейтинг: 0 / 0
28.09.2006, 13:15
    #34018687
он же
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в биллинге
А вообще - тема интересная.
С удовольствием написал бы свой маленький биллинг (применяя знания полученные на работе с большими системами).
Куда его только потом девать - бесплатно раздавать что-ли?
...
Рейтинг: 0 / 0
28.09.2006, 15:28
    #34019356
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в биллинге
он жеА вообще - тема интересная.
С удовольствием написал бы свой маленький биллинг (применяя знания полученные на работе с большими системами).
Куда его только потом девать - бесплатно раздавать что-ли?
open source billing и драть втридорога за поддержку? ;)
...
Рейтинг: 0 / 0
28.09.2006, 18:10
    #34020096
postt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в биллинге
он жеПримитивная схема:
читатель логов -> агрегатор -> загружатель в базу -> тарификатор

Более сложная включает в себя разные способы сбора сырого трафика (CDR, Radius, etc.), отсутствие агрегатора и быструю загрузку прямо в мозг БД (на Oracle и им подобных, поддерживающих direct load) и много всякой другой ерундистики.

Тарификация может выполняться как при загрузке трафика, так и постфактум (раз в N-ое количество минут).
Что из себя должен представлять агрегатор? Например есть логи iptables-а (байты,ip источника,ip получателя), можно еще время записать. Чтобы биллинг был горячим надо снимать данные и списывать деньги хотя бы раз в 15 минут (лучше каждые 5). Если использовать поток netflow, то почти тоже самое. Данные надо все равно скидывать достаточно часто в тарификатор. Тарификатором на мой взгляд должна быть БД с процедурами расчета.
В приведенной вами схемой не описана связь между загружателем в БД и тарификатором. Вопрос был именно в этом. Есть загружаемые данные и их нужно тарифицировать, так почему же их не тарифицировать сразу при добавлении, то есть триггером. Если сначала добавлять,а потом тарифицировать, то загрузка ведь не будет меньше?
Интересует именно вопрос тарификации загружаемых данных.
...
Рейтинг: 0 / 0
28.09.2006, 19:36
    #34020335
он же
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в биллинге
postt
Что из себя должен представлять агрегатор? Например есть логи iptables-а (байты,ip источника,ip получателя), можно еще время записать. Чтобы биллинг был горячим надо снимать данные и списывать деньги хотя бы раз в 15 минут (лучше каждые 5). Если использовать поток netflow, то почти тоже самое. Данные надо все равно скидывать достаточно часто в тарификатор. Тарификатором на мой взгляд должна быть БД с процедурами расчета.
В приведенной вами схемой не описана связь между загружателем в БД и тарификатором. Вопрос был именно в этом. Есть загружаемые данные и их нужно тарифицировать, так почему же их не тарифицировать сразу при добавлении, то есть триггером. Если сначала добавлять,а потом тарифицировать, то загрузка ведь не будет меньше?
Интересует именно вопрос тарификации загружаемых данных.

Агрегатор должен агрегировать трафик по портам, зонам, времени. Зависит от конкретного случая - какая информация для нас не актуальна. Допустим, если тарифицируем только _объем_ трафика _независимо от типа и зоны_ - можем выкинуть информацию по тому, на какой порт он приходил, на какой ip-адрес и когда (нам это абсолютно неважно для тарификации) и просто суммировать по всем портам за определенный промежуток времени - получаем реальное уменьшение входного потока в тарификатор.
Это лишь пример.

Тарификатором может быть приблуда написанная на C++ - совершенно не важно.

Важно лишь то, что данные должны загружаться максимально быстро.

И читать ты их должен максимально быстро, обрабатывая за раз как можно большее количество строк (в пределах разумного).

Если хочешь пользоваться триггерами - хорошо, ради бога. Кто же запрещает?
С PostgreSQL я не знаком, попробую рассказать в терминах Оракла.
Триггер должен быть не FOR EACH ROW. Триггер должен вызывать функции пакета, в котором будут закэшированны (тем или иным способом) тарифы.
Если ты уверен, что мощности и скорости встроенного языка в PostgreSQL хватит для такого делай - действуй.

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

Делиться вряд ли кто будет :)
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тарифы в биллинге / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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