Database Re Factoring :: GeneXus at Code Generation 2010

54

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 of Database Re Factoring :: GeneXus at Code Generation 2010

Page 1: Database Re Factoring :: GeneXus at Code Generation 2010
Page 2: Database Re Factoring :: GeneXus at Code Generation 2010
Page 3: Database Re Factoring :: GeneXus at Code Generation 2010
Page 4: Database Re Factoring :: GeneXus at Code Generation 2010

Model Driven Database Schema Evolution

Gastón Milano

[email protected]

Twitter: @gmilano

Artech

Page 5: Database Re Factoring :: GeneXus at Code Generation 2010

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

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

World Wide Partners

Page 8: Database Re Factoring :: GeneXus at Code Generation 2010

Me

Page 9: Database Re Factoring :: GeneXus at Code Generation 2010

Database Evolution for Business Applications

Page 10: Database Re Factoring :: GeneXus at Code Generation 2010

Why Database Evolution

Refactoring Evolution

Page 11: Database Re Factoring :: GeneXus at Code Generation 2010

2003

More than just code

Page 12: Database Re Factoring :: GeneXus at Code Generation 2010

Build a database VI: Create reports for a new Access database

Page 13: Database Re Factoring :: GeneXus at Code Generation 2010
Page 14: Database Re Factoring :: GeneXus at Code Generation 2010

Why Database Evolution

Page 15: Database Re Factoring :: GeneXus at Code Generation 2010

Multipurpose Columns

Name Type

Daniel User

Pedro User

Artech Company

Code Generation Event

Page 16: Database Re Factoring :: GeneXus at Code Generation 2010

Redundant Data

Opportunity for Inconsistency

Page 17: Database Re Factoring :: GeneXus at Code Generation 2010

Smart Columns

Address

Libertador 1448 1102

Michigan Av. 832 , CA | 099348792

Page 18: Database Re Factoring :: GeneXus at Code Generation 2010

And more…

• Tables with many columns

• Deprecated tables

• Performance Problems

Why Database Evolution

Page 19: Database Re Factoring :: GeneXus at Code Generation 2010

And at the end…

Fear of Change

Page 20: Database Re Factoring :: GeneXus at Code Generation 2010

Complexity grows over time!

Page 21: Database Re Factoring :: GeneXus at Code Generation 2010

But why?

Page 22: Database Re Factoring :: GeneXus at Code Generation 2010

Just Say Yes

Page 23: Database Re Factoring :: GeneXus at Code Generation 2010

But…

Page 24: Database Re Factoring :: GeneXus at Code Generation 2010

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

• 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

Problems

No DB Evolution

With DB Evolution

Page 27: Database Re Factoring :: GeneXus at Code Generation 2010

Model Driven for Database Evolution

Page 28: Database Re Factoring :: GeneXus at Code Generation 2010

• 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

Current Market Solutions

Page 30: Database Re Factoring :: GeneXus at Code Generation 2010

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

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

What instead of How

Page 33: Database Re Factoring :: GeneXus at Code Generation 2010

Our Approach: The External Model

Page 34: Database Re Factoring :: GeneXus at Code Generation 2010

The External Model Approach

• External Model Conceptual Model & Physical Model

• Conceptual Model Physical Model

Page 35: Database Re Factoring :: GeneXus at Code Generation 2010

Study Case: Invoicing Application

Page 36: Database Re Factoring :: GeneXus at Code Generation 2010

Real-World Invoice

Page 37: Database Re Factoring :: GeneXus at Code Generation 2010

Database Invoice

Page 38: Database Re Factoring :: GeneXus at Code Generation 2010

UML Invoice

Page 39: Database Re Factoring :: GeneXus at Code Generation 2010

Normalization

Real world objects are not normalized.

Page 40: Database Re Factoring :: GeneXus at Code Generation 2010

An User View of the Invoice

Page 41: Database Re Factoring :: GeneXus at Code Generation 2010

User ViewsModel

The External Model

User Views User Views

External Model

Reality

Page 42: Database Re Factoring :: GeneXus at Code Generation 2010

The External Model

Page 43: Database Re Factoring :: GeneXus at Code Generation 2010

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

The External Model

Key Features

• Understandable and Manageable

• Consistent

• Orthogonal

Page 45: Database Re Factoring :: GeneXus at Code Generation 2010

Basic Semantic Elements

• Attribute

• Domain

• Business Component (User Views)

The External Model

Page 46: Database Re Factoring :: GeneXus at Code Generation 2010

Attribute

• Name

• Meaning

• URA (Universal Relationship Assumption)

The External Model

Page 47: Database Re Factoring :: GeneXus at Code Generation 2010

Domains

Data Types

The External Model

Page 48: Database Re Factoring :: GeneXus at Code Generation 2010

Business Components

The External Model

Attributes Structure

Rules Formulas

Page 49: Database Re Factoring :: GeneXus at Code Generation 2010
Page 50: Database Re Factoring :: GeneXus at Code Generation 2010

Sometimes we need to jump to evolve our Database Design

Page 51: Database Re Factoring :: GeneXus at Code Generation 2010

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
Page 53: Database Re Factoring :: GeneXus at Code Generation 2010

“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

Thank you!

Q & A