Администраторы баз данных и разработчики часто сталкиваются с ситуациями, когда необходимо данные из разных баз сравнивать и синхронизировать, либо просто перенести их в другую рабочую базу. В этом случае очень важно выбрать правильный инструмент, который поможет справиться с этой задачей быстро и эффективно. Для PostgreSQL на рынке существует несколько готовых инструментов, которые позволяют находить различия и выполнять синхронизацию данных. В этой статье проведем небольшой обзор особенностей этих инструментов, а именно продукты таких компаний как Devart, SQL Maestro Group, Navicat и Altova.


image

После установки, при первом запуске, все продукты требуют лицензионный ключ, но у всех так же есть и триальный период. У SQL Maestro Group и Navicat — 15 дней, а у dbForge и Altova — 30 дней. И, если во всех продуктах переход в период пробного использования происходит одним нажатием кнопки, то Altova предлагает воспользоваться их автоматическим сервисом для получения ключей на каждый продукт. После чего на почту приходит список ключей по запрошенным продуктам с датой окончания их действия.


Каждый продукт довольно сильно отличается друг от друга по интерфейсу и функционалу. Поэтому, приведем краткий обзор приложений по первым впечатлениям:


  1. PostgreSQL DataSync — приложение сразу же запускает мастер сравнения двух баз, тем самым указывая, что данное приложение предназначено лишь для сравнения данных и ничего более. Так же в мастере есть клавиша Generate command line…, которая позволяет сохранить сценарий для последующего использования при автоматизации процессов.
  2. dbForge Data Compare for PostgreSQL — после запуска приложения открывается окно Start Page, в котором может быть список предыдущих проектов. Так же, судя по панели инструментов, можно вызвать не только мастер синхронизации данных, но и обычное окно SQL документа для работы со скриптами со стандартным набором инструментов, а так же вариант запуска больших скриптов напрямую из файла. Для работы по синхронизации данных так же открывается мастер New Data Comparison для ввода соединений и названий баз данных. Так же в мастере есть кнопка Save Command Line…, позволяющая сохранять сценарии сравнения для дальнейшего использования.
  3. Navicat for PostgreSQL – после запуска открывается студия с набором инструментов для работы с базами. Т.е. предлагается не только вариант синхронизации данных, но и синхронизация схем и объектов. Для сравнения данных так же запускается мастер Data Synchronization, в котором предлагается выбрать два соединения с базами и почему-то только по одной схеме от каждой базы. Таким образом, для сравнения нескольких схем нужно запускать синхронизацию для каждой схемы отдельно.
  4. Altova DatabaseSpy – после запуска открывается приложение, в котором из выпадающего меню есть возможность выбрать варианты сравнения файлов, директорий, данных и т.д. Соседство таких приложений в одном списке немного смутило, а попытка провести простейшее сравнение двух баз не привела ни к какому удовлетворительному результату из-за довольно своеобразного интерфейса. Поэтому, к сожалению, из дальнейшего сравнения это приложение мы исключили.

При сравнении простых данных все три приложения показали себя довольно хорошо, выделялся только Navicat со своим сравнением по каждой схеме отдельно. dbForge порадовал возможностью вводить дополнительные пользовательские скрипты для каждой пары сравнения.
При работе со сложными данными уже появились отличия. При синхронизации данных с конвертации типов все приложения выводят предупреждение о возможной потере данных. Но, по крайней мере, на наших тестовых данных, после проведения синхронизации DataSync и Navicat продолжают показывать, что данные в таблицах не равны, но в скрипт синхронизации ничего не выводят. После синхронизации приложением dbForge при последующем сравнении само приложение указывает, что данные в обоих базах равны и дополнительной синхронизации не требуется. DataSync и Navicat подтвердили, что после синхронизации приложением dbForge Data Compare for PostgreSQL все данные равны.


Все приложения поддерживают PostgreSQL до версии 9.6 включительно. Navicat еще позволяет работать с базами на Amazon, а dbForge поддерживает еще и Azure.


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


Продукт
Ссылка
Компания
Цена
dbForge Data Compare for PostgreSQL
https://www.devart.com/dbforge/postgresql/datacompare/
Devart
$99.95
PostgreSQL Data Sync
http://www.sqlmaestro.com/products/postgresql/datasync/
SQL Maestro
$99
EMS Data Comparer for PostgreSQL
http://www.sqlmanager.net/products/postgresql/datacomparer
SQL Manager
$110
Table Data Comparison And Synchronization Tool
http://www.dbsolo.com/datacomp.html
DB Solo
$129
DatabaseSpy 2017
http://www.altova.com/databasespy.html
Altova
Enterprise $189
Professional $129
Datanamic DataDiff for PostgreSQL
http://datanamic.com/datadiff-for-postgresql/index.html
Datanamic
Standard $199
Navicat for PostgreSQL (for Windows)
https://www.navicat.com/en/products/navicat-for-postgresql
Navicat
Enterprise $299
Standard $199
Aqua Data Studio
http://www.aquafold.com/aquadatastudio/schema_sql_compare.html
AquaFold
Standard $499

Цены указаны за одного пользователя с 1 годом поддержки.


Подводя итоги, можно сказать, что каждый инструмент имеет как преимущества, так и недостатки. Какой инструмент выбрать, зависит от ваших предпочтений. На основании всех вышеперечисленных критериев, был выбран dbForge Data Compare for PostgreSQL, который «на отлично» справляется с поставленными целями, имея при этом невысокую стоимость.


image

Комментарии (7)


  1. nApoBo3
    31.10.2017 11:49

    В DataGrip тоже есть Diff. Для физ.лиц 89$ в год( второй 71, третий 53 )


  1. KiloLeo
    31.10.2017 21:45

    А что делать, если надо проверить результат перекачки таблиц из PG в Oraclle или MSSQL, например?


    1. SnowBearRu
      01.11.2017 09:43

      Не уверен, гляньте dbeaver


  1. GEG
    31.10.2017 22:09

    Летом была стажерская программа в QIWI и силами одного из школьников написали на Node.js утилитку, сравнивающую данные и схемы в бд. Сейчас используем для сравнения горы справочников перед релизами. Удобно, например, что умеет сравнивать данные без учета автоинкрементной колонки.
    Возможно, кому-нибудь пригодится: https://github.com/qiwi/pg_comparator


  1. Bo_K_S
    02.11.2017 09:39

    а liquibase никто не пробовал?


    1. Bo_K_S
      02.11.2017 09:54

      я при помощи этой штуки смог сэмулировать работу sqlpackage.exe применительно к postgres (деплой с идеологией «выстрелил-и-забыл»)


  1. AlanDenton
    02.11.2017 18:39

    Спасибо за наводку — поддержим отечественного производителя… хотя мне больше другие продукты от Devart по душе