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

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

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

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

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

Тарификация может выполняться как при загрузке трафика, так и постфактум (раз в N-ое количество минут).
Что из себя должен представлять агрегатор? Например есть логи iptables-а (байты,ip источника,ip получателя), можно еще время записать. Чтобы биллинг был горячим надо снимать данные и списывать деньги хотя бы раз в 15 минут (лучше каждые 5). Если использовать поток netflow, то почти тоже самое. Данные надо все равно скидывать достаточно часто в тарификатор. Тарификатором на мой взгляд должна быть БД с процедурами расчета.
В приведенной вами схемой не описана связь между загружателем в БД и тарификатором. Вопрос был именно в этом. Есть загружаемые данные и их нужно тарифицировать, так почему же их не тарифицировать сразу при добавлении, то есть триггером. Если сначала добавлять,а потом тарифицировать, то загрузка ведь не будет меньше?
Интересует именно вопрос тарификации загружаемых данных.
...
Рейтинг: 0 / 0
Тарифы в биллинге
    #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]