|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
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, надо с простых вещей. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2004, 13:29 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
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!! Можно еще смотреть в сторону полной денормализации тарифов, чтоб легче по ним было искать и считать, но это частный случай и не факт , что он даст выигрыш ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2004, 18:46 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
2 777og: 1. Какая реальная нагрузка на ваш сервер - сколько запросов на авторизацию/минуту, сколько accounting-запросов/минуту ? 2. Можете дать краткие характеристики самых тяжелых таблиц, к которым обращаются ваши SP в момент авторизации? Информация вида - размер на диске, число записей, число индексов, наличие триггеров и пр. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2004, 11:34 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Wireless2 777og: 1. Какая реальная нагрузка на ваш сервер - сколько запросов на авторизацию/минуту, сколько accounting-запросов/минуту ? 2. Можете дать краткие характеристики самых тяжелых таблиц, к которым обращаются ваши SP в момент авторизации? Информация вида - размер на диске, число записей, число индексов, наличие триггеров и пр. 1. Померял за 30минут: получается около 20авторизаций/минуту и 34 акаунтингов/минуту (без разбивки на старт/стоп). Но это не показательная статистика, т.к. народ сейчас действительно вяло работает - отпуска, каникулы и т.п. Сервер сейчас загружен где-то только наполовину. 2. Из больших таблиц в аторизации учавствуют SessionLog (~600тыс. записей) - в основном выборка/обновление/вставка, user_totals (~160тыс.) - в основном выборка/обновление, таблица юзеров (~30тыс.) - в основном выборка. Деталей по поводу размера на диске, триггеров и индексов, честно говоря, не знаю. Выяснение деталей у нашего DBA имеет свои м-м-м, скажем так, свои сложности. Даже глядя на эти цифры (пускай даже если их и умножить на 3) видно, что объёмы не очень серьёзные. И реального прироста производительности можно добиться, как правильно заметил Aion простыми вещами типа грамотной организации данных, индексов и т.п. Осталось в этом убедить нашего DBA :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2004, 13:48 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
777og Деталей по поводу размера на диске, триггеров и индексов, честно говоря, не знаю. Выяснение деталей у нашего DBA имеет свои м-м-м, скажем так, свои сложности. Даже глядя на эти цифры (пускай даже если их и умножить на 3) видно, что объёмы не очень серьёзные. И реального прироста производительности можно добиться, как правильно заметил Aion простыми вещами типа грамотной организации данных, индексов и т.п. Осталось в этом убедить нашего DBA :-) Грм.. Объем действительно не слишком велик.. Оптимизация запросов если и не спасет отца русской демократии, то сильно ему поможет :-) А вот то, что Вашего DBA надо в этом убеждать.. Это очень плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2004, 10:07 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Привет всем.. Тут в форума прошла реплика, что МТС на начальном уровне ставит "тяжелое" железо. Я думаю, это из-за того, что они ставят ПО от CBOSS, а оно у них действительно "тяжелое" из-за сильной денормализации... В качестве советов для Оракла, я еще не встретил тут высказаваний по поводу применения partition table. Это ведь тоже может дать определенный выигрыш при правильной стратегии ее построения.. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2004, 10:26 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Всем привет. 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 т апельсинов на одной машине, то нужно Вам именно фура, а не микробас" :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2004, 11:23 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
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 от количества запросов и т.п. Может мне не стоит изобретать велосипед, и уже есть ряд ТТХ, характеризующих подобные системы? Где об этом можно почитать? Мне это нужно для того, чтобы можно было определить эффективность тех или иных мероприятий по оптимизации биллинга и что бы можно было строить прогнозы на предмет того сколько ещё пользователей можно добавить без существенной потери в производительности и без апрейта железа. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2004, 13:13 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
радует сколько народа интересуется биллингами.. почитав всю бодягу могу сказать автору треда следующее - купите другой биллинг. я в свое время написал и продал десяток биллингов под Вокалтек на сиквеле и оракле. оракл отрабатывал до 200 запросов в секунду (больше не могу сказать так как не было нагрузок выше) без видимых задержек. железо было - компак сервер 1.2 / 512 рам / скази диск зеркало. с твоей нагрузкой и железом все должно летать.. остальное - просто теория хорошая для форумов "оракл" и "сиквел". если ты не в курсе что сидиар есть то писать свой биллинг - предприятие безуспешное даже расчитывая на русские дешевые ресурсы. на крайняк заплати умельцам пусть поставят что то ломанное типа майнда. я не рекомендую но другие ставят и вроде работает но у меня лично от майнда зубы болят. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2004, 20:07 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
777og Снимите трейс со стопа/старта и много вопрос сразу отпадет (там наверное и про неразделенный loqsession будет написано :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2004, 22:30 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
2 777og Рекомендовать что-то из "monitoring tools for billing solutions" не могу, так как сам толком ничего и ничитал из этого. Да и нужно ли это? Написать monitoring систему, которая умело то-и-все, это можно сказать сделать 2-ой биллинг :-))) Если у Вас есть проблемы - решайте их. Если Вы проектируете систему - думайте о проблемах... 2 Полуэкт Купить дело хорошее, но слабо я верю что "они" найдут то что нужно. Почему-то у меня такое впечатления складываеться. Либо это будет приемлемо по деньгам - но лажа по features, либо это будет то что надо - но $$$ :-) То что "они" мало знают что-есть-что - вопрос времени. Биллинг уже свой-то сделали :-) А MIND дело хорошее, только вот если ломаный вариант почему-то перестанет работать - бизнес можно закрывать :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2004, 11:04 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
не согласен. радиус-биллинг можно купить за штуку-две-три сегодня. при нынешних ценах на программистов даже в россии это уже не слишком большая цена для нормального бизнеса т.к. потери на биллинге могут составить эти же самые 2-3 штуки уже за месяц. я например написал биллинг свой именно потому что черные братья вставили меня на 900 баксов на том что последний звонок не завершался по истчении баланса и негритята быстро это скоцали и звонили на последнюю минуту по часу а потом терялись. майнд даже если встанет что вполне вероятно то есть много вариантов. 1. найти того кто его продал и заставить поднять. 2. поставить другой биллинг и слить клиентов из майнда т.к. он на оракле и там в принципе ничего сложного нет выцепить юзеров и балансы. так что ничего катастрофического нет.. уверен что за тот год что я вышел из воип бизнеса уже есть и другие более приятные софты с возможностью поломать. есть несколько людей специализирующихся на ломании воип софтин включая биллинги. один из них из латвии кстати ;) Андриус. второй из .. не скажу откуда т.к. это мой кореш :) но сам к краку отношения иметь не хочу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2004, 19:02 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
777ogHi, All! Где можно можно почитать об архитектурах построения высокопроизводительных биллингов для операторов связи? Я работаю в ISP и являюсь одним из авторов нашего биллинга. По функциональности он нас устраивает, но есть проблемы с производительностью. Чувствую, что с ростом числа клиентов наш биллинг начнёт загибаться. Сейчас это построено по следующей схеме: есть сервер, собирающий данные о сессиях клиентов (RADIUS) сервер БД (Oracle) хранит данные о сессиях клиентов, их счета и т.п. рабочие места операторов, с которых заводятся/удаляются клиенты, производится рассылка счетов и т.п. Вы случайно не на Рязанке сидите? Где-то я уже про этот набор слышал... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2004, 20:20 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
777og Maksim Chak С точки зрения архитектуры в свое время возобладала такая точко зрения: модуль авторизации должен жить отдельно, и иметь собственные сведенья об остатках на счетах, достаточные для расчета допустимого времени соединения с высокой точностью. Сам же билллинг должен жить отдельно, там должна проводится подробная тарификация, выписка счетов, поплнеие балансов и прочее.. Вобщем мы пока решили разделить SessionLog на две части - оперативную и "статическую". Оперативный SL будет неиндексируемым (т.к. в него будут частые инсерты и он будет небольшим), а статический проиндексируем (у него большой объём и из него производятся частые выборки, обновляться он будет редко). Может ещё выиграем что-нибудь за счёт тюнинга. Ещё мне подсказали, что 9-ый и 10-ый ораклы умеют перекомпилировать пакеты в нативный код, это ещё может дать какое-то ускорение. Если высвободившихся ресурсов будет достаточно, то организуем репликацию на другую машину всех таблиц кроме "горячих" (с оперативными данными, таких должно быть немного. Данные из "горячиех" таблиц будут ночью (во время минимальной нагрузки) переноситься в статические таблицы. Репликация должна будет позволить перенести печать отчётов, счетов, выписок и т.п. на другую машину и тем самым ещё больше разгрузить основной (авторизующий) сервер. Вот такие предварительные соображения. Ещё накачал статей с http://citeseer.ist.psu.edu может ещё из них удастся почерпнуть каких-нибудь идей. Мой вам совет, отложить какие-либо дополнительные архитектурные решения до того момента, когда вы будете четко представлять в чем заключаются ваши текущие проблемы с производительностью. Поверьте, за семь лет я насмотрелся на таааакие кульбиты со стороны разработчиков в разных компаниях. В результате там, где нужно было сделать всего лишь точечные действия, строились такие небоскребы, которые в конечном счете из простой, стройной системы делали неповоротливых монстров. Через пару лет уже кто-либо вообще боялся трогать некоторые модули, поскольку разобраться зачем и для чего накручены разные навороты уже никто не мог. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2004, 20:34 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
2 Полуэкт Хм. Сами говорите типа за 1-2 K можно купить, а пишите все-таки свое :-) За это деньги, биллинг будет - г...о (извеняюсь за выражение) Хотя конечно, если кому-то в нынешнии времена нужно посчитать минутный тариф на длительность и все, то можно конечно и так. А по поводу MIND не MIND, это уже дело каждого кто-и-за-что использует. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2004, 15:25 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
1. Партицировать таблицу по дню, доступ будет быстрее в разы. Индексы тоже быстро будут обновляться. 2. Внимательно посмотреть все запросы. Всегда есть один запрос, который грузит сервак на 100% на полчаса, а после небольшой переделки он уже грузит на 25% и на 10-15 сек :) 3. Обработку, по крайней мере начальную, производить не на оракле, а в памяти. Написать простейшую прожку на плюсах, которая "держит" балансы абонентов и дает быстрые ответы "брать, на сколько/не брать". 4. Обновления и т.д. делать по rowid, запись искать, как Том Кайт завещал, по наличию в индексе, по окончанию обработки из индекса выкидывать (null значение соотв. полю) 5. В принципе тарифные планы и т.д. я бы тоже рекомендовал загрузить в прожку на плюсах, чтобы она делала маленький select записи, ее тарифицировало и делало пару маленьких update-ов Вроде все, Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2004, 19:10 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Да, и еще... Оракл разработчикам-таки учить надо, особенно разработчикам hot-биллингов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2004, 19:12 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
По-моему, лучше не на плюсах, а создать JBean на PK ( сведения о клиенте он держит в ОЗУ ). Да, использование ODBC дает дополнительные тормоза, не забывайте. Больше использовать об'екты. Вообще, не замедляйте работу БД Oracle стилем запросов ( SQL92 ). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2004, 14:22 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Внимательно посмотреть на: 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 - очень сильная вещь. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2004, 14:28 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Aion2 Полуэкт Сами говорите типа за 1-2 K можно купить, а пишите все-таки свое :-) За это деньги, биллинг будет - г...о (извеняюсь за выражение) Хотя конечно, если кому-то в нынешнии времена нужно посчитать минутный тариф на длительность и все, то можно конечно и так. ну вопервых я написал его тогда когда был один Майнд на рынке и стоил он 350 штук (мне со скидкой для совка предлагали его за 200). так что выбора не было и поломать его тогда еще никто не догадался. а что делают современные биллинги? просто интересно. что считается последним писком моды? я когда уходил - народ остро нуждался в надстройках для реселлеров - что бы биллинг считал по трем тарифам - клиент, терминирующий партнер и реселлер (тот кто снимает копейку с клиента). а что нонче ценится? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2004, 21:58 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
ну вопервых я написал его тогда когда был один Майнд на рынке и стоил он 350 штук (мне со скидкой для совка предлагали его за 200). так что выбора не было и поломать его тогда еще никто не догадался. Понятно. а что делают современные биллинги? просто интересно. что считается последним писком моды? я когда уходил - народ остро нуждался в надстройках для реселлеров - что бы биллинг считал по трем тарифам - клиент, терминирующий партнер и реселлер (тот кто снимает копейку с клиента). а что нонче ценится? Считают они, что им больше делать ;-) По "писком моды" - даже и незнаю что и сказать. Все цениться, чем больше всего, тем лучше, типа: навороты в подсчетах, "куча мола" цифр (коэф.,тиков,пиков,тарифов,шагов...) , из который появляеться суммы :) ; интерфейс пользователя (репорты,графики) и т.д. и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2004, 18:36 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
EkukuПривет всем.. Тут в форума прошла реплика, что МТС на начальном уровне ставит "тяжелое" железо. Я думаю, это из-за того, что они ставят ПО от CBOSS, а оно у них действительно "тяжелое" из-за сильной денормализации... В качестве советов для Оракла, я еще не встретил тут высказаваний по поводу применения partition table. Это ведь тоже может дать определенный выигрыш при правильной стратегии ее построения.. Чтобы это дало хороший результат, приложение должно быть изначально спроектировано с учетом partitioning'a. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2004, 23:50 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Разруха - в головах (С) Проф. Преображенский. Если разработчик системы не может внятно сформулировать что и как происходит в БД и где именно возникают проблемы производительности, то мы имеем дело с проблемой не технического характера, а организационного. Разработчик биллинговой (или любой другой "тяжелой" по БД) системы должен прежде всего хорошо разбираться в "родной" СУБД. Особенно в случае если бизнес-логика реализована в виде хранимых процедур (правильное решение, кстати). Сначала писать приложение а потом его тюнить - нездоровый подход. Производительность должна быть с самого начала заложена в дизайн и протестирована на прототипе. Проблемы с производительностью у данной конкретной системы могут быть по миллиону причин: - неадекватность железяки задаче (не поможет никакая СУБД) - неоптиальная логическая структура БД - неоптиальная физическая структура БД - неоптимально или бездумно спроектированные транзакции - ... Когда тюнингом занимаются DBA а резработчики не в курсе что конкретно делают DBA, мне лично все ясно. Это называется раздрай, и переход с Оракла на что-то другое не улучшит ситуацию. Ибо проблема - не в Оракле. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2004, 04:14 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Доброго времени суток возможно я не очень подробно прочитал но я не увидел о каком типе билинга идет речь prepay (карточный) или repayment (по сроку) у обоих типов принципиально разная логика и разные слабые места поэтому их по разному нужно оптимизировать в принципе общей проблемой для обоих типов являеться агрегирование входящей информации и обработка тарифных планов для prepay требуеться оптимизация обработки тарифных планов и генератор скриптов соединения а для repayment агрегирование входящей информации ну у меня есть такие рекомендации для repayment пишеться агрегирующий фильтр который подготавливает набор данных для инсерта в оперативную таблицу это приведет к тому что уменьшеться число инсертов да и количество входящих данных затем данные агрегируясь переходят в ращетную таблицу где уже обрабатываються с учетом тарифных планов а для prepay единственной пока рекомендацией есть такая рекомендация генератторы скриптов дозвона (соединения) выносяться во внешние процедуры с возможностью fork`а чтоувеличит число транзакций но даст возможность справиться с пиковой нагрузкой звонков если что пинайте icq:117356538 может чем помогу ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2004, 05:04 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
QuarkБыл както у них на презентации, слышал подобное). Но как это реализовано - все в секрете). Единственно что удалось внятного получить: для такого ускорения есть возможности писать данные напрямую в память обходя всякие "внутренние проверки" на соотвествие типов итп. То есть вся отвественность ложится на программиста. Представьте что будет если вы запишите в область памяти где int переменную char. В лучшем случае ваш биллинг повиснет выкинув всех пользователей( Нет, там не совсем так - есть один-единственный тип данных - строка.И "более сложная строка" - список (типа дин. массива.). Плюс многомерные разреженные массивы. А ко всему этому - классовые обёртки - очень удобно. Но для быстроты можно что-то (конечно, это надо толково вписать в архитектуру) можно сделать ручками. Алексей Буйницкий3. Обработку, по крайней мере начальную, производить не на оракле, а в памяти. Написать простейшую прожку на плюсах, которая "держит" балансы абонентов и дает быстрые ответы "брать, на сколько/не брать". 4. Обновления и т.д. делать по rowid, запись искать, как Том Кайт завещал, по наличию в индексе, по окончанию обработки из индекса выкидывать (null значение соотв. полю) 5. В принципе тарифные планы и т.д. я бы тоже рекомендовал загрузить в прожку на плюсах, чтобы она делала маленький select записи, ее тарифицировало и делало пару маленьких update-ов Вроде все, Удачи! Такую-вот вещь можно сделать на встроенном языке Cache' - довольно-таки богатые возможности у него. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2004, 14:28 |
|
|
start [/forum/topic.php?fid=29&msg=32749461&tid=1528660]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
151ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
others: | 237ms |
total: | 514ms |
0 / 0 |