Версионирование структурыреляционных баз данных
А что такое версионирование?Версионирование - процесс сопоставлениясостояния ПО уникальному номеру илиимени версии.
Зачем такие сложности?Все это не нужно, если ваш проект выглядиттак:
Об этом стоит задуматьсяКогда проект и команда начинают расти
Как можно решить задачу1. Выбрать язык/фреймворк в котором это   есть из коробки(Ruby/rake, PHP/YII,   PHP/Doctrine, Pytho...
Подходы к решениюМетод инкрементных измененийНедостатки:1. Сложности при командной разработке
Подходы к решениюМетод идемпотентных измененийНедостатки:1. Сложность написания скриптов2. Опасность повторного применения...
Подходы к решениюМетод декларативного описания структурыБДНедостатки:1. Сложность миграции данных2. Сложно выполнять вручн...
Какие есть stand-alone решения1. DbDeploy2. Liquibase3. Flyway4. AutoPatch5. DbMaintain... тысячи их
DbDeploy возможности1. Миграции на чистом SQL2. Command Line интерфейс3. Поддержка большинства СУБД4. Поддержка в Phing/An...
Liquibase возможности1.   XML и Groovy миграции2.   Поддержка большинства СУБД3.   Поддержка в Ant/Maven/Phing4.   Command...
Flyway возможности1. Java и SQL миграции2. Поддержка большинства СУБД3. Поддержка в Ant/Maven4. Command Line интерфейс5. П...
Литература1.   http://habrahabr.ru/post/121265/2.   http://flywaydb.org/3.   http://www.liquibase.org/4.   http://www.phin...
Спасибо за вниманиеВопросы?
Upcoming SlideShare
Loading in …5
×

Relational databases versioning

518 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
518
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Relational databases versioning

  1. 1. Версионирование структурыреляционных баз данных
  2. 2. А что такое версионирование?Версионирование - процесс сопоставлениясостояния ПО уникальному номеру илиимени версии.
  3. 3. Зачем такие сложности?Все это не нужно, если ваш проект выглядиттак:
  4. 4. Об этом стоит задуматьсяКогда проект и команда начинают расти
  5. 5. Как можно решить задачу1. Выбрать язык/фреймворк в котором это есть из коробки(Ruby/rake, PHP/YII, PHP/Doctrine, Python/Yoyo, Python/Sqlalchemy, etc)2. Использовать stand-alone решение3. Написать свою утилиту для версионирования4. Не делать ничего...
  6. 6. Подходы к решениюМетод инкрементных измененийНедостатки:1. Сложности при командной разработке
  7. 7. Подходы к решениюМетод идемпотентных измененийНедостатки:1. Сложность написания скриптов2. Опасность повторного применения изменений при повторении имен
  8. 8. Подходы к решениюМетод декларативного описания структурыБДНедостатки:1. Сложность миграции данных2. Сложно выполнять вручную3. Готовые решение платные
  9. 9. Какие есть stand-alone решения1. DbDeploy2. Liquibase3. Flyway4. AutoPatch5. DbMaintain... тысячи их
  10. 10. DbDeploy возможности1. Миграции на чистом SQL2. Command Line интерфейс3. Поддержка большинства СУБД4. Поддержка в Phing/Ant--//-- Run SQL to do the changes--//@UNDO-- RUN SQL to undo the changes--//
  11. 11. Liquibase возможности1. XML и Groovy миграции2. Поддержка большинства СУБД3. Поддержка в Ant/Maven/Phing4. Command Line интерфейс <changeSet id="1" author="bob"> <createTable tableName="department"> <column name="id" type="int"> <constraints primaryKey="true" nullable="false"/> </column> <column name="name" type="varchar(50)"> <constraints nullable="false"/> </column> <column name="active" type="boolean" defaultValueBoolean="true"/> </createTable> </changeSet>
  12. 12. Flyway возможности1. Java и SQL миграции2. Поддержка большинства СУБД3. Поддержка в Ant/Maven4. Command Line интерфейс5. Плейсхолдеры в миграциях/* Single line comment */CREATE TABLE test_user ( name VARCHAR(25) NOT NULL, PRIMARY KEY(name));
  13. 13. Литература1. http://habrahabr.ru/post/121265/2. http://flywaydb.org/3. http://www.liquibase.org/4. http://www.phing.info/
  14. 14. Спасибо за вниманиеВопросы?

×