Про репликацию
Привет всем.
Одной из самых технологически сложных программ в моей прошлой жизни был проект репликатора, который свел воедино другие подсистемы (базу данных, скрипты, IBProvider, поиск по «текстовому индексу») основного проекта — управление базой данных для регистрации сделок с недвижимостью.
Репликатор, лично для меня, это один из тех проектов, воспоминания о котором заставляют улыбаться — это было и это работало.
Современный IBProvider, с технической точки зрения, бесконечно более сложный продукт, чем те мои «поделки» 2004 года. Но там он был «всего лишь» винтиком более сложной машины для перекачке информации реального мира.
Основные моменты, которые остались в голове:
- Основная (Липецкая) база данных (после 14 сентября 2004 года) была создана репликатором из 20 баз, которые в течении 2 лет независимо наполнялись в разных филиалах. Первичные ключи, ясный пень, везде начинались с единицы 🙂
- При формировании объединенной базы данных было «убито» 10 тысяч дублей среди физ. лиц.
- В Ельце две базы слили в одну — закачали одну в другую.
- Пару раз репликатором восстанавливали «убитые» базы филиалов. Мы просто перекачивали репликатором данные конкретного филиала из центральной базы в пустую болванку БД. После этого назначали этой новой базе новый GUID и отдавали её обратно в филиал. Она получалась даже более чистой, чем «погибшая». Потому что репликатор (точнее его программируемая логика) изничтожал дубли в данных. А потом из этой «возрожденной» базы снова качали данные в центральную БД.
- Двухпроцессорный сервер по ночам упирался всеми рогами и копытами, накатывая пакеты репликаций из филиалов.
Вдаваться в технические детали, честно говоря, сейчас вообще не тянет. Скажу, что мне не было стыдно за технологический уровень реализации.
Главным в репликаторе была идея перемещения данных. Идея была настолько простой, что проще убить себя об стену, чем реализовать её в коде. Впрочем, когда тебе еще нет 30 — реализация нереализуемых вещей это в порядке вещей 🙂
Часть этой идеи описана вот в этом документе, который обнаружил на днях у себя на компьютере. Решил выложить здесь — вдруг кому пригодится 😉