Data dictionary, domain modelling
and how to make things easy
Passenger Terminal Conference 2014
2014-03-26
Barcelona, Spa...
Ole Nymoen
• Owns 46 airports
• 46 million passengers
• 814.000 movements
• 9 billion NOK operating
income
• We are Norway...
The chalenges
• New Airport Operational DataBase (AODB)
• New vendor
• Integrations
• Understanding each other
• Different...
The solution (to some of it)
• Define a new common language (data dictionary)
• Define data models that fits the domain
• ...
Data dictionary – what and why
• “What is a data dictionary” – Google it ;-)
• Many things to many people
• Definition of ...
Data dictionary - how we made it
• Bottom up
• In cooperation with vendor
• Avinor and vendor had “all+++” terms already
•...
Data dictionary – what we made
• About 300 terms defined
• Instantiated in XML
Data dictionary, domain modelling and how t...
Data dictionary - examples
ACGT Actual Commencement of Ground Handling Time. The time when
ground handling on an aircraft ...
Data dictionary - examples (the last)
AircraftChapter Aircraft chapter code. Defines an aircraft type in terms of its
cert...
Where are the Data Dictionary used?
• Domain models
• Integrations (canonical format)
• Interfaces
• Databases
• Spoken la...
Domain model – what is that?
• Another “many things to many people”
• At the end of the day – data structures defining the...
«All» about a flight leg (for integration)
class FlightLegData - main entities
«XSDcomplexType»
FlightLegData
+ flightLegI...
XML definitions
Data dictionary, domain modelling and how to make things easy
Passenger Terminal Conference 2014
Integrations
• Why all the fuss – integrations are easy and fun.
But require:
• Clearly defined responsibility
• Well docu...
Integrations done «right»
• Common data format
• Transformations done at the edges – NOT in the middle
Data dictionary, do...
The takeaway
• It takes a lot of work to create
a good data dictionary and
domain model
• Do it and use them everywhere!
•...
Thank you
Data dictionary, domain modelling and how to make things easy
Passenger Terminal Conference 2014
• ole.nymoen@av...
Upcoming SlideShare
Loading in...5
×

Data dictionary, domain modelling and making things easy

1,222

Published on

Ole Nymoen of Norwegian airport operator looks at how a common data language can provide a framework for easier airport-to-airport integration. Ole is the technical architect for Avinor's multi-airport operational database project, centralising all operational platforms for 46 airports in to a single instance.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,222
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
35
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Data dictionary, domain modelling and making things easy"

  1. 1. Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014 2014-03-26 Barcelona, Spain ole.nymoen@avinor.no Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  2. 2. Ole Nymoen • Owns 46 airports • 46 million passengers • 814.000 movements • 9 billion NOK operating income • We are Norway (almost) Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014 Avinor • 32+ years in IT • Operations, developer, it-architect
  3. 3. The chalenges • New Airport Operational DataBase (AODB) • New vendor • Integrations • Understanding each other • Different terminology • Missing documentation • … Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  4. 4. The solution (to some of it) • Define a new common language (data dictionary) • Define data models that fits the domain • Mandate their use “everywhere” Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014 But • Keep it simple • Be pragmatic • Ok to spend some time up front if it saves time later • No magic, no rocket science, easy to use, good documentation
  5. 5. Data dictionary – what and why • “What is a data dictionary” – Google it ;-) • Many things to many people • Definition of terms • One “thing” – one term and one definition Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  6. 6. Data dictionary - how we made it • Bottom up • In cooperation with vendor • Avinor and vendor had “all+++” terms already • Often very loosely documented • Defined by usage in different contexts • Needed to be precisely defined Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  7. 7. Data dictionary – what we made • About 300 terms defined • Instantiated in XML Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  8. 8. Data dictionary - examples ACGT Actual Commencement of Ground Handling Time. The time when ground handling on an aircraft starts, can be equal to "AIBT" (to be determined locally). Always UTC time. datetime AcdmStatus A-CDM (Airport Collaborate Decision Making) status codes. Planning phase: - SCH Scheduled - INI Initiated Arrival phase: - AIR Airborne - FIR Flight entered local FIR - FNL Final - ARR Landed Ground phase: - IBK In-Block - BRD Boarding - RDY Ready Departure phase: - OBK Off-Block - RDI Ready for de-icing - DEI De-icing in progress - DEP Departedramp string(4) AircraftBearing The direction the aircraft is flying. Legal values are 0 - 359 (inclusive and clockwise) and is given relative to magnetic north. integer Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  9. 9. Data dictionary - examples (the last) AircraftChapter Aircraft chapter code. Defines an aircraft type in terms of its certificated noise level. For example, chapter 2 aircraft are characterised by the noisier, low bypass turbofan aircraft and early high bypass turbofan aircraft; chapter 3 aircraft are characterised by the modern, quieter, high bypass turbofan aircraft; chapter 4 aircraft are aircraft which are likely to have previously been classified as chapter 3 but are deemed to have met even more stringent standards. Note: chapter 1 is not an official classification but is / was sometimes used to indicate excessively noisy (e.g. older) aircraft, for example Concorde. Allowable values defined in aircraft chapter reference data table. string(4) Wake Turbulence Category The ICAO wake turbulence category is based on the maximum certificated take-off mass, as follows: - L (Light) aircraft types of 7 000 kg (15 500 lb) or less. - M (Medium) aircraft types less than 136 000 kg (300 000 lb) and more than 7 000 kg (15 500 lb) - H (Heavy) aircraft types of 136 000 kg (300 000 lb) or more - J (Super Heavy) for Airbus A380-800 and other of this size. string(1) Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  10. 10. Where are the Data Dictionary used? • Domain models • Integrations (canonical format) • Interfaces • Databases • Spoken language • Use them everywhere! Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  11. 11. Domain model – what is that? • Another “many things to many people” • At the end of the day – data structures defining the interesting things in your domain • Creates order, impose structure • Initially our domain are flight related information Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  12. 12. «All» about a flight leg (for integration) class FlightLegData - main entities «XSDcomplexType» FlightLegData + flightLegIdentifier :FlightLegIdentifier + aircraftData :AircraftData [0..1] + passengerData :PassengerData [0..1] + departureData :DepartureData [0..1] + arrivalData :ArrivalData [0..1] + chargeBorderCrossing :ChargeBorderCrossing [0..*] + codeShareData :CodeShareData [0..*] + operatingAirlineIATA :AirlineIATA [0..1] + operatingAirlineICAO :AirlineICAO [0..1] + operatingAirlineTicketed :AirlineIATAorICAO [0..1] + flightLegStatus :FlightLegStatus [0..1] + acdmStatus :AcdmStatus [0..1] + flightServiceTypeIATA :FlightServiceTypeIATA [0..1] + flightServiceTypeICAO :FlightServiceTypeICAO [0..1] + flightServiceTypeExtended :FlightServiceTypeExtended [0..1] + flightIsMultiLeg :boolean [0..1] + militaryFlightOwner :MilitaryFlightOwner [0..1] + numberOfAircraft :Count [0..1] + nextInformationTime :DateTimeUTC [0..1] + remark :Remark [0..*] «XSDcomplexType» FlightLegIdentifier + ifplid :IFPLID [0..1] + callsign :Callsign [0..1] + aircraftRegistration :AircraftRegistration [0..1] + ssrCode :SSRCode [0..1] + flightId :FlightId [0..1] + flightDepartureDate :DateUTC [0..1] + departureAirportIATA :AirportIATA [0..1] + arrivalAirportIATA :AirportIATA [0..1] + departurelAirportICAO :AirportICAO [0..1] + arrivalAirportICAO :AirportICAO [0..1] «XSDcomplexType» AircraftData + aircraftOwnerIATA :AircraftOwnerIATA [0..1] + aircraftOwnerICAO :AircraftOwnerICAO [0..1] + aircraftIATAType :AircraftIATAType [0..1] + aircraftICAOType :AircraftICAOType [0..1] + aircraftSeatingCapacity :Count [0..1] + aircraftSeatingAvailable :Count [0..1] + aircraftTailNumber :AircraftTailNumber [0..1] + aircraftConfigVersion :AircraftConfigVersion [0..1] + crewActiveOnBoard :Count [0..1] + crewPassiveOnBoard :Count [0..1] + baggageData :BaggageData [0..1] + cargoData :CargoData [0..1] + aircraftMTOW :Kilo [0..1] + aircraftNumberOfEngines :Count [0..1] + aircraftEngineType :AircraftEngineType [0..1] + aircraftHorsePower :HorsePower [0..1] + aircraftThrust :KiloNewton [0..1] + aircraftNOx :Gram [0..1] + aircraftChapter :AircraftChapter [0..1] + aircraftIsNoiseCertificated :boolean [0..1] + wakeTurbulenceCategory :WakeTurbulenceCategory [0..1] «XSDcomplexType» PassengerData + paxAdultOnBoard :Count [0..1] + paxChildOnBoard :Count [0..1] + paxInfantOnBoard :Count [0..1] + paxSeatedOnBoard :Count [0..1] + paxTransit :Count [0..1] + personsOnBoard :Count [0..1] «XSDcomplexType» CodeShareData + codeShareFlightNumber :FlightNumber + codeShareAirlineIATA :AirlineIATA [0..1] + codeShareAirlineICAO :AirlineICAO [0..1] + codeShareAirlineTicketed :AirlineIATAorICAO [0..1] «XSDcomplexType» ArrivalData + arrivalSecurityIndicator :AirportSecurityIndicator [0..1] + handlerArrival :HandlerData [0..*] + aircraftParkingPosition :AircraftParkingPosition [0..1] + flightStopIsTechnical :boolean [0..1] + paxCanDisembark :boolean [0..1] + paxBusIsNeeded :boolean [0..1] + runwayArrival :Runway [0..1] + mttt :duration [0..1] + ettt :duration [0..1] + eldt :DateTimeUTC [0..1] + eldtAccuracy :EstimatedTimeAccuracy [0..1] + tldt :DateTimeUTC [0..1] + aldt :DateTimeUTC [0..1] + sibt :DateTimeUTC [0..1] + eibt :DateTimeUTC [0..1] + aibt :DateTimeUTC [0..1] + exit :duration [0..1] + axit :duration [0..1] + acgt :DateTimeUTC [0..1] + aegt :DateTimeUTC [0..1] + aght :duration [0..1] + arrivalDelay :Delay [0..*] «XSDcomplexType» DepartureData + departureSecurityIndicator :AirportSecurityIndicator [0..1] + flightDIIndicator :DIIndicator [0..1] + flightRule :FlightRule [0..1] + handlerDeparture :HandlerData [0..*] + aircraftParkingPosition :AircraftParkingPosition [0..1] + fuelRampRequested :Kilo [0..1] + paxCanEmbark :boolean [0..1] + checkInData :CheckInData [0..*] + gateData :GateData [0..*] + paxBusIsNeeded :boolean [0..1] + runwayDeparture :Runway [0..1] + asbt :DateTimeUTC [0..1] + asrt :DateTimeUTC [0..1] + tsat :DateTimeUTC [0..1] + asat :DateTimeUTC [0..1] + ardt :DateTimeUTC [0..1] + sobt :DateTimeUTC [0..1] + eobt :DateTimeUTC [0..1] + tobt :DateTimeUTC [0..1] + aobt :DateTimeUTC [0..1] + erzt :DateTimeUTC [0..1] + arzt :DateTimeUTC [0..1] + eczt :DateTimeUTC [0..1] + aczt :DateTimeUTC [0..1] + eezt :DateTimeUTC [0..1] + aezt :DateTimeUTC [0..1] + edit :duration [0..1] + adit :duration [0..1] + ctot :DateTimeUTC [0..1] + etot :DateTimeUTC [0..1] + ttot :DateTimeUTC [0..1] + atot :DateTimeUTC [0..1] + exot :duration [0..1] + axot :duration [0..1] + departureDelay :Delay [0..*] + returnToRampTime :DateTimeUTC [0..1] «XSDcomplexType» ChargeBorderCrossing + nextChargingArea :ChargingArea [0..1] + previousChargingArea :ChargingArea [0..1] + position4D :Position4D [0..1] 10..* 1 0..1 10..1 1 0..1 11 1 0..1 1 0..* Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  13. 13. XML definitions Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  14. 14. Integrations • Why all the fuss – integrations are easy and fun. But require: • Clearly defined responsibility • Well documented data and business rules • Good architecture • Why do we often end up with the thing on the right? Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  15. 15. Integrations done «right» • Common data format • Transformations done at the edges – NOT in the middle Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014 cmp Integration done right Messaging infrastructure, canonical data formats System A System B System C Sys A Connect Sys B Connect Sys C Conenct
  16. 16. The takeaway • It takes a lot of work to create a good data dictionary and domain model • Do it and use them everywhere! • Having a data dictionary and good data definitions is magic Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014 The one with a good DD
  17. 17. Thank you Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014 • ole.nymoen@avinor.no • Questions?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×