Liquibase: Enterprise Edition

Embed Size (px)

DESCRIPTION

Доклад для XP Days Kiev 2013 "I will share our experience of development heavy enterprise database code with Agile methods using LiquiBase. We will meet pitfalls like Pl/Sql, Advanced MQ, triggers, database links, partitioned tables etc. Can really this stuff be developed with Agile process? Sure! I will show how we do it with LiquiBase, CI and TDD."

Citation preview

  • 1. LiquiBase Enterprise EditionAndrei Solntsev

2. @asolntsev 3. Agile 4. Database - ! 5. Database - ! Pl/Sql Materialized views DB Links 6. liquibase CREATE TABLE PERSON ( first_name VARCHAR2(16), last_name VARCHAR2(16) ); 7. liquibase CREATE TABLE PERSON ( first_name VARCHAR2(16), middle_name VARCHAR2(2), last_name VARCHAR2(16) ); 8. liquibase CREATE TABLE PERSON ( first_name VARCHAR2(32), middle_name VARCHAR2(32), last_name VARCHAR2(32) ); 9. : 1.sqlCREATE TABLE PERSON (first_name, last_name)2.sqlALTER TABLE PERSON ADD COLUMN middle_name3.sqlALTER TABLE PERSON DROP COLUMN middle_name 10. Tools DBDeploy LiquiBase FlyWay- - -? Ruby migrations Play evolutions Redgate- ROR - Play - 11. LiquiBase: XML 12. LiquiBase: XML 13. LiquiBase: XML 14. LiquiBase: XML 15. LiquiBase: XML 16. LiquiBase DSL 17. LiquiBase DSL IDE autocompletion , SQL ! . 18. LiquiBase Oracle? 19. LiquiBase 20. 21. ? 22. Opa Agile style Oracle XE ( dev !) ant start In-memory DB ant test 23. 1. Oracle- 2. Oracle XE- 3. H2 in-memory - - - 24. GIT conf/ dev.properties db.url=jdbc:oracle:thin:@server1:1521:devdblocal.properties db.url=jdbc:oracle:thin:@127.0.0.1:1521:xeinmemory.properties db.url=jdbc:h2:out/liquibase-ee 25. ant ant -Denv=dev ant -Denv=live ant start- 26. https://github.com/asolntsev/liquibase-ee 27. : SQL!SQL': JavaCVS': 28. ant show-sql LiquiBase , SQL 29. DROP procedure log_message 30. - CREATE OR REPLACE: VIEW 31. CREATE OR REPLACE 32. Materialized view CREATE MATERIALIZED VIEW currency_mv ... 33. Materialized view DROP MATERIALIZED VIEW currency_mv; CREATE MATERIALIZED VIEW currency_mv ... 34. 35. Jenkins 36. Jenkins HTML 37. Jenkins HTML 38. Jenkins HTML UI- localhost 39. 40. , 41. @asolntsev! 42. 40 . :( 43. changelog.xml 44. SQL CREATE TABLE payment ( id NUMBER NOT NULL, description VARCHAR2(100 CHAR), url VARCHAR2(500 CHAR), upd_dttm TIMESTAMP) DROP TABLE payment 45. XML 46. - Oracle 47. Materialized view CREATE MATERIALIZED VIEW currency_mv REFRESH COMPLETE as select * from (select * from currency_xa_pos2@${db.dblink.core}) DROP MATERIALIZED VIEW currency_mv; 48. Refresh Mat View BEGIN dbms_refresh.destroy('CUR_GRP'); END; 49. Refresh Mat View BEGIN dbms_refresh.destroy('CUR_GRP'); END; 50. 1.Author - GIT 2.Lock- , 3.IP detection - VPN