Часто необходимо синхронизировать данные из основных таблиц в одной базе данных для клонирования таблиц в других базах данных, часто на других серверах. Например, рассмотрим случай, когда бэкэнд-система управляет данными инвентаризации и что данные инвентаризации в конечном итоге должны быть перенесены в одну или несколько баз данных, которые являются частью приложения веб-сайта.Синхронизация однонаправленной базы данных
Исходные данные в бэкэнд-системе в значительной степени нормализованы, с десятками таблиц и ограничениями внешнего ключа. Это хорошо зарекомендовавшая себя система OLTP RDBMS. Многие из рассматриваемых таблиц содержат миллионы строк. Необходимо регулярно распространять эти данные на другие базы данных. Как можно чаще; латентность может быть допущена. Прежде всего, необходимо максимальное время работы как бэкэнд, так и удаленных баз данных.
Я использую SQL Server и знакомы с отслеживанием изменений, rowversion, триггерами и т. Д. Я знаю, что Microsoft сильно подталкивает репликации, SyncFx и SSIS для этих сценариев. Тем не менее, существует большая разница между документами поставщика и обзорами, рекомендующими технологии, а также фактической реализацией, развертыванием и обслуживанием решения. В мире SQL Server репликация часто рассматривается как готовое решение, но я пытаюсь изучить альтернативные решения. (Существует некоторая опасения, что репликация трудно администрировать, затрудняет изменение схемы, и в случае необходимости повторной инициализации для критических систем будет большой простор.)
Есть много ошибок , Из-за сложных отношений внешнего ключа между большим количеством таблиц определение того, какой порядок выполнения захватов или применения обновлений не является тривиальным. Благодаря уникальным индексам две строки могут быть блокированы таким образом, что обновление по строке не будет работать (необходимо выполнить промежуточные обновления для каждой строки до окончательного обновления). Это не обязательно шоу-стопперы, так как уникальные индексы часто могут быть изменены на обычные индексы, а внешние ключи могут быть отключены (хотя отключение внешних ключей крайне нежелательно). Часто вы услышите «просто», используя отслеживание изменений SQL 2008 и SSIS или SyncFx. Подобные ответы действительно не оправдывают практических трудностей. (И, конечно же, клиентам действительно сложно обернуть голову над тем, как копирование данных может быть настолько сложным, что делает сложную ситуацию еще хуже!)
Эта проблема в конечном счете очень общая: выполните одностороннюю синхронизацию многих сильно связанные таблицы базы данных с большим количеством строк. Почти каждый, кто занимается базами данных, имеет дело с такой проблемой. Документы распространены, практический опыт трудно найти. Мы знаем, что это может быть сложной проблемой, но работа должна быть выполнена. Давайте послушаем о том, что сработало для вас (и чего избежать). Расскажите о своих опытах с продуктами или продуктами Microsoft от других поставщиков. Но если вы лично не тестировали битву с большим количеством тесно связанных таблиц и строк, пожалуйста, воздержитесь от ответа. Давайте придерживаться этого практического - не теоретического.
Спасибо, но Я рассматриваю это с точки зрения разработчика базы данных, а не администратора сервера. Это важно с точки зрения разработки программного обеспечения, а не только для операций. –
Спасибо за понимание. Обратите внимание, что количество целевых сайтов, которые меня особенно интересуют, очень мало (1-3 базы данных) по сравнению с проектами, которые вы сделали. Цель состоит в том, чтобы запускать идентичную логику программного обеспечения на каждом узле, поэтому схема базы данных для рассматриваемых таблиц будет одинаковой. Я понимаю, что вы говорите о «связи приложений», что необходимо, когда задействуются разрозненные системы, но более универсальное решение, которое требует небольшого кода, используя одинаковые схемы, - это то, что я ищу. –
Вы описываете репликацию. Если это соответствует вашим потребностям, со всеми его готами, не потейте, чтобы изобретать его. Есть буквально многолетний опыт и отзывы, уже накопленные в «готовой» репликации. Вы видите, что вы получили то, что осталось * после того, как исправлено еще много проблем, и вам просто нужно будет все это преодолеть. –