BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 11 май 2024, 03:26

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 30 ] 
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 04 фев 2009, 19:54 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
Администратор писал(а):
В contract_account нужен пятый знак, чтобы при тарификации RADIUS ом можно было его просто приращивать, избегая каждый раз пересчета суммы путем суммирования каких-то других таблиц.

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

Да, на счет звонков, я вспомнил как решать проблему фантомных x.99999, вы тарифицируете в джава коде оперируя переменными с большой точностью, а в базе у вас float(10,5), так вот когда вы просто пишете в базу число xx.99999999999999 оно у вас транкейтится, а надо писать
"insert .... values (..., round(<variable>, 5), ...)" и фантомные периоды исчезнут.
И так надо делать везде где вы пишите в базу вычисляемые значения с плавающей точкой, в принципе можно везде округлять до ~10 знака, с запасом так сказать, что бы потом не править код когда захочется вместо float(10,5) сделать float(10,6), вообщем главное захватить последнюю цифру в числах с периодом.

P.S. не просмотрите предыдущий пост мой со кринами, а то вторая страница топика пошла, вдруг не заметите :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 фев 2009, 13:08 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
При вставке MySQL не обрезает а округляет. По абонплатам ошибка воспроизвелась, исправляем.

Цитата:
С обывательской точки зрения видится порочность идеалогии.
Почему для радиуса не сделать отдельную таблицу где будут данные с точностью до нужного вам знака, а в таблицу которая отражает денежные взаимоотношения с клиентом писать уже округленные суммы ?

Собственно, а почему сумму не округлять получая ее? Так и сделано сейчас..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 фев 2009, 14:02 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
Администратор писал(а):
При вставке MySQL не обрезает а округляет.
Собственно, а почему сумму не округлять получая ее? Так и сделано сейчас..

Если бы mysql округляла то наверно вы бы не получали при звонке в 2 минуты, по цене 2 рубля стоимость 3.9999 ?
Код:
mysql> select round_session_time, min_cost, session_cost from log_session_4_200902 where session_cost <> round(session_cost, 4);
+--------------------+----------+--------------+
| round_session_time | min_cost | session_cost |
+--------------------+----------+--------------+
|                720 |  4.65000 |     55.80001 |
|               1140 | 14.20000 |    269.79999 |
|               1020 | 14.20000 |    241.39999 |
|                720 |  4.65000 |     55.80001 |
|               1320 | 11.07000 |    243.53999 |
|               2040 | 14.20000 |    482.79999 |
|               1680 | 14.20000 |    397.60001 |
|                720 |  4.65000 |     55.80001 |


Значит вы пользуетесь числами с низкой точностью, не знаю, но факт фантомов которые характерны компьюторной операции деления чисел с плавающей точкой на лицо.

Цитата:
Собственно, а почему сумму не округлять получая ее? Так и сделано сейчас..

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

P.S. по абонке жду новостей, спасибо, пойду пока узнаю у юриста когда он подпишет договор на тп


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 фев 2009, 14:38 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Цитата:
Если бы mysql округляла то наверно вы бы не получали при звонке в 2 минуты, по цене 2 рубля стоимость 3.9999 ?

Со звонками я уже написал, что сделать попробовать. По абонкам - разбираюсь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 фев 2009, 14:50 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
Администратор писал(а):
Цитата:
Если бы mysql округляла то наверно вы бы не получали при звонке в 2 минуты, по цене 2 рубля стоимость 3.9999 ?

Со звонками я уже написал, что сделать попробовать. По абонкам - разбираюсь.

Я ответил :) Для меня это вариант конечно, хотя для меня лично и round при выборке пропрет так как по каждому договору у меня звонков то там 1000 штук максимум будет и эти фантомы просто не доберут до копейки. Но я за истину тут борюсь :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 фев 2009, 19:08 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
мускул округляет ...
Код:
mysql> SELECT 0.001 + 0.009;
+---------------+
| 0.001 + 0.009 |
+---------------+
|         0.010 |
+---------------+
1 row in set (0.01 sec)
земените SELECT на UPDATE и мускул сам округлит до размера поля ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 фев 2009, 21:21 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
кстати... может быть вырастить версию BGB под постгрес? на больших нагрузках MySQL как-то совсем не айс. не промышленное решение.

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 фев 2009, 10:13 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Цитата:
кстати... может быть вырастить версию BGB под постгрес? на больших нагрузках MySQL как-то совсем не айс. не промышленное решение.

Если кто-то даст реальный тест, показывающий значительный скачок производительности постгресса по сравнению с MySQL на простых конкурирующих UPDATE/SELECT по первичному ключу (собственно у нас 90% выборок простые), мы сразу начнем копать в ту сторону.
До тех пор особого смыслу в смене СУБД не вижу.. Ну назвал ее кто-то "промышленной". Во времена выбора нами СУБД у них даже нативной версии под Windows не было.. И объем документации по сравнению с MySQL просто на порядок уступает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 фев 2009, 13:55 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
Да ересь это все. Работает на мысквеле и пусть работает, у него только один недостаток на данный момент: мысквел позволяет делать расхлябанную структуру БД, целосности никакой. Если уже и менять базу банных, то на оракл, если это будет необходимо, а менять шыло на мыло это не серьезно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 фев 2009, 12:56 
Не в сети
Клиент

Зарегистрирован: 12 фев 2007, 18:49
Сообщения: 335
Карма: 15
Jimson писал(а):
Да ересь это все. Работает на мысквеле и пусть работает, у него только один недостаток на данный момент: мысквел позволяет делать расхлябанную структуру БД, целосности никакой. Если уже и менять базу банных, то на оракл, если это будет необходимо, а менять шыло на мыло это не серьезно.

Если на оракл, то тогда логику всю надо переносить туда :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 фев 2009, 13:42 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
По поводу копейки: Пока придумал в тарифном плане задавать до какого знака округлять стоимость звонка. В базе хранить 5 знаков.

По поводу оракла: Тесты, тесты нужны ) Причем на близких к нашим (множество простых запросов) условиях. Пробовали мы и оракл. Пролетел, насколько помню. Еще и ставить его замучаешься, кучу кнопок тыкать и настраивать потом. На сервере, куда доступ только по ССШ и никакой графики нет в помине - вообще сказка. Правда, потом RPM нашли вроде..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 фев 2009, 17:35 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
это такая можа сейчас при словах "база данных" сразу вспоминать оракл? можно конечно и по воробъям крупнокалиберным спецбоеприпасом стрелять но, простите, зачем? для биллинга использующего простейшие запросы вполне хватает мускула, ну разве что вариант с переездом на постгрес еще как то можно обсудить (там спец. формат полей для IP адресов и т.д. и т.п.), а оракл ... IMHO, но это слишком, а если учесть его стоимость (про это что-то все как-то забывают) то можно вообще сказать - "в сад!"(с)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 мар 2009, 16:06 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
Администратор писал(а):
Цитата:
кстати... может быть вырастить версию BGB под постгрес? на больших нагрузках MySQL как-то совсем не айс. не промышленное решение.

Если кто-то даст реальный тест, показывающий значительный скачок производительности постгресса по сравнению с MySQL на простых конкурирующих UPDATE/SELECT по первичному ключу (собственно у нас 90% выборок простые), мы сразу начнем копать в ту сторону.
До тех пор особого смыслу в смене СУБД не вижу.. Ну назвал ее кто-то "промышленной". Во времена выбора нами СУБД у них даже нативной версии под Windows не было.. И объем документации по сравнению с MySQL просто на порядок уступает.


Вот тут вопрос сравнения производительности обсасывали

а переводить СУБД бгбиллинга на оракул, ИМО несерьезно. Постгре таки бесплатный, в отличие от оракула, желающего деньгу за свои решения. Да и выигрыш оракул перед Постгрес дает ИМО только при полномасштабном использовании Oracle PL/SQL. Которому, к слову, команда разработчиков из Беркли, нашла достойное применение и в СУБД PostgreSQL, обозвав его PL/pgSQL.
Цитата:
PostgreSQL runs stored procedures in more than a dozen programming languages, including Java, Perl, Python, Ruby, Tcl, C/C++, and its own PL/pgSQL, which is similar to Oracle's PL/SQL. Included with its standard function library are hundreds of built-in functions that range from basic math and string operations to cryptography and Oracle compatibility


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

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 мар 2009, 16:26 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
MySQL это M$ Exel :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 мар 2009, 18:24 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
И Еще Одно Преимущество PostgreSQL перед MySQL => у PostgreSQL есть AUTO[VACUUM, ANALYZE, garbage collector]. еще бы автобекап сделали - можно было бы ваще не париться :)

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.067s | 46 Queries | GZIP : On ]