Преобразование (синхронизация) данных между SQL в HBase - PullRequest
0 голосов
/ 15 июня 2011

Мы пересматриваем наш продукт, полностью переходя от семейства Microsoft и .NET к открытому исходному коду (одной из причин является сокращение расходов и экспоненциальный рост данных).

Мы планируем полностью перенести нашу модель данных с SQL Server (реляционные данные) на Hadoop (известную экосистему пары ключ-значение).

В начале мы хотим поддерживать обе версии (скажем, 1.0 и новую v2.0). Для обеспечения согласованности данных мы планируем синхронизировать данные между обеими системами, что является довольно сложной задачей и подвержено ошибкам, но у нас нет других вариантов.

Немного запутавшись, с чего начать, я смотрю на сообщество экспертов. Любая стратегия / существующая литература или любые другие руководства в этом направлении были бы очень полезны.

Ответы [ 2 ]

1 голос
/ 15 июня 2011

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

В противном случае вы можете добавить триггеры в MSSQL для обновления Hadoop, не зная, что вы можете сделатьсделать в Hadoop для синхронизации MSSQL.

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

Лично я бы постарался избежать попытоквести две базы данных записи.Перенос изменений из новой экспериментальной базы данных в стабильную базу данных кажется рискованным.У вас есть шанс испортить вашу стабильную систему.Вместо этого я бы написал конвертер для перемещения данных из вашей реляционной БД в Hadoop.Затем каждую ночь копируйте свои данные в Hadoop и используйте их для разработки и тестирования вашей новой системы.Я думаю, что тестовые пользователи поймут, если вы скажете, что ваша бета-версия - это просто тестовая площадка и не повлияет на ваш живой продукт.Если вы планируете внести серьезные изменения в свой пользовательский интерфейс и боитесь, что некоторые не захотят перейти на 2.0, то вы, возможно, пытаетесь решить слишком много сразу.

Это решения, которые я придумал ...Удачи!

0 голосов
/ 15 июня 2011

Подумайте об использовании инструмента очередей, такого как Flume (http://www.cloudera.com/blog/2010/07/whats-new-in-cdh3b2-flume/), для разделения ввода между двумя системами.

...