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/ |