powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / Архитектуры высокопроизводительных биллингов
25 сообщений из 51, страница 2 из 3
Архитектуры высокопроизводительных биллингов
    #32630598
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 777og:
Привет!
777og
Где можно можно почитать об архитектурах построения высокопроизводительных биллингов для операторов связи?

Думаю врядли найдети что-то стоющее.
Либо это будет системы >1M-10M$, либо "что-то еще".
Ладно, это так.
Поискать можно, скорее нужно, чтоб посмотреть "как у других".
Смотрите case studies, кто-что использовал и что им это дало и за сколько :-)

Тепер по порядку.
1) Тут уже было сказано, что лучьше логи хранить на отдельном серваке.
Абсолютно согласен. Это нетолько разгрузит основной сервер базы данных, но позволит Вам в дальнейшем организовать archive-сервера...
2) По самой бизнес-логике:
777og
Вся бизнес-логика реализована в виде хранимых процедур

Для того чтоб проверить
777og
запрос пользователя на вход в сеть. Тут мы проверяем числится ли вообще у нас такой пользователь, есть ли у него деньги на счету, откуда он заходит (из нашей сети или пользуется роумингом), можно ли ему заходить в данный момент времени, предоставлять ему callback и т.д. и т.п. В конечном итоге мы принимаем решение пускать его или нет,

Нет необходимости вызывать sp. Здесь должено быть просто, на столько, на сколько это возможно. Типа 1 SELECT => знаем: можно или нет.
Так как правило, много "левых" запросов, а их нужно очень быстро отбивать.

777og
, плюс переводим его деньги во время, которое он может находиться в сети.
Это дорогостоющая операция.
Кроме как memory cache на accounting server'e (radius -> acc.server <- db )
Вам не даст ощутимый прирост производительности. Конечно, тут придеться позаботиться о синхронизации memory <- db...
Можно еще смотреть в сторону полной денормализации тарифов, чтоб легче по ним было искать и считать, но это частный случай и не факт, что он даст выигрыш.

777og
Accounting-Request-Stop - свидетельствует об окончании сессии. При этом мы получаем реальную длительность сессии, пересчитываем время в деньги, обновляем баланс пользователя и т.п. Это самая тяжёлая операция, весит 5-6 баллов.

Аналогия c деньги -> время.
Плюс, можно еще по думать о messaging server'e (a-ля WebSphere MQ или другое). Это может стать гарантом, что у Вас будет определенный performance на подсчет (типа 50 request/second), а также невызовет overflow всей системы.
Просто radius "отдаст" информацию в очередь messasing server'у, а уже другая прога по своей возможности будет "брать и считать" и разблокирует клиента.

Вообщем, "место для разгона" есть, только конечно многое зависит от людских и технических ресурсов, времени и т.д.

Но начинать, imho, надо с простых вещей.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32632079
c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEMA { http://www.boardwatch.com/document.asp?doc_id=37521 }

Rating ~ 6 [ max 10]

Use ~2500 concurrent transactions : 4 500 000 clients 3D rateplan tree


Basic:: Oracle 8i
Antenne :: Oracle 9i & Sybase



Ещё мне подсказали, что 9-ый и 10-ый ораклы умеют перекомпилировать пакеты в нативный код, это ещё может дать какое-то ускорение.
WELL!!

Можно еще смотреть в сторону полной денормализации тарифов, чтоб легче по ним было искать и считать, но это частный случай и не факт , что он даст выигрыш
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32632767
Wireless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 777og:
1. Какая реальная нагрузка на ваш сервер - сколько запросов на авторизацию/минуту,
сколько accounting-запросов/минуту ?
2. Можете дать краткие характеристики самых тяжелых таблиц, к которым обращаются ваши SP в момент авторизации? Информация вида - размер на диске, число записей, число индексов, наличие триггеров и пр.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32633283
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wireless2 777og:
1. Какая реальная нагрузка на ваш сервер - сколько запросов на авторизацию/минуту,
сколько accounting-запросов/минуту ?
2. Можете дать краткие характеристики самых тяжелых таблиц, к которым обращаются ваши SP в момент авторизации? Информация вида - размер на диске, число записей, число индексов, наличие триггеров и пр.


1. Померял за 30минут: получается около 20авторизаций/минуту и 34 акаунтингов/минуту (без разбивки на старт/стоп). Но это не показательная статистика, т.к. народ сейчас действительно вяло работает - отпуска, каникулы и т.п. Сервер сейчас загружен где-то только наполовину.

2. Из больших таблиц в аторизации учавствуют SessionLog (~600тыс. записей) - в основном выборка/обновление/вставка, user_totals (~160тыс.) - в основном выборка/обновление, таблица юзеров (~30тыс.) - в основном выборка. Деталей по поводу размера на диске, триггеров и индексов, честно говоря, не знаю. Выяснение деталей у нашего DBA имеет свои м-м-м, скажем так, свои сложности.

Даже глядя на эти цифры (пускай даже если их и умножить на 3) видно, что объёмы не очень серьёзные. И реального прироста производительности можно добиться, как правильно заметил Aion простыми вещами типа грамотной организации данных, индексов и т.п. Осталось в этом убедить нашего DBA :-)
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32634386
Maksim Chak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777og Деталей по поводу размера на диске, триггеров и индексов, честно говоря, не знаю. Выяснение деталей у нашего DBA имеет свои м-м-м, скажем так, свои сложности.

Даже глядя на эти цифры (пускай даже если их и умножить на 3) видно, что объёмы не очень серьёзные. И реального прироста производительности можно добиться, как правильно заметил Aion простыми вещами типа грамотной организации данных, индексов и т.п. Осталось в этом убедить нашего DBA :-)

Грм.. Объем действительно не слишком велик.. Оптимизация запросов если и не спасет отца русской демократии, то сильно ему поможет :-)
А вот то, что Вашего DBA надо в этом убеждать.. Это очень плохо.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32634436
Ekuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем..
Тут в форума прошла реплика, что МТС на начальном уровне ставит "тяжелое" железо. Я думаю, это из-за того, что они ставят ПО от CBOSS, а оно у них действительно "тяжелое" из-за сильной денормализации... В качестве советов для Оракла, я еще не встретил тут высказаваний по поводу применения partition table. Это ведь тоже может дать определенный выигрыш при правильной стратегии ее построения..
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32634616
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

2 777og
Те данные, которые Вы тут привели (характуристики системы, железо и т.д.), наводит (точнее доводит) мои мысли до следующего:
- та техника, что у Вас имееться должна справляться с поставлеными задачами
- большие проблемы не толко в организации данных но и в их обработки

конечно, я могу и ошибаться... :-)
А вообщето неплохо бы посчитать стоимость одной единицы.
Т.е. сделать некий простой тест, который Вам даст результаты (сурогатные) типа: мах производительность, сколько нужно времени для обработки одной единицы (если с системой никто неработает, работают 10/100/1000 пользователей).
Это еще может Вам дать аргумент для админа, типа: "Вот видишь, наш Oracle обрабатывает 1 request в секунду!!! Если в системе будут 100 пользователей, то 100-й пользователь будет ждать антификации 40 секунд!!!!" :-))))

2 Ekuku
partition table - это да, действительно может помочь, тот же SessionLog хранить в сегментах разделеные по месяцам (или как там это правильно в Oracle называеться)

В вот по поводу MTC, думаю здесь больше вопрос в том что, система начинает себя оправдывать при 500 000 calls per day(как пример). Ну или типа того.
Это как: "Если хотите одновреммено возить 1 т или 15 т апельсинов на одной машине, то нужно Вам именно фура, а не микробас" :-)
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32634934
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AionВсем привет.

2 777og
Те данные, которые Вы тут привели (характуристики системы, железо и т.д.), наводит (точнее доводит) мои мысли до следующего:
- та техника, что у Вас имееться должна справляться с поставлеными задачами
- большие проблемы не толко в организации данных но и в их обработки


Согласен. Будем исправлять.

Aion
А вообщето неплохо бы посчитать стоимость одной единицы.
Т.е. сделать некий простой тест, который Вам даст результаты (сурогатные) типа: мах производительность, сколько нужно времени для обработки одной единицы (если с системой никто неработает, работают 10/100/1000 пользователей).
Это еще может Вам дать аргумент для админа, типа: "Вот видишь, наш Oracle обрабатывает 1 request в секунду!!! Если в системе будут 100 пользователей, то 100-й пользователь будет ждать антификации 40 секунд!!!!" :-))))


Вот по этому поводу я и думал. Хочется вокруг нашего биллинга построит систему мониторинга, отображающую качество обработки поступающих запросов. Я имею в виду следующее:
скорость обработки одного запроса (Dt) - время между приходом пакета на интерфейс и уходом пакета с ответом на пришедший запрос. Можно получить Dt_auth, Dt_start, Dt_stop. Dt_auth имеет смысл разбить на Dt_accept и Dt_reject, т.к. Reject пакеты имеет смысл задерживать (увеличивать Dt_reject) намеренно для защиты от флуда пакетами н.п. с подбором пароля, а борьба за минимизацию Dt_accept для нас имеет очень важное значение :-) Аналогично с Dt_start и Dt_stop, они являются показателями качества алгоритмов обработки и настроек базы, с одной стороны, и позволяют правильно выбрать время для ретрансмита пакетов на серверах доступа с другой стороны.

количество поступивших на обработку пакетов (N_access, N_start, N_stop) - с этип понятно.

некую относительную характеристику (dt_accept, dt_start, dt_stop) - аналогичную первой, но учитывающую количество поступивших запросов.

Имеется в виду следующее: если к нам поступает 3 пакета в течение 3 минут (DT = 3 мин) с интервалом в 20 секунд, то даже на самом хилом железе и на криво настроенной базе мы их сможем обработать с Dt_accept = 1сек. Если к нам за DT=3мин приходит 30 пакетов, то мы их можем обработать скажем за Dt_accept = 1,5сек, в случае 300 пакетов Dt_accept = 5сек. Поскольку DT=const, хилость_железа=const, то полученные Dt_accept(300) - Dt_accept(3) = 5 - 1 = 4 сек являются показателем неадаптированости алгоритмов обработки и настроек базы к данной нагрузке (чего нам собственно говоря и хочется узнать). Смотреть на график Dt_auth(t) и совмещать его с N_auth(t) неудобно, поэтому хочется относительную характеристику dt_accept(t) и аналогичные ей. Только я не могу придумать как её определить.


количество необработанных запросов (N_access_dropped, N_start_dropped, N_stop_dropped) - количество тех пакетов, на которые сервер вообще не ответил.

По полученным данным можно потом ещё строить гистограммы/распределения вида:
- количество обработанных запросов N за определённый Dt. В идеале эти распределения должны иметь вид дельта-функций :-)
- Dt от количества запросов и т.п.

Может мне не стоит изобретать велосипед, и уже есть ряд ТТХ, характеризующих подобные системы? Где об этом можно почитать?

Мне это нужно для того, чтобы можно было определить эффективность тех или иных мероприятий по оптимизации биллинга и что бы можно было строить прогнозы на предмет того сколько ещё пользователей можно добавить без существенной потери в производительности и без апрейта железа.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32635837
Полуэкт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
радует сколько народа интересуется биллингами..

почитав всю бодягу могу сказать автору треда следующее - купите другой биллинг.

я в свое время написал и продал десяток биллингов под Вокалтек на сиквеле и оракле. оракл отрабатывал до 200 запросов в секунду (больше не могу сказать так как не было нагрузок выше) без видимых задержек. железо было - компак сервер 1.2 / 512 рам / скази диск зеркало. с твоей нагрузкой и железом все должно летать.. остальное - просто теория хорошая для форумов "оракл" и "сиквел".

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

на крайняк заплати умельцам пусть поставят что то ломанное типа майнда. я не рекомендую но другие ставят и вроде работает но у меня лично от майнда зубы болят.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32635931
Zh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777og

Снимите трейс со стопа/старта и много вопрос сразу отпадет (там наверное и про неразделенный loqsession будет написано :)
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32636398
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 777og

Рекомендовать что-то из "monitoring tools for billing solutions" не могу, так как сам толком ничего и ничитал из этого. Да и нужно ли это? Написать monitoring систему, которая умело то-и-все, это можно сказать сделать 2-ой биллинг :-)))

Если у Вас есть проблемы - решайте их. Если Вы проектируете систему - думайте о проблемах...

2 Полуэкт
Купить дело хорошее, но слабо я верю что "они" найдут то что нужно.
Почему-то у меня такое впечатления складываеться.
Либо это будет приемлемо по деньгам - но лажа по features,
либо это будет то что надо - но $$$ :-)

То что "они" мало знают что-есть-что - вопрос времени. Биллинг уже свой-то сделали :-)

А MIND дело хорошее, только вот если ломаный вариант почему-то перестанет работать - бизнес можно закрывать :-)))
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32659798
Полуэкт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не согласен. радиус-биллинг можно купить за штуку-две-три сегодня. при нынешних ценах на программистов даже в россии это уже не слишком большая цена для нормального бизнеса т.к. потери на биллинге могут составить эти же самые 2-3 штуки уже за месяц. я например написал биллинг свой именно потому что черные братья вставили меня на 900 баксов на том что последний звонок не завершался по истчении баланса и негритята быстро это скоцали и звонили на последнюю минуту по часу а потом терялись.

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

уверен что за тот год что я вышел из воип бизнеса уже есть и другие более приятные софты с возможностью поломать. есть несколько людей специализирующихся на ломании воип софтин включая биллинги. один из них из латвии кстати ;) Андриус. второй из .. не скажу откуда т.к. это мой кореш :) но сам к краку отношения иметь не хочу :)
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32659870
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777ogHi, All!


Где можно можно почитать об архитектурах построения высокопроизводительных биллингов для операторов связи?

Я работаю в ISP и являюсь одним из авторов нашего биллинга. По функциональности он нас устраивает, но есть проблемы с производительностью. Чувствую, что с ростом числа клиентов наш биллинг начнёт загибаться.


Сейчас это построено по следующей схеме:
есть сервер, собирающий данные о сессиях клиентов (RADIUS)

сервер БД (Oracle) хранит данные о сессиях клиентов, их счета и т.п.

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




Вы случайно не на Рязанке сидите? Где-то я уже про этот набор слышал...
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32659877
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777og Maksim Chak
С точки зрения архитектуры в свое время возобладала такая точко зрения: модуль авторизации должен жить отдельно, и иметь собственные сведенья об остатках на счетах, достаточные для расчета допустимого времени соединения с высокой точностью. Сам же билллинг должен жить отдельно, там должна проводится подробная тарификация, выписка счетов, поплнеие балансов и прочее..



Вобщем мы пока решили разделить SessionLog на две части - оперативную и "статическую". Оперативный SL будет неиндексируемым (т.к. в него будут частые инсерты и он будет небольшим), а статический проиндексируем (у него большой объём и из него производятся частые выборки, обновляться он будет редко). Может ещё выиграем что-нибудь за счёт тюнинга. Ещё мне подсказали, что 9-ый и 10-ый ораклы умеют перекомпилировать пакеты в нативный код, это ещё может дать какое-то ускорение.

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

Вот такие предварительные соображения. Ещё накачал статей с http://citeseer.ist.psu.edu может ещё из них удастся почерпнуть каких-нибудь идей.

Мой вам совет, отложить какие-либо дополнительные архитектурные решения до того момента, когда вы будете четко представлять в чем заключаются ваши текущие проблемы с производительностью. Поверьте, за семь лет я насмотрелся на таааакие кульбиты со стороны разработчиков в разных компаниях. В результате там, где нужно было сделать всего лишь точечные действия, строились такие небоскребы, которые в конечном счете из простой, стройной системы делали неповоротливых монстров. Через пару лет уже кто-либо вообще боялся трогать некоторые модули, поскольку разобраться зачем и для чего накручены разные навороты уже никто не мог.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32661399
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Полуэкт

Хм.
Сами говорите типа за 1-2 K можно купить, а пишите все-таки свое :-)

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

А по поводу MIND не MIND, это уже дело каждого кто-и-за-что использует.
:-)
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32705146
Алексей Буйницкий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Партицировать таблицу по дню, доступ будет быстрее в разы. Индексы тоже быстро будут обновляться.
2. Внимательно посмотреть все запросы. Всегда есть один запрос, который грузит сервак на 100% на полчаса, а после небольшой переделки он уже грузит на 25% и на 10-15 сек :)
3. Обработку, по крайней мере начальную, производить не на оракле, а в памяти. Написать простейшую прожку на плюсах, которая "держит" балансы абонентов и дает быстрые ответы "брать, на сколько/не брать".
4. Обновления и т.д. делать по rowid, запись искать, как Том Кайт завещал, по наличию в индексе, по окончанию обработки из индекса выкидывать (null значение соотв. полю)
5. В принципе тарифные планы и т.д. я бы тоже рекомендовал загрузить в прожку на плюсах, чтобы она делала маленький select записи, ее тарифицировало и делало пару маленьких update-ов
Вроде все, Удачи!
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32705149
Алексей Буйницкий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и еще...
Оракл разработчикам-таки учить надо, особенно разработчикам hot-биллингов.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32708522
Oracle XPert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, лучше не на плюсах, а создать JBean на PK ( сведения о клиенте
он держит в ОЗУ ).
Да, использование ODBC дает дополнительные тормоза, не забывайте.
Больше использовать об'екты. Вообще, не замедляйте работу БД Oracle стилем
запросов ( SQL92 ).
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32730094
DiHalt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внимательно посмотреть на:
1. materialized view on prebuilt partitioned table (для SessionLog) + materialized view log
2. TimesTen®/Cache – Real-Time Dynamic Data Caching System (TimesTen/Cache (Cache) includes in-memory database and data exchange technologies. Together, they enable applications to combine the real-time performance of TimesTen with the large storage capacity of an RDBMS (currently Oracle) www.timesten.com - очень сильная вещь.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32731398
Полуэкт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aion2 Полуэкт
Сами говорите типа за 1-2 K можно купить, а пишите все-таки свое :-)

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

а что делают современные биллинги? просто интересно. что считается последним писком моды? я когда уходил - народ остро нуждался в надстройках для реселлеров - что бы биллинг считал по трем тарифам - клиент, терминирующий партнер и реселлер (тот кто снимает копейку с клиента). а что нонче ценится?
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32749175
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну вопервых я написал его тогда когда был один Майнд на рынке и стоил он 350 штук (мне со скидкой для совка предлагали его за 200). так что выбора не было и поломать его тогда еще никто не догадался.

Понятно.


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

Считают они, что им больше делать ;-)
По "писком моды" - даже и незнаю что и сказать.
Все цениться, чем больше всего, тем лучше, типа: навороты в подсчетах, "куча мола" цифр (коэф.,тиков,пиков,тарифов,шагов...) , из который появляеться суммы :) ; интерфейс пользователя (репорты,графики) и т.д. и т.д.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32749420
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EkukuПривет всем..
Тут в форума прошла реплика, что МТС на начальном уровне ставит "тяжелое" железо. Я думаю, это из-за того, что они ставят ПО от CBOSS, а оно у них действительно "тяжелое" из-за сильной денормализации... В качестве советов для Оракла, я еще не встретил тут высказаваний по поводу применения partition table. Это ведь тоже может дать определенный выигрыш при правильной стратегии ее построения..

Чтобы это дало хороший результат, приложение должно быть изначально спроектировано с учетом partitioning'a.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32749453
Зл0й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разруха - в головах (С) Проф. Преображенский.

Если разработчик системы не может внятно сформулировать что и как происходит в БД и где именно возникают проблемы производительности, то мы имеем дело с проблемой не технического характера, а организационного. Разработчик биллинговой (или любой другой "тяжелой" по БД) системы должен прежде всего хорошо разбираться в "родной" СУБД. Особенно в случае если бизнес-логика реализована в виде хранимых процедур (правильное решение, кстати). Сначала писать приложение а потом его тюнить - нездоровый подход. Производительность должна быть с самого начала заложена в дизайн и протестирована на прототипе.

Проблемы с производительностью у данной конкретной системы могут быть по миллиону причин:
- неадекватность железяки задаче (не поможет никакая СУБД)
- неоптиальная логическая структура БД
- неоптиальная физическая структура БД
- неоптимально или бездумно спроектированные транзакции
- ...

Когда тюнингом занимаются DBA а резработчики не в курсе что конкретно делают DBA, мне лично все ясно. Это называется раздрай, и переход с Оракла на что-то другое не улучшит ситуацию. Ибо проблема - не в Оракле.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32749461
(0deHunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток
возможно я не очень подробно прочитал но я не увидел о каком типе билинга идет речь prepay (карточный) или repayment (по сроку)
у обоих типов принципиально разная логика и разные слабые места
поэтому их по разному нужно оптимизировать
в принципе общей проблемой для обоих типов являеться агрегирование входящей информации и обработка тарифных планов
для prepay требуеться оптимизация обработки тарифных планов и генератор скриптов соединения а для repayment агрегирование входящей информации
ну у меня есть такие рекомендации для repayment пишеться агрегирующий фильтр который подготавливает набор данных для инсерта в оперативную таблицу это приведет к тому что уменьшеться число инсертов да и количество входящих данных
затем данные агрегируясь переходят в ращетную таблицу где уже обрабатываються с учетом тарифных планов

а для prepay единственной пока рекомендацией есть такая рекомендация генератторы скриптов дозвона (соединения) выносяться во внешние процедуры с возможностью fork`а чтоувеличит число транзакций но даст возможность справиться с пиковой нагрузкой звонков

если что пинайте icq:117356538 может чем помогу
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32751520
Cobalt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QuarkБыл както у них на презентации, слышал подобное). Но как это реализовано - все в секрете).
Единственно что удалось внятного получить: для такого ускорения есть возможности писать данные напрямую в память обходя всякие "внутренние проверки" на соотвествие типов итп.
То есть вся отвественность ложится на программиста. Представьте что будет если вы запишите в область памяти где int переменную char. В лучшем случае ваш биллинг повиснет выкинув всех пользователей(
Нет, там не совсем так - есть один-единственный тип данных - строка.И "более сложная строка" - список (типа дин. массива.). Плюс многомерные разреженные массивы.
А ко всему этому - классовые обёртки - очень удобно.
Но для быстроты можно что-то (конечно, это надо толково вписать в архитектуру) можно сделать ручками.

Алексей Буйницкий3. Обработку, по крайней мере начальную, производить не на оракле, а в памяти. Написать простейшую прожку на плюсах, которая "держит" балансы абонентов и дает быстрые ответы "брать, на сколько/не брать".
4. Обновления и т.д. делать по rowid, запись искать, как Том Кайт завещал, по наличию в индексе, по окончанию обработки из индекса выкидывать (null значение соотв. полю)
5. В принципе тарифные планы и т.д. я бы тоже рекомендовал загрузить в прожку на плюсах, чтобы она делала маленький select записи, ее тарифицировало и делало пару маленьких update-ов
Вроде все, Удачи!
Такую-вот вещь можно сделать на встроенном языке Cache' - довольно-таки богатые возможности у него.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / Архитектуры высокопроизводительных биллингов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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