Однонаправленная синхронизация в реальном времени с sql-сервера в другое хранилище данных - PullRequest
0 голосов
/ 20 июня 2011

В моем предыдущем вопросе на этом портале я спросил о некоторой информации о синхронизации данных между SQL Server и хранилищами данных на основе значений ключей.

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

  1. У нас есть несколько сегментов данных SQL 2008, где данные обновляются из различных источников и обрабатываются многими процессами одновременно (и пользовательский интерфейс считывает из одних и тех же сегментов).

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

  3. Количество изменений в шардах SQL будет оставаться в диапазоне 100-500 МБ (если мы будем сохранять частоту 1 мин).Мы не хотим вносить серьезные изменения в SQL-серверы, поскольку мы отказались бы от них после миграции всей системы.

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

  5. Триггеры замедляют осколки и оставляют их в неотвечающем состоянии.

  6. Не уверен, что в SQL Server 2008 есть что-то похожее на SQL Server 2005 Службы уведомлений и насколько это эффективно.

Любое другое инновационное решение будет очень полезным.

Здесь моя проблема не в том, чтобы преобразовать данные из реляционной формы в ключ-значение (это довольно просто), а в том, как получить обновления SQL Server в режиме реального времени (может позволить себезадержка 1-2 минуты), не влияя на пользовательский опыт.

Ответы [ 3 ]

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

вы смотрели на SQL Service Broker? вот ссылка с некоторой информацией: http://blogs.msdn.com/b/sql_service_broker/archive/2008/07/09/real-time-data-integration-with-service-broker-and-other-sql-techniques.aspx

0 голосов
/ 08 ноября 2014

Один из вариантов, который вы могли бы рассмотреть, - Интегрированное отслеживание изменений SQL Server (часть SQL2008 или выше). Это невероятно эффективный способ найти изменения, которые произошли в вашей базе данных SQL Server (включая удаления), очень мало влияет на вашу базу данных SQLDB, не требует триггеров и предоставляет хороший способ позволить вам затем перенести изменения данных Hadoop.

Полное раскрытие, я работаю над Cotega, и эта синхронизация данных - это то, на чем мы уделяем большое внимание. Я с радостью помогу, если вы заинтересованы в этом направлении.

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

Снизу вверх расположены слои данных: хранилище, файловая система, БД и приложение.

Наиболее эффективный способ сделать это - использовать репликацию хранилища. Он почти не влияет на производительность, может быть настроен как синхронный или асинхронный и не является бесплатным. Вы можете использовать Google SRDF или MirrorView, чтобы получить представление об этом.

Тогда вы можете взглянуть на репликацию файловой системы. Это похоже на репликацию хранилища, но происходит на уровне ОС / файловой системы, потребляя ресурсы (CPU, IO, mem) хост-системы. Вы можете получить дополнительную информацию в Google Symantec Storage Foundation.

На уровне БД вы можете выполнять репликацию базы данных / доставку журналов для репликации данных. SQL-сервер имеет такие возможности.

«Самым дешевым» решением было бы модифицировать ваше приложение, например 4), но я предлагаю вам использовать очередь сообщений для репликации данных, чтобы минимизировать влияние на производительность.

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