forum.bitel.ru
http://forum.bitel.ru/

Работа с БД
http://forum.bitel.ru/viewtopic.php?f=1&t=6762
Страница 1 из 1

Автор:  afedorov [ 10 май 2012, 18:25 ]
Заголовок сообщения:  Работа с БД

Использование mysql в качестве БД для биллинга мягко говоря напрягает.
Хотя бы тем, что никто ни за что не отвечает и не гарантирует как эта СУБД будет работать.
Вот например имеем ситуацию, когда при innodb_file_per_table размер файла ibdata1 вырос за 3 месяца до 360Gb и занимает сейчас в 6 раз больше места чем сама база.
Гугление дало что это проблема давно известна http://bugs.mysql.com/bug.php?id=45173, http://bugs.mysql.com/bug.php?id=1341
И всем пофиг. А единственный вариант уменьшить размер файла - задампить БД, все поудалять и восстановить из дампа. Жесть!!!!

Нормальные механизмы бекапа отсутствуют. Варианты с снапшотами и локами БД на время их копирования нормальными назвать сложно.

В самом биллинге очень много кода, заточенного именно под mysql, а не какая-нибудь ORM библиотека. Т.е. безболезненно пересесть на другую БД невозможно.

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

Есть огромное желание уйти от mysql на oracle.

Автор:  skyb [ 10 май 2012, 18:32 ]
Заголовок сообщения:  Re: Работа с БД

afedorov писал(а):
Использование mysql в качестве БД для биллинга мягко говоря напрягает.
Хотя бы тем, что никто ни за что не отвечает и не гарантирует как эта СУБД будет работать.
Вот например имеем ситуацию, когда при innodb_file_per_table размер файла ibdata1 вырос за 3 месяца до 360Gb и занимает сейчас в 6 раз больше места чем сама база.

овер сикс манс полет нормальный
afedorov писал(а):
Гугление дало что это проблема давно известна http://bugs.mysql.com/bug.php?id=45173, http://bugs.mysql.com/bug.php?id=1341
И всем пофиг. А единственный вариант уменьшить размер файла - задампить БД, все поудалять и восстановить из дампа. Жесть!!!!

Нормальные механизмы бекапа отсутствуют. Варианты с снапшотами и локами БД на время их копирования нормальными назвать сложно.

эээ.....я делаю обычный майэскуэльдамп, и хрен его знает сколько раз восстанавливал уже из него, ниразу проблем небыло, что именно не сохраняется при такой дамповке?
[/quote]
afedorov писал(а):
Есть огромное желание уйти от mysql на oracle.

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

Автор:  dimOn [ 10 май 2012, 18:42 ]
Заголовок сообщения:  Re: Работа с БД

Цитата:
Хотя бы тем, что никто ни за что не отвечает и не гарантирует как эта СУБД будет работать.

это как так? ну… купите платную MySQL, если богаты на оракл. будет вам и поддержка и отвечать будут.

Автор:  afedorov [ 10 май 2012, 18:44 ]
Заголовок сообщения:  Re: Работа с БД

skyb писал(а):
эээ.....я делаю обычный майэскуэльдамп, и хрен его знает сколько раз восстанавливал уже из него, ниразу проблем небыло, что именно не сохраняется при такой дамповке?


Времени на дамп 60Гб БД и ее восстановление нужно очень много. Абонентам в это время не работать? Или работать но с потерей данных?

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


Цена биллинга от этого не сильно изменится, а цена решения - да. Но зато будет выбор БД: непойми что забесплатно или нормальная БД за деньги. Каждый будет решать сам.

Автор:  afedorov [ 10 май 2012, 18:47 ]
Заголовок сообщения:  Re: Работа с БД

dimOn писал(а):
Цитата:
Хотя бы тем, что никто ни за что не отвечает и не гарантирует как эта СУБД будет работать.

это как так? ну… купите платную MySQL, если богаты на оракл. будет вам и поддержка и отвечать будут.


И что толку от этой поддержки? Покажите мне тулзу за деньги, которая умеет делать ребилд ibdata файла для высвобождения места за вменяемое время. Нету таких. Официальная версия везде - эти файлы уменьшать нельзя, можно только пересоздавать заново.

Автор:  dimOn [ 10 май 2012, 18:50 ]
Заголовок сообщения:  Re: Работа с БД

afedorov писал(а):
dimOn писал(а):
Цитата:
Хотя бы тем, что никто ни за что не отвечает и не гарантирует как эта СУБД будет работать.

это как так? ну… купите платную MySQL, если богаты на оракл. будет вам и поддержка и отвечать будут.


И что толку от этой поддержки? Покажите мне тулзу за деньги, которая умеет делать ребилд ibdata файла для высвобождения места за вменяемое время. Нету таких. Официальная версия везде - эти файлы уменьшать нельзя, можно только пересоздавать заново.

А под оракл компактные базы типа?

Автор:  dimOn [ 10 май 2012, 18:52 ]
Заголовок сообщения:  Re: Работа с БД

Вообще, то что вы предлагаете — это сложно. Разговоры об этом тут были много раз, и обсуждения тоже, гляньте постарее темы.

Автор:  afedorov [ 10 май 2012, 18:59 ]
Заголовок сообщения:  Re: Работа с БД

В оракле практически все можно решить не грохая базу, стандартными средствами. На предыдущей работе была оракловая БД порядка 600Гб. За 5 лет ни разу никаких проблем не возникло.
И с бекапами все гораздо проще. Настроил один раз скрипты полного и инкрементального бекапов с нужной периодичностью для RMAN, поставил в крон и забыл - все бекапится и складывается куда надо без всяких перерывов в работе. Про HA решения типа RAC я и не говорю даже.

Автор:  Phricker [ 10 май 2012, 19:07 ]
Заголовок сообщения:  Re: Работа с БД

Цитата:
Вот например имеем ситуацию, когда при innodb_file_per_table размер файла ibdata1 вырос за 3 месяца до 360Gb и занимает сейчас в 6 раз больше места чем сама база.

Такая ситуация могла бы наблюдаться без innodb_file_per_table
Возможно ранее у вас не было такой настройки в my.cnf, а потом вы ее поставили. до этого этот файл содержал индексы всех таблиц. и он естественно уже не отдает это место :)

А лицензии оракла не все могут себе позволить
Цитата:
Стоимость одной Processor license - 17500$


Бекапы делаются у всех кто тут при помощи репликации базы. Думаю slave базу вы можете себе позволить остановить :)

Хотя лично я ничего против Oracle не имею. Но для данного биллинга он слишком громоздкий как здесь уже обсуждалось. Здесь СУБД используется тупо как хранилище, вся логика работы вынесена в сам биллинг

Автор:  afedorov [ 10 май 2012, 19:19 ]
Заголовок сообщения:  Re: Работа с БД

dimOn писал(а):
Вообще, то что вы предлагаете — это сложно. Разговоры об этом тут были много раз, и обсуждения тоже, гляньте постарее темы.


Да, непросто. Но есть к чему стремиться. Вот на вскидку то, что лежит на поверхности:
1. DDL. Синтаксис может быть разным. Например при создании новых месячных таблиц.
Но имея на входе имя таблицы, набор полей с их именами и абстрактными типами и тип БД получить нужный DDL не проблема.
2. Встроенные функции. Например NOW() в mysql и SYSDATE в oracle. Тут уже сложнее. Нужно будет пересмотреть их использование и там где без них не обойтись использовать например функции обертки.
3. Автоинкрементные поля и получение последнего id. Вполне можно решить, формализовав работу через API.

Автор:  dimOn [ 10 май 2012, 19:27 ]
Заголовок сообщения:  Re: Работа с БД

По-хорошему надо работать вообще через ORM, хотя бы тонкий. Остальное — от лукового и для больших проектов выливается в колхоз. То что сейчас — механизм "драйверов" JDBC — уж слишком тонкий и как вы верно заметили, на уровне SQL имеет проблемы совместимости, которые опять же почти все решаемы и в рамках того же JDBC, но просто у нас не так и с этим требуется смириться. Чтобы было всё универсально — было бы круто, но почти нереально по определённым причинамъ.

Автор:  afedorov [ 10 май 2012, 19:35 ]
Заголовок сообщения:  Re: Работа с БД

Phricker писал(а):
Такая ситуация могла бы наблюдаться без innodb_file_per_table
Возможно ранее у вас не было такой настройки в my.cnf, а потом вы ее поставили. до этого этот файл содержал индексы всех таблиц. и он естественно уже не отдает это место :)


Да это возможно и без innodb_file_per_table, но с innodb_file_per_table сразу заметно что-то не так. Т.к. база ставилась с нуля и все таблицы изначально создавались как innodb, а не делался их ALTER из myiasm. Файл изначально был размером 10Мб и он растет.

Phricker писал(а):
А лицензии оракла не все могут себе позволить
Цитата:
Стоимость одной Processor license - 17500$


А у вас на все железо честно куплены Right to use лицензии, если лицензия это лишь бумажка и железо работает без нее? ;)

Автор:  dimOn [ 11 май 2012, 11:41 ]
Заголовок сообщения:  Re: Работа с БД

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

Автор:  Phricker [ 11 май 2012, 11:46 ]
Заголовок сообщения:  Re: Работа с БД

dimOn писал(а):
Ну, с таким подходом проще сразу самый дорогой биллинг поставить без бумажек и не париться. Изображение

fixed

Автор:  stark [ 12 май 2012, 14:28 ]
Заголовок сообщения:  Re: Работа с БД

afedorov писал(а):
dimOn писал(а):
Вообще, то что вы предлагаете — это сложно. Разговоры об этом тут были много раз, и обсуждения тоже, гляньте постарее темы.


Да, непросто. Но есть к чему стремиться. Вот на вскидку то, что лежит на поверхности:
1. DDL. Синтаксис может быть разным. Например при создании новых месячных таблиц.
Но имея на входе имя таблицы, набор полей с их именами и абстрактными типами и тип БД получить нужный DDL не проблема.
2. Встроенные функции. Например NOW() в mysql и SYSDATE в oracle. Тут уже сложнее. Нужно будет пересмотреть их использование и там где без них не обойтись использовать например функции обертки.
3. Автоинкрементные поля и получение последнего id. Вполне можно решить, формализовав работу через API.


Там вроде как еще проблема с limit-ом . Его нет в oracle.
И почему именно oraсle ? Тут на форуме еще активно postgresql проталкивали, называли его "промышленной субд".

Автор:  Khoma [ 12 май 2012, 23:08 ]
Заголовок сообщения:  Re: Работа с БД

Вот только не надо Oracle! Всё у него возможно и прекрасно, но вот цена! это ужас. А уж их саппорт это отдельная тема...

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/