database re factoring :: genexus at code generation 2010
DESCRIPTION
Gastón Milano and Daniel Méndez from Artech travelled to Cambridge to introduce an audience of technical experts and academic researchers to the theory behind the GeneXus model and the essence of the paradigm that proposes describing instead of programming.TRANSCRIPT
![Page 1: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/1.jpg)
![Page 2: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/2.jpg)
![Page 3: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/3.jpg)
![Page 4: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/4.jpg)
Model Driven Database Schema Evolution
Gastón Milano
Twitter: @gmilano
Artech
![Page 5: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/5.jpg)
Agenda: Model Driven Database Evolution• Background
• Database Evolution for Business Applications
• Model Driven for Database Evolution
• Current Market Solutions
• Study Case: Our Model
• Q & A
![Page 6: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/6.jpg)
Background
• Founders: Nicolás Jodal , Breogán Gonda
• Research• Databases, Artificial Intelligence, Code Generation
• GeneXus
• Offices: Uruguay, USA, Mexico, Brazil, Japan.
![Page 7: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/7.jpg)
World Wide Partners
![Page 8: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/8.jpg)
Me
![Page 9: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/9.jpg)
Database Evolution for Business Applications
![Page 10: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/10.jpg)
Why Database Evolution
Refactoring Evolution
![Page 11: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/11.jpg)
2003
More than just code
![Page 12: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/12.jpg)
Build a database VI: Create reports for a new Access database
![Page 13: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/13.jpg)
![Page 14: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/14.jpg)
Why Database Evolution
![Page 15: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/15.jpg)
Multipurpose Columns
Name Type
Daniel User
Pedro User
Artech Company
Code Generation Event
![Page 16: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/16.jpg)
Redundant Data
Opportunity for Inconsistency
![Page 17: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/17.jpg)
Smart Columns
Address
Libertador 1448 1102
Michigan Av. 832 , CA | 099348792
…
![Page 18: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/18.jpg)
And more…
• Tables with many columns
• Deprecated tables
• Performance Problems
Why Database Evolution
![Page 19: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/19.jpg)
And at the end…
Fear of Change
![Page 20: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/20.jpg)
Complexity grows over time!
![Page 21: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/21.jpg)
But why?
![Page 22: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/22.jpg)
Just Say Yes
![Page 23: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/23.jpg)
But…
![Page 24: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/24.jpg)
A database refactoring
• Change the database schema
• Migrate the data in the database
• Change the database access code
![Page 25: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/25.jpg)
• Change data base schema implies:
• Rewriting at least DB Access Code
• Writing data migration code
• Wondering if you have already deployed your application• How to handle DB Versions?
• How to know what is the impact on existing versions?
![Page 26: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/26.jpg)
Problems
No DB Evolution
With DB Evolution
![Page 27: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/27.jpg)
Model Driven for Database Evolution
![Page 28: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/28.jpg)
• Incremental Development
• Multiple Platforms (DBMS / Languages)
• Platform Independent but not Platform Ignorant
• Versioning
• Automatic Change Management
Model Driven for Database Evolution
![Page 29: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/29.jpg)
Current Market Solutions
![Page 30: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/30.jpg)
Some existing solutions
• Liquibase
• Eclipse for Database Professionals
• Active Record (Scaffolding Technologies)
• Visual Studio for Database Professionals
• Dbdeploy & DbDeploy.NET
Why Model Driven
![Page 31: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/31.jpg)
Apply
Impact Analysis
Changes
Model Version 1
Application Version 1
Model Version 2
Application Version 2
![Page 32: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/32.jpg)
What instead of How
![Page 33: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/33.jpg)
Our Approach: The External Model
![Page 34: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/34.jpg)
The External Model Approach
• External Model Conceptual Model & Physical Model
• Conceptual Model Physical Model
![Page 35: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/35.jpg)
Study Case: Invoicing Application
![Page 36: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/36.jpg)
Real-World Invoice
![Page 37: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/37.jpg)
Database Invoice
![Page 38: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/38.jpg)
UML Invoice
![Page 39: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/39.jpg)
Normalization
Real world objects are not normalized.
![Page 40: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/40.jpg)
An User View of the Invoice
![Page 41: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/41.jpg)
User ViewsModel
The External Model
User Views User Views
External Model
Reality
![Page 42: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/42.jpg)
The External Model
![Page 43: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/43.jpg)
See in actionAdd Nullable AttributeAdd Non-Nullable AttributeAdd Non-Nullable Secondary Attribute Add Non-Nullable Foreign Key AttributeAttribute Type ChangeSet Attribute as NullableSet Column as AutonumberedRename AttributeAdd / Remove Attribute to Primary KeyRemove ForeignKey AttributeDelete Secondary AttributeAdd Duplicated indexAdd unique IndexRename IndexAdd TableRename TableDelete TableAdd RedundancyDelete RedundancyMove Attribute to/from 1-N TablesupertypesAdd Surrogate Keyetc
![Page 44: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/44.jpg)
The External Model
Key Features
• Understandable and Manageable
• Consistent
• Orthogonal
![Page 45: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/45.jpg)
Basic Semantic Elements
• Attribute
• Domain
• Business Component (User Views)
The External Model
![Page 46: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/46.jpg)
Attribute
• Name
• Meaning
• URA (Universal Relationship Assumption)
The External Model
![Page 47: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/47.jpg)
Domains
Data Types
The External Model
![Page 48: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/48.jpg)
Business Components
The External Model
Attributes Structure
Rules Formulas
![Page 49: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/49.jpg)
![Page 50: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/50.jpg)
Sometimes we need to jump to evolve our Database Design
![Page 51: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/51.jpg)
Model Driven Schema Evolution allows us to focus on what matters and avoid technical complexity
![Page 52: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/52.jpg)
![Page 53: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/53.jpg)
“Fear of Change is a good indication that you have a serious technical risk on your hands, one that will only get worse over time”
![Page 54: Database Re Factoring :: GeneXus at Code Generation 2010](https://reader034.vdocuments.us/reader034/viewer/2022042623/5527b42f4979598f178b481d/html5/thumbnails/54.jpg)
Thank you!
Q & A