URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 70928
[ Назад ]

Исходное сообщение
"Facebook открыл код инструмента для ускорения смены схемы да..."

Отправлено opennews , 22-Сен-10 15:25 
Разработчики социальной сети Facebook сообщили (http://www.facebook.com/notes/mysql-at-facebook/online-schem...) об открытии утилиты OSC (Online Schema Change), позволяющей обеспечить возможность изменения на лету схемы представления данных в MySQL. По заявлению разработчиков использование классической операции "ALTER TABLE" для изменения структуры реплицированной на многие серверы базы выполняется слишком долго, поэтому для ускорения в OSC задействованы триггеры MySQL 5.0 для выполнения операций ALTER TABLE в неблокирующем режиме.


Алгоритм OSC сводится к выполнению полного копирования данных во временную таблицу; изменению схемы временной таблицы без блокирования работы основной таблицы; синхронизации из основной таблицы всех данных, изменившихся с момента копирования (используются триггеры); замене базовой таблицы на подготовленную временную таблицу с новой структурой. Интересно, что по словам (http://www.theregister.co.uk/2010/09/21/facebook_online_s...

URL: http://www.theregister.co.uk/2010/09/21/facebook_online_sche.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=28046


Содержание

Сообщения в этом обсуждении
"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено klalafuda , 22-Сен-10 15:25 
Интересно, как они борятся с внешними ключами :-? Вот есть рабочие таблица A на которую ключи из таблицы B. Мы решили что-то поменять в структуре таблицы A. Сделали временную таблицу T, в которую скопировали содержимое таблицы A + синхронизируем во времени содержимое T с A посредством тригеров. Через какое-то время T поменяла структуру. Дальше просто RENAME TABLE T в A :-? И при этом ключи из B в A не испортятся?

"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено filosofem , 22-Сен-10 15:44 
>Интересно, как они борятся с внешними ключами :-?

Никак:

if ($row['count'] != 0) {
    $error =    'FK exists to or from table being altered. '.
                'FK and triggers may not work well together. '.
                'So OSC not allowed unless OSC_FLAGS_ACCEPTFK is set.';
    $this->raiseException($error, false);
}


Кстати это и называется
>расширена поддержкой проверки внешних ключей

=)


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено klalafuda , 22-Сен-10 16:30 
> if ($row['count'] != 0) {
>     $error =    'FK exists to or from table being altered. '.
>                 'FK and triggers may not work well together. '.
>                 'So OSC not allowed unless OSC_FLAGS_ACCEPTFK is set.';
>     $this->raiseException($error, false);
> }

Это я так понимаю кусок кода из их скриптов? Я их не смотрел пока если честно. Т.е. получается, что OSC явным образом проверяет на наличие FK и отказывается работать с таблицами, в которых они присутствуют? Чудное решение...


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено filosofem , 22-Сен-10 16:51 
Смотреть там не на что. Прямая ссылка на 1000 строк кода на похапэ под BSDL.
По FK запрос к схеме на предмет ключей и если есть, то отказать. Очень нужная подачка.

"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено Аноним , 22-Сен-10 15:44 
а чо удалить предварительно ключи никак ?

там же написано на коде какой утилиты и какого набора этого строится .. наверняка это плевое дело .


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено andy , 22-Сен-10 16:10 
А наши социальные сети odnoklassniki.ru и vkontakte.ru, открывают свои доработки?

"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено anthonio , 22-Сен-10 16:56 
а что у них есть _свои_ наработки? :)

"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено ixti , 22-Сен-10 17:13 
Автор предудущего поста весьма точно описал что у них свои не _наработки_ а _доработки_ :)) Хотя я бы ещё приставочку "не" добавил, чтоб уж совсем правда была :))

"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено Аноним , 22-Сен-10 16:26 
(Оффтопик, в общем-то)

> ... по словам представителя Facebook ... на тысячах серверов проекта ...

На ТЫСЯЧАХ! :)

(В оригинале - "across its sea of MySQL servers", т.е. их просто "море", а не тысячи)


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено Антон , 22-Сен-10 19:11 
Читайте внимательно, там сказано "X тысяч":

"...company runs "X thousands" of MySQL servers."

еще несколько цитат на тему числа серверов в FaceBook:
"the load on our thousands of servers continues to increase at a pretty astounding rate"
"Facebook: 30000 databases, 1800 db servers"
    

http://venublog.com/2008/04/16/notes-from-scaling-mysql-up-o.../
http://blog.facebook.com/blog.php?post=7899307130


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено klalafuda , 22-Сен-10 19:25 

С такими кастомерами MySQL явно далеко до стагнации. Причем что фейсбук далеко не единственные.

"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено Avator , 22-Сен-10 21:44 
а вы уверенны что они кастомеры??? Мне кажется они её поддерживать своими силами вполне могут...

"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено klalafuda , 22-Сен-10 21:54 
> а вы уверенны что они кастомеры??? Мне кажется они её поддерживать своими силами вполне могут...

А смысл? Поле деятельности фейсбука лежит мягко говоря в совсем другой стороне. Зачем им держать отдельный коллектив, который будет заниматься разработкой RDBMS? Если проще и дешевле отдать это на аутсорс == купить поддержку у мускуля. С таким же успехом они и 'Linux смогут поддерживать' :) Но зачем..


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено AlexGor , 22-Сен-10 23:07 
поле деятельности google тоже явно не в той стороне. что не мешает им "держать отдельный коллектив", в.т.ч. и для поддержки linux.

"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено klalafuda , 22-Сен-10 23:11 
> поле деятельности google тоже явно не в той стороне. что не мешает им "держать отдельный коллектив", в.т.ч. и для поддержки linux.

Боюсь, масштабы гугла и фейсбука несколько не сопоставимые. А, главное, масштабы их хотелок. Поэтому гугл - это гугла, а фейсбук - это фейсбук. Не думаю, что последний ставит перед собой задачи завоевания Галактики и тд и тп. Ребята просто работают на волне. Без особых претензий.


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено AlexGor , 23-Сен-10 00:00 
> Ребята просто работают на волне. Без особых претензий.

ага. набрали полмиллиарда пользователей, без особых претензий. в gmail (и соответственно прочих гуглосервисах), к слову, аккаунтов меньше раза этак в два.


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено klalafuda , 23-Сен-10 16:13 
> ага. набрали полмиллиарда пользователей, без особых претензий. в gmail (и соответственно прочих гуглосервисах), к слову, аккаунтов меньше раза этак в два.

Про полмиллиарда пользователей - это они вам сами сказали? Они соврали. У них как минимум пять миллиардов. А по проверенным слухам существенно больше...


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено agent_007 , 25-Сен-10 20:43 
> Про полмиллиарда пользователей - это они вам сами сказали?

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


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено StrangeAttractor , 23-Сен-10 20:24 
> "...company runs "X thousands" of MySQL servers."

Я тоже "runs X thousands of MySQL servers" при X = 0.005 :-)


"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено Аноним , 23-Сен-10 14:30 
Какой-то странный костыль, а почему не создать новую таблицу и не переносить туда записи. Параллельно используя представления (VIEW) для выборки данных из обоих таблиц???

"Facebook открыл код инструмента для ускорения смены схемы да..."
Отправлено Евгений , 23-Сен-10 16:26 
из-за блокировки?