Pull to refresh

Comments 8

Спасибо за статью.

Заинтересовался, каким образом данные в бинарном логе выглядят могут выглядеть как текст. Из следующей статьи стало понятно, что лог MySQL сохраняется в видет CSV файла. Отсюда два вопроса:

1. Первичная репликация из источника проводилась также через файл? Какого размера были данные в БД?
2. Примерный объем данных, которые нужно анализировать, видимо, достаточно велик, чтобы для анализа использовать специализированную Вертику. Влезает ли объем изменений в файл?
Не совсем так. Бинарный лог — он на то и бинарный, что это не текст. Его формат для MySQL, впрочем, не является секретом. Но в конечном итоге из лога можно, конечно, восстановить исходный SQL-statement. На хабре есть хорошие статьи про MySQL-репликацию, там об этом подробно рассказано.

csv файлы используются для промежуточного результата перед загрузкой в OLAP базу данных. В данном случае использовалась Вертика, но это может быть что угодно. То есть процесс примерно такой:
mysql binlog -> reduction -> csv -> vertica

Почему так? Потому что большинство баз данных, а аналитические всегда, поддерживают быструю загрузку из csv-файлов. В последних стандартах SQL для этого есть оператор COPY.

Отвечая на вопросы:
1. Наверное через файл. Данные достаточно большие, чтобы имело смысл городить весь этот огород. Рискну предположить, что речь шла о сотнях миллионах или нескольких миллиардах записей. Для MySQL это уже проблема.
2. Влезает ли объем изменений в файл? Странный вопрос. В файл может влезть все, что угодно. Здесь надо ставить вопрос, насколько велик поток изменений. Но можно предположить, что MySQL вряд ли выдерживает постоянно больше нескольких тысяч транзакций в секунду, а в Вертику данные можно загружать со скоростью в десятки и сотни тысяч записей в секунду, и при необходимости процесс загрузки неплохо масштабируется.
Спасибо за ответ, я именно об этом и спрашивал. Насчет влезания в файл — видимо, что-то я недоформулировал.
Что значит сила open-source. Чтобы проделывать такое с логами, скажем, Oracle, нужно за большие деньги покупать отдельный продукт или опцию.
Это сила не Open Source, а сила открытого протокола. Tungsten может делать, кстати, репликацию из MySQL в Oracle тоже, но я не знаю детали.
Sybase это делает через in-memory database в репликационном сервере, после чего делает булк лоад в OLAP, при этом отбрасывая «промежуточные мусорные запросы»
В MS SQL Server 2008 появился механизм Change Tracking, который всё это делает на уровне ядра. Каждое целостное состояния данных в таблице характеризуется своим номером версии, указав две разных версии можно получить полноценный diff (PK записи и тип действия I/U/D которое нужно совершить). При этом, цепочка событий Insert + Update + Update превращается в один Insert.
Извините, ответ предназначается автору поста.
Only those users with full accounts are able to leave comments. Log in, please.

Information

Founded
2005
Location
США
Website
www.lifestreetmedia.com
Employees
51–100 employees
Registered