Comments 19
Ещё раз подчеркну, что на текущий момент модель лицензирования не выработана.
У Flyway и Liquibase есть свои ниши использования. Например БД сформированные при помощи Ruby ActiveRecord или Java Hibernate будут ими очень хорошо поддерживаться. В более сложных случаях возможны проблемы. И разработчики PostgreSQL об этом хорошо знают.
Как и Flyway так и Liquibase ничего не знают про особенности работы PostgreSQL, об этом собственно и была статья.
На стадии применения выдаст ошибку :)
По поводу продажи продукта, это утверждение спорно. На текущий момент нам интересна реакция сообщества на продукт.
Ну мне вот пока не понятны фичи. Что вот мне даст использование этой штуки? Это инструмент для создания миграций так? Ну вот я бы хотел чтобы инструмент давал выхлоп в систему миграции какую-нибудь. Это стразу дает большой плюс. Плюс неплохо иметь интеграцию с ней. К примеру взял я flyway миграции скормил их в pgCodeKeeper получил возможность смотреть что поменялось. Ну и дальше мог бы ее наращивать.
/bin/initdb.exe -D e:/dbdata --no-locale -E UTF-8
просто не всасывается. Показывает пустую схему public и ни на кого не ругается. Дампы же возвращают ошибку. Консоль, к слову, тоже не может в UTF-8, а стоило бы.Вот эти два утверждения не совсем понятны. Все наши внутренние базы используют UTF-8 и каких-то проблем с использованием не обнаружено ни на Linux, ни на Windows. Попробуйте проверить свойства проекта (правой кнопкой мыши на проекте — Свойства), если вы его создавали на Windows, то возможно, что по умолчанию проект Eclipse был создан с кодировкой Windows-1251, если так, то измените проекту кодировку на UTF-8 и загрузите объекты в этот проект.
Когда создавал подключение, прописал базу данных postgres. Проект всё молчаливо втянул, но не смог отобразить ничего, кроме объявления схемы. У меня такое было, когда базу 9.4 пытались втянуть pgAdmin'ом от 9.3. Потому и поставил вопрос таким образом.
Попытки выполнить дампы так же не увенчались успехом. Выполнение pg_dump возвращало текст в UTF-8, которые предсказуемо обратился в кракозябры, отсюда и возмущение по поводу консоли. Я понимаю, стандартный элемент управления, командная строка, все дела, но мне это как-то ровно, я хочу розовую пони.
Я поменял в свойствах кодировку, закрыл приложение, открыл — и все окна diff'ов и прочего исчезли. У меня нет опыта работы с эклипс, но переход на перспективу «pgCodeKeper» не дал никаких результатов. Как и поиск нужного окна из списка. Кстати, кипера нету и в глобальных свойствах эклипса. Совпадение?..
В общем, постгресу, как и многим другим СУБД, не хватает таких же удобных инструментов, которые есть для шарпов и яв, но ваш конкретно сейчас я бы даже бета-версией назвать постеснялся, а тем более в реестр добавлять. Для вас это просто строчка, а кому-то придётся потратить не один тюбик нервов.
Перспектива в Eclispe определяет лишь расположение окон View, чтобы открыть окно редактора вызовите контекстное меню на проекте и выберите pgCodeKeeper — Открыть проект.

Короче, был неправ. Иду дальше разбираться с инструментом.
> 2. Изменения, внесенные разработчиком при помощи pgCodeKeeper, переносятся в девелоперскую ветку
Непонятно, что имеется в виду. Изменения в п. 1 происходят вручную или через вашу программу?
В п. 2 предполагается, что данные БД находится отдельно, а код работы с БД под контролем версий? «Перенос в девелоперскую ветку» — это имеется в виду, что в программный код добавляется код миграции на новый формат хранения данных?
Обычно п.1 выполняется разработчиком через pgAdmin или любой подобный инструмент. Но в некоторых (достаточно ограниченных случаях) проще внести изменения через pgCodeKeeper. В текущей итерации pgCodeKeeper инструмент в первую очередь для сопровождения, а не для разработки. Собственный редактор кода еще недостаточно хорош. Но с учетом того, что синтаксическое дерево у нас есть, то можно будет в будущем в этом направлении поработать. Но пока мы не рекомендуем pgCodeKeeper как (основной) редактор кода.
> В п. 2 предполагается, что данные БД находится отдельно, а код работы с БД под контролем версий? «Перенос в девелоперскую ветку» — это имеется в виду, что в программный код добавляется код миграции на новый формат хранения данных?
Кипер работает только с кодом. Под контролем версий находятся объекты БД — таблицы, представления, процедуры, типы, домены и др.
«Перенос в девелоперскую ветку» — это процесс синхронизации объектов БД с проектом. Из БД в ветку проекта. Используя следующую последовательность: Чтобы выполнить обновление проекта переключитесь на нижний таб “Обновить проект”, нажмите “Получить изменения”, выберите нужные объекты и нажмите на кнопку “Применить выбранные изменения”.
В последующем, подготовив мерж реквест (в терминах GitLab) для ветки связанной с боевой БД можно выполнить инспекцию измененных объектов.
Вполне возможно, если возможностей этого инструмента достаточно, то почему бы и нет? Я, к сожалению, с ним раньше не работал, а при попытке запустить в докер контейнере (так описано на сайте Squitch) выходит ошибка:
[ags@home:~] $ docker run --rm docteurklein/sqitch:pgsql
/bin/sh: 1: [sqitch]: not found
По своему опыту могу сказать, что инструменты "заточенные" под работу под разные БД, показывают не всегда удовлетворительный результат при работе с особенностями конкретных вендоров БД.
Если Вы работали со Squitch, попробуйте повторить тот кейс, который описан в этой статье. Справится ли с ним Squitch? Какой скрипт миграции будет сформирован?
Нет-нет, Sqitch не является заменой pgCodeKeeper, более того, мне кажется, что ваш инструмент удобно использовать для написания миграций такого рода (чтобы далее впиливать оные в план Sqitch).
Но вот когда речь идет о консоли, я уже не вижу смысла. Создать миграцию визуальным инструментом, после этого сохранить в план миграций Sqitch, и далее раскатывать им.
Приручение строптивого