dastapov: (Default)
[personal profile] dastapov
(заказной пост для [livejournal.com profile] en_vision) Допустим, ваш оператор делает биллинг (готовит ежемесячные счета) в течении 5-10 дней? Почему так долго? Казалось бы, делов-то - "select sum(rated_amount) from rated_calls group by contract_id", и вперед - печатать счета. Давайте попробуем разобраться, где же порылась собака.

Допустим, у компании-оператора два миллиона абонентов, которым надо выставить счета. Каждый из этих абонентов за день в среднем совершает 10 тарифицируемых событий (исходящие звонки, SMS, ...) и еще столько же нетарифицируемых (входящие звонки, SMS, ...).

За месяц получаем: 2*10^6 * 20 * 30 = 12 * 10^8 (1 млрд 200 млн). Это количество записей, прошедших через rating.

Что делает процесс биллинга в простейшем случае? Для каждого из 2-х млн абонентов он смотрит, какие контракты принадлежат каждому абоненту, выбирает звонки, сделанные контрактами, суммирует их, добавляет все необходимые ежемесячные абонплаты, и начисляет сверху налоги. По окончании расчета полученные данные засовываются в красивую печатную форму (например, в виде PostScript).

Тут все желающие уже могут провести пару простых экспериментов. Например, взять любую базу данных, засунуть в нее миллиард-другой записей и попробовать выполнить select, вынесеный мной в первые строчки поста. Результаты отмасштабировать в предположении, что у оператора процессоры будут СуперМощные, а памяти будет Дофигищща.

Все? Нет, не все. Стрижка только начата. Это мы построили самый простой биллинг, практически - сферический биллинг в вакууме.

Давайте добавим в картину мира услуги, плата за которые зависит от месячной активности абонента. Например, "абонент платит за сервис фиксированную сумму в день, но только в дни, когда он пользовался этой услугой" или "сумма ежемесячной абонплаты зависит от кол-ва дней, в течении которых контракт был активен". Чтобы рассчитывать такие суммы, нам придется делать детальный анализ таблицы событий в разрезе дней. Допустим, что такие услуги популярны, и нам надо делать это для бОльшей части абонентской базы.[1]

Давайте также добавим в картину мира так популярные нынче "бесплатные" (или входящие в абонплату) минуты/SMS-ы/MMS-ы и т.п. В терминах нашей модели это означает, что для каждого контракта существует некое кол-во минут N, и определенные (не все) звонки суммарной продолжительностью не более N должны быть исключены из счета. Учтем, что, как правило, N бесплатных минут не будут исчерпаны при помощи целого числа звонков - будет какой-то звонок, который попадет "на границу" и его придется порезать на две части - платную и бесплатную. И это тоже делает биллинг.[2]

Давайте еще учтем смену тарифных моделей. Если у абонента была модель A (X_1 грн в месяц, Y_1 "бесплатных" минут) и он 20-го числа поменял ее на модель B (X_2 грн в месяц, Y_2 бесплатных минут), то с абонента надо снять X_1*(20/30) грн и дать ему Y_1*(20/30) минут в рамках модели А, а в рамках модели B снять X_2*(10/30) грн и дать ему Y_2*(10/30) минут - пропорционально времени, которое он провел в каждой тарифной модели. Да, попутно надо не забыть пересчитать все абонплаты, которые зависят от месячной активности.[3]

Как, все еще помещаемся в пару часов? Сомневаюсь.

Погодите, но кроме счетов для абонента есть еще бухгалтерия. Надо показать, какие звонки абонента "закрывают" те или иные его платежи. Другими словами, если абонент заплатил два раза по 100 грн, а наговорил на 200 грн, то биллинг должен для каждого звонка указать, к какому платежу он "отнесен" - к первому или второму. И так для всех звонков всех абонентов.[4]

Теперь посчитаем налоги и все цифры для налоговых накладных (это, правда, можно делать только для абонентов-юрлиц).

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

На реплики "так это ж можно распараллелить на 100 серверов!" я, наверное, реагировать не буду, уж извините :)

PS
Предваряя отдельный рассказ про Intelligent Network, NextGenerationOSS, конвергентные, hot, almost-hot и другие "быстрые" решения, хочу закинуть такую "удочку": в системе, которая Сразу после события подбивает достоверный и окончательный баланс абонента, и абонент не может уйти в минус, невозможна нормальная реализация услуг, описаных в пунктах [1],[2],[3],[4].

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

UPD: тем не менее, многие все-таки решили написать мне о том, как прекрасно параллелится биллинг и, в частности, как прекрасно разделяется для этого на части база данных. Коллеги! Я сам придерживаюсь мнения, что среди биллингописателей множество идиотов. Множество - но не все. Подумайте о том, почему такое, казалось бы, тривиальное решение не было реализовано на практике кем-то из major players. А еще подумайте о том, что биллинг - он раз в месяц, а все остальные 27 дней с этой базой и этой таблицей тоже что-то происходит. Причем очень активно происходит, практически без перерыва. И разделение базы на части для этих процессов .... ээээ ... ну, скажем, не самое лучшее решение.

(no subject)

Date: 2006-11-20 02:43 pm (UTC)
From: [identity profile] potan.livejournal.com
Да уж, коммунизм много вычислительных ресурсов съекономил бы :-).
Как человек, участвовавший в разработке биллинговой системы интернет-провайдера говорю.

(no subject)

Date: 2006-11-20 03:08 pm (UTC)
From: [identity profile] nealar.livejournal.com
Интересно, а при коммунизьме что должно быть _мерилом_всего_?
При капитализьме - развивать мобильную связь или летающие автомобили - решают деньги.

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-20 03:13 pm (UTC) - Expand

(no subject)

From: [identity profile] potan.livejournal.com - Date: 2006-11-20 03:36 pm (UTC) - Expand

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2006-11-20 11:36 pm (UTC) - Expand

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2006-11-20 11:47 pm (UTC) - Expand

(no subject)

Date: 2006-11-20 02:57 pm (UTC)
From: [identity profile] fenikso.livejournal.com
Ну вообще-то, учитывая что статистика одного абонента от статистики другого зависит очень слабо, это всё таки прекрасно распараллеливается. ;)

Так что (as for me), ключевой фактор в объяснении "отделу маркетинга .." непрерывно ".. хочется" - и невозможность заводить под каждый чих оптимизационные фишки. :)

(no subject)

Date: 2006-11-20 03:09 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Распараллеливая биллинг, надо думать вот о чем:
1)Ну, допустим мы распараллелили подсчет - что мы будем делать с базой?
2)Допустим, мы распараллелили базу (Oracle partitioning? или как? порежем базу на куски?). Что у нас получается с процессами, которые наполняют/модифицируют эту базу в течении месяца? :)

Доводим эту мысль до экстрима - каждый абонент в одтельной базе на отдельном компе :) Ведь нужна же будет центральная сущность, которая помнит, на каком компе хранится какой абонент, nest pas? :) И ведь этой сущности прийдется роутить через себя все запросы. И ведь такая организация хранения данных похерит производительность запросов вида "select sum(...) from all_contracts" ...

(no subject)

From: [identity profile] b00ter.livejournal.com - Date: 2006-11-20 03:21 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-20 10:09 pm (UTC) - Expand

(no subject)

From: [identity profile] b00ter.livejournal.com - Date: 2006-11-21 09:55 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 07:47 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 07:50 am (UTC) - Expand

(no subject)

From: [identity profile] fenikso.livejournal.com - Date: 2006-11-20 03:24 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-20 10:15 pm (UTC) - Expand

(no subject)

From: [identity profile] fenikso.livejournal.com - Date: 2006-11-20 10:55 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-20 11:14 pm (UTC) - Expand

(no subject)

From: [identity profile] ru-pchel.livejournal.com - Date: 2006-11-21 04:41 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 07:25 am (UTC) - Expand

(no subject)

From: [identity profile] fenikso.livejournal.com - Date: 2006-11-21 01:10 pm (UTC) - Expand

(no subject)

From: [identity profile] akhavr.livejournal.com - Date: 2006-11-24 05:58 am (UTC) - Expand

опечатался

From: [identity profile] fenikso.livejournal.com - Date: 2006-11-20 03:26 pm (UTC) - Expand

(no subject)

From: [identity profile] to-read-friends.livejournal.com - Date: 2006-11-20 03:35 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-20 10:16 pm (UTC) - Expand

(no subject)

From: [identity profile] dz.livejournal.com - Date: 2006-11-20 04:18 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-20 10:19 pm (UTC) - Expand

(no subject)

From: [identity profile] dz.livejournal.com - Date: 2006-11-20 11:15 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 01:41 pm (UTC) - Expand

(no subject)

From: [identity profile] dz.livejournal.com - Date: 2006-11-22 02:30 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 04:06 pm (UTC) - Expand

(no subject)

From: [personal profile] abbra - Date: 2006-11-20 04:28 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-20 10:19 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2006-11-20 06:21 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-20 10:20 pm (UTC) - Expand

(no subject)

From: [identity profile] von-rainman.livejournal.com - Date: 2006-11-21 07:39 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 07:32 am (UTC) - Expand

(no subject)

From: [identity profile] von-rainman.livejournal.com - Date: 2006-11-21 07:42 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 07:34 am (UTC) - Expand

(no subject)

Date: 2006-11-20 03:08 pm (UTC)
From: [identity profile] vgarnick.livejournal.com
Честно говоря, не вижу причин, почему в hot-billing'е нельзя реализовать [1],[2],[3]. Мало того, большинство этого успешно реализуется на pre-paid пакетах. Да, возможны некоторые другие виды тарификации, которые сложно реализовать в hot-billing'е. Но это не [1],[2],[3].

Про [4] вообще не совсем понятно - зачем точно вычислять, какие платежи что покрывают. А что если звонок покрывается одновоременно двумя или больше платежами? Обычно просто баланс по счету и все.

Я думаю, что проблемы в post-paid биллингах зачастую в том, что они были введены гораздо раньше pre-paid, и там все ограничения сложились исторически. Pre-paid появились гораздо позже, и скорее всего на других биллинговых платформах (думаю, что из-за этого также долгое время были ограничения по переносу номера с pre-paid на контракт). А мигрировать с одного биллинга на другой это геморройно и дорого.

(no subject)

Date: 2006-11-20 03:18 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Мало того, большинство этого успешно реализуется на pre-paid пакетах.

Успешно? Я не соглашусь. Если на SCP нельзя завести произвольное кол-во произвольных счетчиков, то делаются костылики. Типа, вместо 30 "пакетных" минут в месяц человеку дается 1 минута в день. Которая, каждый день, "покрывает" 1 минуту разговоров. Что есть слабое подобие левой руки. Аналогично делается pro-rating (пересчет абонплаты).

А часто ли на SCP можно заводить произвольные счетчики и связанные с ними правила? А нечасто. Вот если уже вместо пары SSP+SCP завести SoftSwitch - то там можно выгнуться как угодно. Но это (софт-свитч) - что-то новое, модное и дорогое. Не все на него апгрейдятся просто "за красивые глаза".

Про [4]. В бухгалтерии, как в армии, приказы не обсуждаются и здравый смысл отключается. Т.е. нет вопроса "зачем?". Есть ответ "так точно, будет сделано!" :)

Последний абзац - сущая правда.

(no subject)

From: [identity profile] vgarnick.livejournal.com - Date: 2006-11-20 03:26 pm (UTC) - Expand

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2006-11-20 03:29 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-20 10:24 pm (UTC) - Expand

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2006-11-20 03:27 pm (UTC) - Expand

(no subject)

From: [identity profile] von-rainman.livejournal.com - Date: 2006-11-20 04:27 pm (UTC) - Expand

(no subject)

Date: 2006-11-20 03:23 pm (UTC)
From: [identity profile] bugabuga.livejournal.com
В T-Mobile и Cingular лёгким движением руки делается up to the day минутосчитание (точнее реально он работает с точностью примерно до часа, и для припейд абонентов даётся баланс, для контрактников это актуально только после выхода за данные им несколько сотен минут) %) Ужасов с многомиллиардными селектами нет %) Просто в момент прохода записи (например отпинываемой по MQ главному серверу) во "временном балансе" звонившего номера делается +стоимость и всё :)
Разумеется по окончанию включенных в стоимость плана минут N минут стоит Х баксов, но изгалятельств с разной стоимостью из-за направления нет (анахронизм стоимости межгорода был изжит давно, международка стоит одинаково вне зависимости от состояния счёта) так что от перемены слагаемых число минут не изменится :)

(no subject)

Date: 2006-11-20 10:34 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
В T-Mobile и Cingular лёгким движением руки делается up to the day минутосчитание (точнее реально он работает с точностью примерно до часа

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

Возвращаемся к нам. Через четыре часа мы имеем хорошее представление текущем балансе, ровно как ты описываешь.

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

Но вот скажи мне - что скажет американец, который 30-го числа видел на балансе 51 бакс, а после биллинга там осталось 49 (пересчитали, получилось на 2 бакса дороже)? Скорее всего он не скажет ничего, т.к. 30-го числа свой баланс не проверял, а смотрит только в бумажный счет.

А что скажут у нас? Скажут - компания сперла два рубля. Однозначно.

Или, например, станет ли американец после совершения звонка выжидать ровно час (т.к. ему на форуме друганы сказали, что ровно столько работает биллинг), после чего проверять свой баланс, еще через пол-часа проверять его еще раз, и если он вдруг уменьшился - опять-таки говорить, что воруют деньги (пофиг, что там мог хот-рейтинг задержаться, например)? Мне слабо это видится. А у нас - повсеместно.

Доходит до смешного - на лицевом два контракта, муж и жена. Муж приходит ругаться, что воруют деньги - он специально все выходные(!) не говорил и регулярно проверял баланс(!), а деньги куда-то уходят. Первая версия оператора - это расходы на звонки жены. "Нет, я с ней говорил - она никуда не звонила". Делают распечатку. Там куча исходящих СМС от жены. Муж краснеет, бледнеет, уходит....

(no subject)

From: [identity profile] bugabuga.livejournal.com - Date: 2006-11-21 01:05 am (UTC) - Expand

(no subject)

From: [identity profile] von-rainman.livejournal.com - Date: 2006-11-21 07:46 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 07:21 am (UTC) - Expand

(no subject)

From: [identity profile] bugabuga.livejournal.com - Date: 2006-11-22 07:32 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 02:07 pm (UTC) - Expand

(no subject)

Date: 2006-11-20 03:32 pm (UTC)
From: [identity profile] ex-vpol.livejournal.com
Биллинг - жопа. Телефонный биллинг - жопа вдвойне. Я убеждаюсь в этом каждый день. Криво написаный - это вообще караул.

(no subject)

Date: 2006-11-20 10:38 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
А где ж он есть прямо написаный? :)

(no subject)

Date: 2006-11-20 04:20 pm (UTC)
From: [identity profile] von-rainman.livejournal.com
Подписываюсь под каждым словом и в посте, и в комментах адепта.

(no subject)

Date: 2006-11-20 10:38 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Вот! Хоть одна родственная душа меня поняла :)

(no subject)

From: [identity profile] von-rainman.livejournal.com - Date: 2006-11-21 07:47 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 07:42 am (UTC) - Expand

(no subject)

From: [identity profile] von-rainman.livejournal.com - Date: 2006-11-22 08:08 am (UTC) - Expand

(no subject)

Date: 2006-11-20 04:22 pm (UTC)
From: [identity profile] von-rainman.livejournal.com
Либо будет и [1], и [2], и [3], и [4] и т.д. - но с точностью "+/- два лаптя по карте". А в конце месяца это всё равно будет повторно подбиваться.

(no subject)

Date: 2006-11-20 10:39 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
На практике почему-то обычно получается "+/- два лаптя по карте", т.к. если хранить всю историю событий и пересчитывать раз в месяц - то это очень быстро получается postpaid со всеми его "прелестям" и тормозами.

(no subject)

From: [identity profile] von-rainman.livejournal.com - Date: 2006-11-21 07:50 am (UTC) - Expand

(no subject)

Date: 2006-11-20 11:42 pm (UTC)
From: [identity profile] rssh.livejournal.com
PS Похвастаюсь: [1][2][3][4] работает у одного действительно крупного broadband оператора в реальном времени (за небольшим исключением). В минус уйти можно, но ненамного [хотя математически точной верхней границы нет]. Правда при реализации и тьюнинге раз 5 казалось что полная жопа.

(no subject)

Date: 2006-11-22 07:17 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Что на это можно сказать?

Broadband модемы обладают сразу несколькими полезными (с точки зрения биллинга) свойствами:
1)Они не переключаются сами по себе между access server-ами провайдера
2)Они не ездят в роуминг. Они вообще не ездят
3)Тарифицируется транспортный уровень, а не application.

А теперь представь, что у пользователя broadband модем - в телефоне :)
И тарифицировать надо не ip-пакеты, а ICQ сообщения - отдельно, Skype calls - отдельно, фалый по ftp - отдельно, по http - отдельно, причем картинки по http - совсем отдельно.

И с учетом [1][2][3][4] :)

(no subject)

From: [identity profile] rssh.livejournal.com - Date: 2006-11-22 10:02 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 02:06 pm (UTC) - Expand

(no subject)

From: [identity profile] rssh.livejournal.com - Date: 2006-11-22 03:44 pm (UTC) - Expand

Цитата в тему

Date: 2006-11-21 12:02 am (UTC)
From: [identity profile] nealar.livejournal.com
http://bash.org.ru/quote.php?num=60455
LJ: r00fless
Тем, кто шарит, думаю, не надо объяснять связь между словами "биллинг", "упасть" и "анальный секс"

(no subject)

Date: 2006-11-21 04:45 am (UTC)
From: [identity profile] selfmade.livejournal.com
Наверняка можно написать систему оптимизированную до определённого уровня. Я не спец в биллинге, так что если бы взялся писать, то первым делом провёл бы анализ предметной области на вычислительную сложность. Типа, сколько событий в месяц, каково их распределение, каковы планы оплаты и т.д. Потом предложил бы набор алгоритмов и варианты распараллелливания.

Отвлечённое - где нагрузка на систему выше - в биллинге или в в трейдинге?

(no subject)

Date: 2006-11-21 07:52 am (UTC)
From: [identity profile] von-rainman.livejournal.com
Ага. Посчитали, определили алгоритмы, реализовали... А потом хренакс! - и приходит главный маркетолог и предлагает закинуть левую ногу за правое ухо и реализовать очередную нивроткасмическую систему скидок и бонусов. Вариант "послать нах" - не принимается :)

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-22 07:29 am (UTC) - Expand

(no subject)

Date: 2006-11-21 07:05 am (UTC)
kastaneda: (Default)
From: [personal profile] kastaneda
Вот оно как... Я знал: всё зло от маркетологов :)

Если серьёзно - то всякие хитрозакрученные тарифные планы с левой резьбой, с громадными заголовками и сносками мелким шрифтом лично у меня вызывают ощущение, что в чём-то меня дурят. Раз всё так сложно - значит, в этом тарифном плане платить надо за чёрт знает что, а не за осязаемые сервисы.

(no subject)

Date: 2006-11-22 07:31 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
... лично у меня вызывают ощущение, что в чём-то меня дурят.

Прикольно то, что в 80% случаев "задурить голову абоненту" - это "неожиданное" следствие внедрения нового тарифного плана, а не цель :)

Допустим, цель была "выпустить на рынок что-то новенькое", но в процессе придумывания этого новенького за деревьями не заметили леса и придумали ТАКОЕ ...

(no subject)

Date: 2006-11-21 01:35 pm (UTC)
From: [identity profile] tarantul.livejournal.com
Меня вот интересует вот какой вопрос. А как этот мегамоск под названием "процесс биллинга" программируется под необходимую логику?
Допустим пришел манагер, и сказал что надо тариф такой-то вот с такой-то логикой (дальше обычно идет что-то, что нормальному человеку в голову ни за что не придет). И что в этом случае делают люди саппортящие биллинг? Не переписывают же кусок кода для реализации этой "мечты идиота"?

(no subject)

Date: 2006-11-24 09:37 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
А как этот мегамоск под названием "процесс биллинга" программируется под необходимую логику?

Возможно, про это будет отдельный пост

(no subject)

Date: 2006-11-21 02:59 pm (UTC)
From: [identity profile] en-vision.livejournal.com
Спасибо! Да, идеи по оптимизации появляются (напр. часть рассчетов производить сразу после добавления записи в рейтинг), но не факт, что так не сделано, написать сложнее (=потенциальных ошибок больше), да и смысла особого в этом не вижу.

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

(no subject)

Date: 2006-11-22 07:57 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Рейтинг сразу обновляет "текущий баланс" абонента, другое дело, что до биллинга это значение - не более чем хорошее приближение.

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

Очень расплывчато. Детализируй.

(no subject)

Date: 2006-11-23 07:33 pm (UTC)
From: (Anonymous)
Наверное, я скажу какую-то глупость, но в комментариях и в после обьяснения не нашел: у меня московский билайн, prepeaid. В любой момент я могу сделать запрос баланса и посмотреть, сколько денег на счету. Если сделать запрос сразу после звонка или отправки smsки - видноЭ, что списали стоимость согласно тарифному плану.

Если счет пополнить, скажем, платежом через Webmoney или карточкой, баланс обновляется сразу же. При переходе баланся ниже какой-то суммы (ниже 10$, 3$), приходит соответтсвующая SMS от оператора.

Сколько всяких извратов и наворотов у Билайна в плане тарифных планов, маркетинговых акций и прочего, обьяснять, думаю, не надо. Получается, биллинг, который считает все в реальном времени, сделать можно. Вопрос - что я не так понял?

(no subject)

Date: 2006-11-24 02:12 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Сколько всяких извратов и наворотов у Билайна в плане тарифных планов, маркетинговых акций и прочего, обьяснять, думаю, не надо. Получается, биллинг, который считает все в реальном времени, сделать можно. Вопрос - что я не так понял?

Надо, надо объяснять. На какой из тарифов на http://www.msk.beeline.ru/tarifs/tarif.wbp смотреть?

Едем дальше.

Во-первых различаем rating (процесс определения стоимости) и billing (процесс формирования ежемесячного счета). Вполне может быть решение, в котором realtime rating, а биллинга нет вообще, или же realtime rating, а биллинг идет 4 дня (я подозреваю, что именно это имеет место у билайна)

Потом, я ж не говорил, что вообще ни за что и никогда нельзя сделать realtime rating. Вот тут (http://users.livejournal.com/_adept_/45400.html) описано, как устроен realtime rating для IN-based prepaid-а. Возможно, именно такое решение использует Beeline.

Теперь посмотрим, что же (как я утверждал) нельзя сделать при realtime rating-е.

Realtime rating подразумевает, что стоимость события известна непосредственно после его завершения (или еще в процессе). Соответственно (мне казалось, что этот перехо очевиден) непонятно, что делать с событиями, стоимость которых неизвестна.

Например, если в тарифах написано "звонки - 10 коп/минута, если наговорили больше часа в день - то 8 коп/минута", то сразу после совершения звонка известна только приблизительная стоимость, а окончательная может быть рассчитана только по истечении суток. Теперь заменяем "день" на "месяц". Что у нас там получается с realtime rating-ом? Правильно - ничего не получается. Прийдется пересчитывать стоимость и корректировать баланс по истичении месячного периода.

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

Что и требовалось доказать - быстрый рейтинг возможен, но ограничивает полет мысли сотрудников отдела маркетинга :)

(no subject)

From: (Anonymous) - Date: 2006-11-24 03:00 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2006-11-26 03:28 pm (UTC) - Expand

(no subject)

From: [identity profile] hgll.livejournal.com - Date: 2008-01-11 04:09 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2008-01-11 06:46 pm (UTC) - Expand

(no subject)

From: [identity profile] hgll.livejournal.com - Date: 2008-01-11 08:19 pm (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2008-07-18 09:14 am (UTC) - Expand

(no subject)

Date: 2006-11-24 09:58 am (UTC)
From: [identity profile] man-of-motley.livejournal.com
а причем здесь реплики. вообще-то есть такое понятие как data warehousing, когда OLAP и reporting (по сути которым является billing) тупо разносятся. а синк OLAP и WH можно вести тогда, когда нагрузка на OLAP ниже.
иначе как работают операторы у которых _десятки миллинов_ абонентов? :)

(no subject)

Date: 2006-11-24 01:56 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
На практике, ETL в OLAP приходится вести тогда, когда нагрузка на биллинговую систему меньше :)

Модели данных в биллинге и WH обычно сильно различаются, и запросы по выгрузке всего/формировании дельты для WH обычно нехило грузят базу биллинга. Для этого иногда даже приходится делать standby-копию базы биллинга, и делать выгрузки в OLAP из нее.
From: (Anonymous)
Спасибо за обзор, интересно было прочитать. Появились некоторые вопросы по теме. Представим ситуацию, когда есть определенные тарифные планы по основной услуге (н-р, подсчет интернет-трафика или еще чего-то), в которых учитываются различные параметры (время получения услуги, абонплата итд). Все это хранится в одной таблице Тарифы с полями Идентификатор тарифа, Абонплата, Цена единицы потребленной услуги днем, Цена единицы потребленной услуги ночью...
Затем появляется новая услуга, н-р, IPTV или игровые сервера. Для пользования ими есть несколько тарифов со своими параметрами (н-р, первый тариф-абонплата за доступ к просмотру видео или второй тариф-без абонплаты, но n руб за час просмотра).
Вопрос, как это реализовать в БД. Дополнить существующую таблицу тарифов данными об доп. услугах или создать новую таблицу для них? В первом случае не известно, что ставить для уже подключенных клиентов в поля для доп тарифов и число их увеличится в геометрической прогрессии. Во втором случае придется немного менять логику работы программ рейтинга.
Вопрос, как это правильно реализовать и предусмотреть возможность появления новых услуг.
From: [identity profile] http://users.livejournal.com/_adept_/
Нарисовать сложную ER-модель вида "Тарифный план состоит из тарифных пакетов. Тарифный пакет - это стоимость услуги в данном тарифном плане или ссылка на тарифный пакет для услуги по умолчанию. Тарифный пакет состоит из тарифов на события и тарифов на звонки (если это применимо к услуге). Тарифы на звонки - это таблица стоимости звонков на направления. Направление - это группа номеров, описываемая так-то". Потом планируется схема базы, в которой это все может жить, и административный гуй, через который этим можно рулить. Периодически все это добро надо рефакторить, но редко кто это делает.

Вот, где-то так.

(no subject)

Date: 2007-01-20 05:50 pm (UTC)
From: [identity profile] chantage.livejournal.com
"тем не менее, многие все-таки решили написать мне о том, как прекрасно параллелится биллинг и, в частности, как прекрасно разделяется для этого на части база данных"

Во-первых, он таки параллелится :) (несколько BCH, multiple bill cycles)

Во-вторых, это никому не надо :) Потому как "во-первых" номальным операторам хватает за глаза. Есть пара ислючений вроде Украины и России, где это не работает :(

(no subject)

Date: 2007-01-22 09:07 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Ну, если мы уже ударились в специфику, то насколько мне помнится, N BCH x 1 billcycle не спасают (путаются друг у друга под ногами), а N разнесенных по календарю bill cycles не позволяет сделать законодательство. А не разнесенные по календарю биллинговые циклы никому нафиг не нужны, т.к. получаются те же уши, только в профиль. Так? :)

С "во-вторых" - согласен на 100%.

(no subject)

Date: 2007-02-27 02:33 am (UTC)
From: [identity profile] justbulat.livejournal.com
имхо с алгоритмиеской точки зрения это попытка решить на одной структуре данных две разные задачи. если б для вас действительно важно было биллинг за два часа сделать, то вы бы могли просто по окончании месяца разлить данные по десятку серверов и на каждом из них быстренько отбработать. но оно вам больно нужно?

(no subject)

Date: 2007-03-01 07:40 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Вот-вот. Особенно учитывая то, что время разлития может составлять сутки (вспоминаем сложность структур и объем данных).

(no subject)

From: [identity profile] justbulat.livejournal.com - Date: 2007-03-01 10:06 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2007-03-01 09:33 pm (UTC) - Expand

(no subject)

From: [identity profile] justbulat.livejournal.com - Date: 2007-03-02 09:16 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2007-03-20 09:58 pm (UTC) - Expand

(no subject)

Date: 2012-02-12 11:27 am (UTC)
From: [identity profile] ryzhij-papa.livejournal.com
Хе... У больших операторов проблема не столько с биллингом, сколько с производительностью принтеров. У одного из операторов большой тройки, в МСК, аккурат на 2006 год, счета печатались в 3-4 раза дольше, чем генерились.

Profile

dastapov: (Default)
Dmitry Astapov

May 2022

M T W T F S S
       1
2345678
9101112131415
161718 19202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags