Your SlideShare is downloading. ×
Data dictionary, domain modelling and making things easy
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Data dictionary, domain modelling and making things easy

884
views

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 …

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
884
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. «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. XML definitions Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014
  • 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. 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. 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. Thank you Data dictionary, domain modelling and how to make things easy Passenger Terminal Conference 2014 • ole.nymoen@avinor.no • Questions?