SQL Developer Data Modeler Een migratiepad vanuit Oracle Designer
Chris Amelink, Manager SO Mark Rooijakkers, Technisch Architect Hans Leendertse, Willem Cortenraad, directeur Joop Technisch Architect 22 november Datum 24-09-2013 2012
1
Doelstelling van deze sessie • Aanleiding: CB zoekt vervanger voor Designer • Data Modeler kan hierin een grote rol spelen • Import functie van Data Modeler voldoet • Voldoende mogelijkheden om de import aan te vullen en te controleren • We zijn geinteresseerd in feedback en sparring partners
Integrale logistieke oplossingen Ondertitel van de presentatie 2
Introductie CB-logistics Missie • Bijdragen aan duurzaam succes van onze klanten door integrale logistieke oplossingen Visie • Met slimme ketenlogistiek duurzame voordelen realiseren voor onze stakeholders. Kernwaarden • Toegewijd, initiatiefrijk en klantgericht
Integrale logistieke oplossingen Ondertitel van de presentatie 3
Waarom CB? Integrale oplossingen • Distributie, administratie, informatie en vervoer Ketenlogistiek • Maximale efficiency door afgestemde processen • Kostenbeheersing in de keten Duurzaamheid als uitgangspunt • Duurzame klantrelaties • Continue aandacht voor de milieueffecten van onze activiteiten
Integrale logistieke oplossingen Ondertitel van de presentatie 4
Onze markten Media • Boekverkopers en overige retail • Uitgeverijen
Fashion • Retailers • Producenten en importeurs
Healthcare • Ziekenhuizen en zorginstellingen • Groothandels en producenten Integrale logistieke oplossingen Ondertitel van de presentatie 5
Beeld HC
Een rijke historie 1871
Nederland is het eerste land met gecentraliseerde boekdistributie
1985
Start distributie in kantoorartikelenmarkt
1999
Start distributie voor webwinkels
2001
Volledig geautomatiseerd bestelsysteem voor retailers
2003
Introductie dienstverlening in Belgie
2009
Start digitale distributie (e-books)
2012
Actief in de markten Media, Fashion & Healthcare met 800 mensen in dienst
Integrale logistieke oplossingen Ondertitel van de presentatie 6
Systeemontwikkeling • ~ 40 man/vrouw – – – – –
4 Informatie Analisten/Architecten 2 Technisch Architecten 25 Oracle Ontwikkelaars 4 Scrummasters 4 Testers
• Designer/Developer, Forms, Reports, PL/SQL • Opdracht: Uitfaseren Designer • CB is geinteresseerd in status van Designer bij anderen = De reden dat we hier staan
Integrale logistieke oplossingen Ondertitel van de presentatie 7
Inhoud • Doelstelling van deze sessie • Introductie CB-logistics • Gebruik van Designer bij CB-logistics • Introductie Data Modeler • De standaard import functionaliteit • Omgang met complexe containers • Aanvullingen op de standaard import • Controle van het resultaat • Samenvatting en vragen
Integrale logistieke oplossingen Ondertitel van de presentatie 8
Gebruik van Designer bij CB Upper CASE: • Vastleggen Bedrijfsprocessen en Bedrijfsprocedures (BusinessFunctions) • Gegevensmodel (Entiteiten en ERD) • Structural rules (beperkingsregels aanvullend op ERD->BusinessFunctions) Lower CASE: • Datamodel, Modules en PL/SQL Definitions • Module netwerk (koppelingen tussen diverse onderdelen) • Incidenteel Forms/Reports genereren • Opslag van overige objecten • Versie beheer van objecten • Deployment management (UDS) • Kwaliteitscontrole (selecties op Repository)
Integrale logistieke oplossingen Ondertitel van de presentatie 9
Gebruik van Designer buiten CB? Even enkele vragen aan ‘t publiek: - Wie werkt er bij een bedrijf dat Designer gebruikt? - Wie heeft er ook zo’n kasteel als bij CB? - Designer voor Datamodelleren? - Plannen om binnen nu en 2 jaar Designer uit te faseren? - Nog geen plannen om Designer uit te faseren?
Integrale logistieke oplossingen Ondertitel van de presentatie 10
Soorten objecten in Designer Business functions Entiteiten Domeinen Tabellen, views, types PL/SQL Definitions Modules Forms, reports APEX JCS Pro*C Shell script Java XML, XSD Integrale logistieke oplossingen Ondertitel van de presentatie 11
Upper Case
Lower Case
Gebruik Designer per object soort Object
Ontw
Opslag
Mod netw
Doc
Versie beh
X
X
X
X
X
(PL)SQL
X
X
X
X
X
Forms, Reports
X
X
X
X
X
X
X
X
X
X
X
X
X
Datamodellering
APEX JCS/Cronacle
X
Pro*C Shell script
X
X
X
X
Java
X
X
X
X
XML, XSD
X
X
X
X
Integrale logistieke oplossingen Ondertitel van de presentatie 12
Designer werkt (nog), maar … • Informatie Analisten: Bedrijfsfuncties en processen buiten Designer – Office objecten slecht te integreren in Designer – Doelgroep van Designer is afdeling Automatisering
• Designer wordt niet meer doorontwikkeld: – ‘Moderne database objecten’ (van na ca 2000) worden niet ondersteund -> handmatige acties om code te documenteren in Designer
– Geen moderne ontwikkeltool voor (PL)SQL
• Ontwikkelaars gebruiken liever SQL Developer • Actualiteit van objecten in Designer in gevaar • Onderhouden van Reports érg tijdrovend BI publisher • Oracle Forms blijft, maar steeds meer APEX • Kennis van Designer ‘in de markt’ loopt terug • Ondersteuning op Windows-platform???
Integrale logistieke oplossingen Ondertitel van de presentatie 13
Is er een opvolger voor Designer? • Oracle biedt geen opvolger • Dus moeten we verhuizen…….
Integrale logistieke oplossingen Ondertitel van de presentatie 14
Voorstel nieuwe CB ontwikkelomgeving Forms/Reports APEX JCS/Cronacle …
Data Modeler
Versie controle systeem
- Wie gebruikt SQL Developer? - Wie gebruikt Data Modeler?
SQL Developer
J Developer
Oracle IDE base Integrale logistieke oplossingen Ondertitel van de presentatie 15
VCS plugin
Inhoud • Doelstelling van deze sessie • Introductie CB-logistics • Gebruik van Designer bij CB-logistics • Introductie Data Modeler • De standaard import functionaliteit • Omgang met complexe containers • Aanvullingen op de standaard import • Controle van het resultaat • Samenvatting en vragen
Integrale logistieke oplossingen Ondertitel van de presentatie 16
Introductie Data Modeler Database Development Life Cycle – Strategy and Analysis Phase • Gather requirements • Logical Model – Entity Relationship Diagram
– Design Phase • Define How Model Implemented • Relational Model and Physical Model
– Generation Phase • DDL Scripts to Build Database
Integrale logistieke oplossingen Ondertitel van de presentatie 17
Introductie Data Modeler Logical Data Modeling
Attributes Relationship Entity
• Entities – Things of significance that must be held • Relationships – How these things are related • Attributes – Specific information that must be known Integrale logistieke oplossingen Ondertitel van de presentatie 18
Introductie Data Modeler Database Design
• Describe Database Objects – Tables, Columns, Primary and Foreign Keys
• Relational Model maps to the objects in Logical Model • Physical Model - Based on Relational Model – Tablespaces, Partitions, Users, Procedures, Sequences, Triggers
Integrale logistieke oplossingen Ondertitel van de presentatie 19
Introductie Data Modeler
• Generate SQL Script to Create Database Objects
Integrale logistieke oplossingen Ondertitel van de presentatie 20
Data Modeler lijkt dus een prima optie • Ondersteund het datamodelleringsproces (overeenkomstig Designer) • Designer informatie kan ook nog worden geimporteerd • Dat ziet er dus interessant uit, en is voor ons de reden om hier vanavond verder op in te gaan
Integrale logistieke oplossingen Ondertitel van de presentatie 21
Inhoud • Doelstelling van deze sessie • Introductie CB-logistics • Gebruik van Designer bij CB-logistics • Introductie Data Modeler • De standaard import functionaliteit • Omgang met complexe containers • Aanvullingen op de standaard import • Controle van het resultaat • Samenvatting en vragen
Integrale logistieke oplossingen Ondertitel van de presentatie 22
De standaard import functionaliteiten • Import mogelijk vanuit: – Database (Oracle, SQL Server, DB2) – Modeling tools (Designer, Erwin)
• Vanuit de modeling tools wordt ook de metadata overgehaald • Gebruikte versie Data Modeler: 4.0 EA1
Integrale logistieke oplossingen Ondertitel van de presentatie 23
De standaard import vanuit Designer Stappen: • Verbinding naar Designer database maken • Selecteer Workarea • Selecteer Applicatie Systeem • Selecteer te importeren objecten
Integrale logistieke oplossingen Ondertitel van de presentatie 24
De standaard import vanuit Designer(2) • Genereer design
Integrale logistieke oplossingen Ondertitel van de presentatie 25
Resultaat:
? Integrale logistieke oplossingen Ondertitel van de presentatie 26
Overzicht van een tabel:
?
Foreign key naar view Integrale logistieke oplossingen Ondertitel van de presentatie 27
Detail van een tabel:
Integrale logistieke oplossingen Ondertitel van de presentatie 28
Overzicht van een view:
?
Integrale logistieke oplossingen Ondertitel van de presentatie 29
Detail van een view:
Integrale logistieke oplossingen Ondertitel van de presentatie 30
Data Structure Diagram wordt SubView
Integrale logistieke oplossingen Ondertitel van de presentatie 31
Samenvatting • Vanaf versie 3.3.0.747 / 4.0 is de data kwaliteit van de import goed • De import procedure is eenvoudig
Integrale logistieke oplossingen Ondertitel van de presentatie 32
Inhoud • Doelstelling van deze sessie • Introductie CB-logistics • Gebruik van Designer bij CB-logistics • Introductie Data Modeler • • • •
De standaard import functionaliteit Omgang met complexe containers Aanvullingen op de standaard import Controle van het resultaat
• Samenvatting en vragen
Integrale logistieke oplossingen Ondertitel van de presentatie 33
Een design in Data Modeler
Designer import
Integrale logistieke oplossingen Ondertitel van de presentatie 34
Container met meer schema’s CBS – Content Beheer Systeem
Database CBS
CBS
Database 2
Database 1
Service objecten Integrale logistieke oplossingen Ondertitel van de presentatie 35
Service objecten
Alternatieve import manieren
Container CBS
Service objecten
Design Relational model
Relational model
Design Relational model
Integrale logistieke oplossingen Ondertitel van de presentatie 36
Subview
Subview
Alternatief 1: Opsplitsen in subviews gebaseerd op schema informatie Een subview beschrijft een deel van het model. In dit geval is een subview gelijk aan het schema.
Integrale logistieke oplossingen Ondertitel van de presentatie 37
Alternatief 2: Opsplitsen in relationele modellen gebaseerd op schema informatie
Vanaf 4.0 via:
Oudere versies: handmatig
Integrale logistieke oplossingen Ondertitel van de presentatie 38
Schema informatie toevoegen •
Schema informatie ontbreekt in Designer import -> zelf schema’s aanmaken • Koppeling schema – object ontbreekt -> zelf koppelingen maken
Integrale logistieke oplossingen Ondertitel van de presentatie 39
Let op! Na het toevoegen van de schemainformatie zijn de query teksten van de views niet meer te bewerken via de grafische Query editor! Dit komt door het ontbreken van de schemanaam.
Integrale logistieke oplossingen Ondertitel van de presentatie 40
Performance tip! Selecteer relationeel model waaraan je wilt werken
Integrale logistieke oplossingen Ondertitel van de presentatie 41
Samenvatting • Schema informatie ontbreekt bij Designer import • Opdelen van designs in: – Subviews: voor eenvoudige designs – Relationele modellen: voor complexe designs
Integrale logistieke oplossingen Ondertitel van de presentatie 42
Inhoud • Doelstelling van deze sessie • Introductie CB-logistics • Gebruik van Designer bij CB-logistics • Introductie Data Modeler • • • •
De standaard import functionaliteit Omgang met complexe containers Aanvullingen op de standaard import Controle van het resultaat
• Samenvatting en vragen
Integrale logistieke oplossingen Ondertitel van de presentatie 43
Aanvullingen op standaard import Gebruik van custom transformation scripts voor bijv.: • Toevoegen schema informatie • Structural rules (beperkingsregels aanvullend op ERD->BusinessFunctions)
Transformation scripts zijn java script programma’s en kunnen via Data Modeler gestart worden.
Integrale logistieke oplossingen Ondertitel van de presentatie 44
Transformation script (java script) Aanmaken van een schema en koppel aan objecten // Bestaat schema ? dan alsnog maken schema = model.getSchemaObjectSet().getByName(“CBS"); if (schema === null){ schema = model.getSchemaObjectSet().createSchemaObject(null);
Schema aanmaken
schema.setName(“CBS"); } table = model.getTableSet().getByName(“CONTENT"); if (table !== null){ // bestaat tabel ?, dan koppelen
Tabel koppelen
table.setSchema(schema); // Zoek alle indexen bij tabel en koppel aan schema indexes = table.getIndexes().toArray(); for (var t = 0; t
Indexen koppelen
idx.setSchema(schema); } } view = model.getTableViewSet().getByName("SV_CBS_CLOB_DELEN"); if (view !== null){ // bestaat view ?, dan koppelen view.setSchema(schema); }
Integrale logistieke oplossingen Ondertitel van de presentatie 45
View koppelen
Transformation script genereren uit Designer en verwerken in Data Modeler
Designer
Data Modeler
Design (XML) Ondertitel van de presentatie
Integrale logistieke oplossingen 46
Designer DB
Transformation tool
SQL query
Transformation script
Script toevoegen in library
Integrale logistieke oplossingen Ondertitel van de presentatie 47
Script uitvoeren
Integrale logistieke oplossingen Ondertitel van de presentatie 48
Structural rule informatie
Integrale logistieke oplossingen Ondertitel van de presentatie 49
Java script info = model.getDesign().getBusinessInfoDesign(); document = info.getDocumentSet().createDocument(null); document.setName("SR_CBS_D02"); document.setReference("De Content clob kan alleen gevuld zijn indien filelocatie leeg is en moet dan ook gevuld zijn indien het geen recensie betreft"); document.setType("Structural rule"); document.setComment("Regel\n=====\nIndien de content wordt opgeslagen op het ….."); table = model.getTableSet().getByName("CONTENT"); if (table !== null){ table.addDocument(document); table.setDirty(true);} table = model.getTableSet().getByName("CONTENT_SOORT"); if (table !== null){ table.addDocument(document); table.setDirty(true);}
Integrale logistieke oplossingen Ondertitel van de presentatie 50
Resultaat
Integrale logistieke oplossingen Ondertitel van de presentatie 51
Integrale logistieke oplossingen Ondertitel van de presentatie 52
Inhoud • Doelstelling van deze sessie • Introductie CB-logistics • Gebruik van Designer bij CB-logistics • Introductie Data Modeler • De standaard import functionaliteit • Omgang met complexe containers • Aanvullingen op de standaard import • Controle van het resultaat • Samenvatting en vragen
Integrale logistieke oplossingen Ondertitel van de presentatie 53
Controle van de import Controle van views met Query Builder
Integrale logistieke oplossingen Ondertitel van de presentatie 54
Controle van de import(2) Controle met database import
Designer
DDL script
Generator
Import Import
Data Modeler
Gelijk Integrale logistieke oplossingen ?
Ondertitel van de presentatie 55
Target DB
Import db en vergelijk
Integrale logistieke oplossingen Ondertitel van de presentatie 56
Kolom check constraints In designer is er geen verschil tussen named tabel en kolom constraints
In DM zijn er tabel- en kolomlevel constraints: Bij Designer import worden alle constraints table level constraints Instellen compare opties:
Integrale logistieke oplossingen Ondertitel van de presentatie 57
Controle van de import(3) Vergelijk reporting schema met Designer
Designer
Designer DB Query
Data Modeler
Integrale logistiekeDesign oplossingen Ondertitel van de presentatie (XML) 58
Export
Reporting schema
Export van een design
Integrale logistieke oplossingen Ondertitel van de presentatie 59
Designer query
Vergelijk de foreign keys Reporting schema query select f.child_table_name , f.fk_name , f.object_id from dmrs_foreignkeys f order by f.fk_name;
Tabelnaam ART_PRIJS
FK Data Modeler APS01D
FK Designer
60
Referenced table
Designer container
APS01D
ARTIKEL
ART_ASSBEH
APS09D
CB_DOMEIN_WAARDE
GEN_CENTRAL
APS11D
V_ARTIKEL_BETROKKENE
ART_ASSBEH
Integrale logistieke oplossingen Ondertitel van de presentatie
select t.name, o.name, o.irid, tref.name table_ref, foltref.name container_ref from sdd_oco o , sdd_tab t , sdd_folder_members apptab , sdd_folders fol , sdd_tab tref -- foreign table ref , sdd_folder_members apptref , sdd_folders foltref where t.irid = o.table_ref and apptab.member_object = t.irid and apptab.folder_reference = fol.irid and o.foreign_table_ref = tref.irid and apptref.member_object = tref.irid and apptref.folder_reference = foltref.irid and fol.name = 'ART_ASSBEH' and t.name not like '~%' and o.name not like '%T' --pk and o.name not like '%K' --kolom constraint and o.name not like '%R' --rij constraint and o.constraint_type = 'FOREIGN' and apptref.ownership_flag = 'Y' order by o.name;
Samenvatting • Controle van import is noodzakelijk • Er zijn diverse (te automatiseren) controles mogelijk
Integrale logistieke oplossingen Ondertitel van de presentatie 61
Inhoud • Doelstelling van deze sessie • Introductie CB-logistics • Gebruik van Designer bij CB-logistics • Introductie Data Modeler • De standaard import functionaliteit • Omgang met complexe containers • Aanvullingen op de standaard import • Controle van het resultaat • Samenvatting en vragen
Integrale logistieke oplossingen Ondertitel van de presentatie 62
Do en don’t • Als de import van Designer belangrijk is, gebruik dan uitsluitend DM versie 3.3.0.747 of later • Denk goed na welke import variant je gaat gebruiken • Denk aan performance, een design wordt in z’n geheel in het geheugen gelezen!
Integrale logistieke oplossingen Ondertitel van de presentatie 63
Samenvatting • De standaard import haalt veel informatie over en de kwaliteit is goed • Ontbrekende informatie kan handmatig of via scripts worden toegevoegd • Bepaalde informatie (bijv. Foreign Keys) kan deels verdwijnen, daarom is controle essentieel • Er zijn volgende mogelijkheden om kwaliteitscontroles uit te voeren
Conclusie: Data Modeler is een passend tool ter vervanging van de datamodeling functionaliteit van Designer
Integrale logistieke oplossingen Ondertitel van de presentatie 64
Vragen
?
Contact info:
[email protected] Integrale logistieke oplossingen Ondertitel van de presentatie 65
Bedankt voor de aandacht
Integrale logistieke oplossingen Ondertitel van de presentatie 66