Your SlideShare is downloading. ×
0
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Поддержка идентичности структуры БД при командной разработке.
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Поддержка идентичности структуры БД при командной разработке.

806

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
806
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Поддержка идентичностиструктуры БД при командной разработке Михаил Кечинов Студия веб-разработок Михаила Кечинова
  • 2. Один разработчик, две базы ALTER … dev product• Каждый запрос заносится в dev- и в production-базу.• Для небольших проектов и одного человека.
  • 3. Один разработчик, три базы ALTER … BACKUP dev_1 product dev_2• SQL-запрос на DEV1 и PRODUCTION• Бэкап PRODUCTION и восстановление его на DEV2
  • 4. Один разработчик, три базы ALTER … BACKUP dev_1 product dev_2• SQL-запрос на DEV2 и PRODUCTION• Бэкап PRODUCTION и восстановление его на DEV1
  • 5. Два разработчика, много баз<?php • Скрипт с SQL-патчами.define (“DB_REVISION”, 34); • В БД хранится номер$scripts = array(); последнего патча.$scripts[1] = array( “CREATE TABLE `user` …”, • Выполняем новые патчи. “CREATE TABLE `post` …”); • Меняем версию БД.…$scripts[34] = array( “ALTER TABLE `user` ADD COLUMN …”);
  • 6. Два разработчика, много базUPDATE.PHP SVN UPDATE.PHP DEV DEV PROD SERV SERV SERV 1 2 dev_1 product dev_2
  • 7. Два разработчика, много баз• SVN-конфликты при одновременном создании одинаковых ревизий.
  • 8. Два разработчика, много баз II1.SQL • ОтдельныеCREATE TABLE `user` …; пронумерованные SQL-CREATE TABLE `post` …; файлы.… • В БД хранится номер последнего патча.34.SQLALTER TABLE `user` ADD COLUMN …; • Выполняем новые патчи. • Меняем версию БД.
  • 9. Два разработчика, много баз II1.SQL SVN 2.SQLDEV DEV PRODSERV SERV SERV 1 2dev_1 product dev_2
  • 10. Два разработчика, много баз II• SVN-конфликты в дереве при одновременном создании одинаковых файлов разруливаются переименованием файлов.• Конфликты порядка изменений имеют место.
  • 11. Два разработчика, много баз III20110511231531121.SQL • ОтдельныеCREATE TABLE `user` …; пронумерованные SQL-CREATE TABLE `post` …; файлы по TIMESTAMP.… • В БД хранятся номера обработанных файлов.20110514230417965.SQLALTER TABLE `user` ADD COLUMN …; • Выполняем необработанные файлы. • Помещаем в БД номера обработанных файлов.
  • 12. Два разработчика, много баз III• Конфликты порядка изменений имеют место.
  • 13. Нерешенная проблемаКак избавиться от конфликта порядка изменений? Кроме регулярного обновления
  • 14. Резюме<?php$filename = date(“YmdHisu”);$content = “-- ” . date(“d.m.Y H:i”) . PHP_EOL;$content .= “-- @author ” . PHP_EOL;$content .= “-- @comment ” . PHP_EOL;$content .= PHP_EOL;file_put_contents($filename . “.sql”, $content);echo “Revision file ” . $filename . “.sql created” . PHP_EOL;
  • 15. Решение под PHP Ruckusinghttp://code.google.com/p/ruckusing/
  • 16. Ruckusing howto> php generate.php create_user_tabledb/migrate/20110602193549_CreateUserTable.php
  • 17. db/migrate/20110602193549_CreateUserTable.php<?phpclass CreateUserTable extends Ruckusing_BaseMigration { public function up() { $t = $this->create_table("users"); $t->column("first_name", "string"); $t->column("last_name", "string"); $t->column("email", "string", array(limit => 128)); $t->finish(); $this->add_index("users", "email", array(unique => true)); } public function down() { $this->drop_table("users"); }}?>
  • 18. Process> php main.php db:migrate
  • 19. Контактные данные Михаил Кечиновsam@mkechinov.ru mkechinov.ru +7 950 0099233

×