Цей розділ описує синхронізацію даних між двома базами даних в Database Tour на прикладах.
Припустимо, необхідно синхронізувати дані між вихідною базою даних (master) та цільовою базою даних (slave). Цієї мети можна досягти використанням засобів експорту Database Tour. Дуже важливим тут є правильний вибір режиму експорту та ключових полів для кожної таблиці, чиї дані потрібно синхронізувати; рекомендації щодо цього наведено нижче. Також врахуйте, що найбільш безпроблемною є така синхронізація даних, при котрій немає необхідності проводити вилучення даних, тому при можливості будуйте свої системи так, щоб уникати вилучення даних або звести його до мінімуму.
Нижче показано два сценарії:
- Перший сценарій показує, як синхронізувати дані з одного набору даних між базою даних Firebird і базою даних Interbase.
- В другому сценарії ми синхронізуємо дані між трьома таблицями бази даних Firebird та відповідними таблицями бази даних Interbase. Ви можете побудувати власний процес синхронізації даних, легко розширивши даний сценарій на будь-яку кількість таблиць та будь-які типи вихідної та цільової баз даних, підтримуваних в Database Tour.
Підготовка процесу
Це не обов'язково, але рекомендується зареєструвати і вихідну, і цільову бази даних перед тим, як ви почнете налаштовувати ваш процес експорту.
Для обох баз даних рекомендується використовувати інтерфейс FD.
Обидві бази даних повинні підтримувати однакову архітектуру: 32-bit або 64-bit. Тобто обидві бази даних повинні успішно відкриватися однією копією (instance) Database Tour.
Зауваження: На наших веб-сайтах є обидві версії Database Tour: 32-bit та 64-bit. Будь-ласка, перевіряйте, яку саме версію ви завантажуєте. Якщо ваша операційна система 64-бітна, ви можете встановити як Database Tour 32-bit, так і Database Tour 64-bit і використовувати їх незалежно.
Cинхронізація даних однієї таблиці
- Відкрийте вихідну базу даних.
- Виберіть набір даних для експорту. Тобто виберіть таблицю у списку таблиць або напишіть та виконайте ваш запит SQL.
- Якщо ви вибрали таблицю, перейдіть до закладки Дані.
- Клікніть кнопку Експорт з панелі інструментів угорі.
- Перейдіть до закладки База даних та виберіть вашу зареєстровану цільову базу даних.
- Вкажіть цільову таблицю. Увімкніть опцію Режим економії пам'яті і пов'язані з нею опції. Якщо вихідні дані та/або назви колонок джерела або цілі можуть містити символи Unicode, переконайтеся, що вибрали коректне кодування потоку SQL, наприклад, UTF-8.
- Виберіть коректний Режим експорту. Наприклад:
- Виберіть Replace+Insert, якщо цільова таблиця ще не існує або якщо ви хочете її видалити і створити заново.
- Виберіть Empty+Insert, якщо цільова таблиця вже існує і вам потрібно вилучити всі її дані і вставити в неї дані з вихідної таблиці.
- Виберіть Append+Update, якщо цільова таблиця вже існує і вам потрібно додати відсутні записи до неї (в порівнянні з вихідною таблицею) і оновити існуючі записи.
- і т.д. (див. опис вибраного режиму експорту поряд з блоком вибору режиму)
- Клікніть Далі. Перевірте відповідності полів джерело-ціль. Тут ви можете вилучити з процесу непотрібні поля, додані обчислювані поля, вказати типи цільових колонок (якщо експортуєте дані до нової таблиці) і т.д. Якщо на попередньому екрані ви обрали режим експорту Append+Update, вам необхідно буде вказати ключові поля, по яких буде робитися зіставлення записів джерела та цілі.
- Клікніть Експорт.
Cинхронізація даних кількох таблиць
- Відкрийте вихідну базу даних.
- Перейдіть до закладки Таблиці ліворуч.
- Клікніть список таблиць правою кнопкою і виберіть Множинний вибір.
- Виберіть таблиці, по яких робитиметься синхронізація даних. В цьому прикладі ми вибираємо три таблиці: Перші дві таблиці вже існують в цільовій базі даних, а остання ще ні.
- Клікніть кнопку Експорт або виберіть меню Інструменти | Експорт даних | Вибрані таблиці....
- Перейдіть до закладки База даних, виберіть вашу зареєстровану цільову базу даних та вкажіть параметри експорту. Майте на увазі наступне:
- Увімкніть опцію Режим економії пам'яті і пов'язані з нею опції. В разі проблем при експорті, якщо є підозра, що вони викликані цими опціями, спробуйте іншу їх комбінацію. Якщо вихідні дані та/або назви колонок джерела або цілі можуть містити символи Unicode, переконайтеся, що вибрали коректне кодування потоку SQL, наприклад, UTF-8.
- Виберіть Режим експорту, який слід застосувати для більшості таблиць. Ви зможете при потребі перевизначити його на наступному етапі (Відповідності таблиць).
- Залиште поле для цільової таблиці пустим, інакше дані будуть експортуватися до однієї таблиці.
- Чим більше значення Commit-інтервалу, тим швидше експортуватимуться дані. Проте занадто великі значення можуть викликати помилки роботи з оперативною пам'яттю та інші проблеми. Тому спробуйте погратися з цим параметром для знаходження оптимального значення перед портуванням рішення до продуктивного середовища.
- Клікніть Далі і вкажіть відповідності таблиць джерело-ціль, тобто відповідності між вихідними наборами даних та цільовими таблицями.
Тут можна вказати повні специфікації колонок для цільових таблиць, а також перевизначити Режим експорту для певних таблиць (якщо вам потрібен різний режим експорту для різних таблиць). Щоб перевизначити Режим експорту, клікніть кнопку '...' в колонці Трансформація.
Перша таблиця вже існує в цільовій таблиці. Отже, для неї можна вказати режим експорту Append+Update в секції Табличні опції угорі. Для цього режиму ми також повинні вказати ключове поля (чи ключові поля), по якому (яким) буде здійснюватися зіставлення записів джерела та цілі. Ключові поля - це колонки з цільової таблиці; вони повинні бути присутні у відповідностях полів нижче, щоб дати програмі знати, яким полям вихідної таблиці вони відповідають.
В секції Відповідності полів нижче впевніться, що програма правильно вибудувала відповідності між вихідними і цільовими колонками вибраної таблиці. Виправте їх при потребі. Налаштуйте табличну трансформацію для інших таблиць. Вкажіть режим експорту Append+Update для другої таблиці (яка існує в цільовій таблиці) і режим експорту Replace+Insert для останньої таблиці (яка ще не існує).
Насамкінець ми можемо змінити порядок обробки таблиць, використовуючи відповідні кнопки вище. Давайте пересунемо останню таблицю на першу позицію. В нашому прикладі порядок таблиць значення не має. Але бувають випадки, коли цей порядок важливий, наприклад, якщо цільові таблиці посилаються одна на одну за посередництва зовнішніх ключів.
Так виглядають відповідності таблиць після зроблених маніпуляцій: Зауваження
- Настійно рекомендується, щоб цільова таблиця мала унікальне обмеження на основі ключових полів, які вказано для режиму експорту Append+Update.
- Режим експорту Append+Update не покриває випадків, коли деякі записи вихідної таблиці видаляються, тому синхронізація для них буде в цьому режимі неповною.
Режим експорту Delete в даному випадку не допоможе, оскільки він видаляє з цільової таблиці ті записи, які присутні у вихідній таблиці.
Іншим рішенням може бути використання режиму експорту Empty+Insert, але якщо інші таблиці в цільовій базі даних посилаються на таблицю, що синхронізується, через зовнішні ключі, можуть бути проблеми з очищенням таблиці (якщо, звісно, ви не вказали правило каскадного вилучення для цих зовнішніх ключів, що може бути небажаним в багатьох випадках). Також врахуйте, що видалення записів - це дорога операція, особливо для великих таблиць або при інтенсивному використанні зовнішніх ключів. Крім того, вставка щоразу більшого масиву даних (при регулярному виконанні синхронізації) відразу закладає регулярне збільшення часу на цей процес. Тобто повторне використання режиму експорту Empty+Insert рекомендується для порівняно невеликих таблиць, не обтяжених при цьому взаємними посиланнями через зовнішні ключі з іншими таблицями.
Отже, приділіть достатньо часу вибору оптимального режиму експорту для синхронізації даних, ретельно зважуючи всі плюси та мінуси.
- Якщо вам потрібно налаштувати журналювання експорту або змінити стандартну обробку помилок експорту, перейдіть до наступного кроку, клікнувши Далі. Цей крок можна пропустити, клікнувши Експорт.
- Після завершення конфігурування експорту і перед запуском процесу ви можете зберегти зроблені налаштування до файлу, використовуючи кнопку Інструменти внизу. Якщо вам потрібно буде повторювати цей процес у майбутньому, ви зможете завантажити його налаштування з файлу і зберегти ваш час, не вибудовуючи процес з нуля.
- Клікніть Експорт для початку процедури. Перервати процес можна буде натисканням ESC або кліканням Відмінити в додатковому віконці, що показується протягом експортного процесу.
Див. також: