SlideShare a Scribd company logo
1 of 43
TRACKING YOUR DATA
ACROSS THE FOURTH
DIMENSION
Jeremy Cook
CodeDaze 2016
““A temporal database is a database
with built-in support for handling
data involving time…
–Wikipedia
DON’T DATABASES
ALREADY HANDLE TIME
BASED DATA?
DATABASES ARE GOOD AT ‘NOW’
➤ Create
➤ Read
➤ Update
➤ Delete
➤ At any point we only see the current state of the data
SOME TEMPORAL
DATABASE THEORY
““Tonight @JCook21 explained
temporal databases and I’m sure my
brain is now leaking out of my nose…
– Jeff Carouth, https://twitter.com/
jcarouth/status/496842218674470912
TEMPORAL ASPECTS
➤ Term to describe different types of ‘temporality’
➤ Current theory defines three aspects
➤ We use temporal aspects all the time, representing them in a
DB is hard…
DECISION TIME
DECISION TIME
➤ Records the time at which a decision was made
➤ Modelled as a single value
➤ Allows for granularity through the data type used
DECISION TIME
EmpId Name Hire Date Decision to Hire
1 Jeremy 2014-03-03 2014-01-20
2 PJ 2015-01-02 2013-12-15
3 Johnny 2013-08-20 2013-08-20
VALID TIME
““In temporal databases, valid time
(VT) is the time period during which
a database fact is valid in the
modelled reality.
-Wikipedia
VALID TIME
➤ Modelled as a range between two points in time
➤ Lower bound is always closed but upper bound can be open
➤ Also known as Application Time
VALID TIME
EmpId Name Position StartVT EndVT
1 Jeremy Dev 2014-03-03 2015-01-19
1 Jeremy Senior Dev 2015-01-20 ∞
2 PJ Dev 2015-01-02 2016-01-30
2 PJ Manager 2016-01-31 ∞
3 Johnny Director 2013-08-20 2016-09-30
3 Johnny Vice President 2016-10-01 ∞
JOB DONE?
VALID-TIME ON ITS OWN MAY NOT BE ENOUGH…
Name Type StartVT EndVT
Saturn Planet
Billions of years
ago
∞
Pluto Planet
Billions of years
ago
∞
VALID-TIME ON ITS OWN MAY NOT BE ENOUGH…
Name Type StartVT EndVT
Saturn Planet
Billions of years
ago
∞
Pluto Dwarf planet
Billions of years
ago
∞
VALID-TIME ON ITS OWN MAY NOT BE ENOUGH…
Name Type StartVT EndVT
Saturn Planet
Billions of years
ago
∞
Pluto Plutoid
Billions of years
ago
∞
VALID-TIME ON ITS OWN MAY NOT BE ENOUGH…
Name Type StartVT EndVT
Saturn Planet
Billions of years
ago
∞
Pluto Planet
Billions of years
ago
2006
Pluto Dwarf planet 2006 2008
Pluto Plutoid 2008 ∞
TRANSACTION TIME
““In temporal databases, transaction
time (TT) is the time period during
which a fact stored in the database is
considered to be true.”
- Wikipedia
TRANSACTION TIME
➤ Modelled as a range between two points in time
➤ Lower bound is always closed but upper bound can be open
➤ Also known as System Time
TRANSACTION TIME
Name Type StartVT EndVT StartTT EndTT
Pluto Planet
Billions of
years ago
∞ 1930 2006
Pluto
Dwarf
planet
Billions of
years ago
∞ 2006 2008
Pluto Plutoid
Billions of
years ago
∞ 2008 ∞
HOW MANY TEMPORAL ASPECTS SHOULD YOU USE?
➤ As many or few as your application needs!
➤ Tables that implement two aspects are bi-temporal
➤ You can implement more aspects, in which case you have
multi temporal tables
IS YOUR HEAD SPINNING?
➤ Decision time records when a decision was taken
➤ Valid Time records the period of time for which the fact is
valid in the modelled reality
➤ Transaction Time records the period of time for which the fact
is considered to be true in the modelled reality
SQL:2011 TEMPORAL
PERIOD DATA TYPE
➤ Table component, capturing a pair of columns defining a start
and end date
➤ Not a new data type, but metadata about columns in the table
➤ Closed-open constraint
➤ Enforces that end time > start time
VALID TIME
➤ Also called application time in SQL:2011
➤ Modelled as a pair of date or timestamp columns with a
period
➤ Name of the columns and period is up to you
TEMPORAL PRIMARY KEYS
➤ SQL:2011 allows a valid time period to be named as part of a
primary key
➤ Without this how can you trace the evolution of data?
➤ Can also enforce that the valid time periods do not overlap
TEMPORAL FOREIGN KEYS
➤ What happens if a parent and child table both define valid
time periods?
➤ It doesn’t make sense to allow a row in a child table to
reference a row in a parent table where the valid time does
not overlap
➤ SQL:2011 allows valid time periods to be part of foreign key
constraints
➤ For the constraint to be considered satisfied the valid time
period in the child table must be contained within the valid
time period of one or more contiguous rows in the parent
table
QUERYING VALID TIME TABLES
➤ Can query against valid time columns as normal - they’re just
normal table columns
➤ When querying the database you need to specify what valid
time period you’re interested in
➤ Updates and deletes can be performed for a period of a valid
time time period
➤ Can create periods in queries and use new predicates to query
for valid time
TRANSACTION TIME
➤ Also known as system time in SQL:2011
➤ Modelled as two DATE or TIMESTAMP columns
➤ New predicates to query across transaction time periods.
➤ Management of the columns for the period is handled by the
database for you
TRANSACTION TIME
➤ Because the system manages transaction time:
➤ Not possible to alter transaction time values in the past
➤ Not possible to add future dated transaction time values
WHICH VENDORS
SUPPORT SQL:2011?
CURRENT SUPPORT
➤ IBM DB2
➤ Very good support
➤ Oracle 12c
➤ Valid time and transaction time support
➤ SQL Server 2016
➤ Only supports system/transaction time
➤ PostgreSQL
➤ 9.1 and earlier: temporal contributed package
➤ 9.2 native ranged data types
➤ Handful of others implemented as extensions
HOW DO I ADD THIS
STUFF TO MY CURRENT
SCHEMA?
SOME BIG PROBLEMS
➤ Temporal primary keys
➤ Temporal foreign keys
➤ Where are the boundaries of your temporal model?
➤ Making changes in a timeline is hard…
➤ Coaching users about the kind of changes they're making
➤ Querying for the data is harder
IMPLEMENTING VALID TIME - ONE TABLE
➤ Add a pair of date time columns to your table for the valid
time period.
➤ Can make these part of your primary key
➤ Good:
➤ Simpler model
➤ Ugly:
➤ Foreign keys become hard
IMPLEMENTING VALID TIME - TWO TABLES
➤ ‘Main’ table contains data that is valid now
➤ Second table contains data for other valid time periods
➤ Process to ‘promote’ data as it becomes valid
➤ Good:
➤ Easy to retrofit to an existing schema
➤ Ugly:
➤ More processing/logic
➤ What level of granularity can you achieve and accept with
promoting data?
IMPLEMENTING TRANSACTION TIME
➤ Add a column recording transaction time start to your table
➤ For each table create a backup table mirroring the columns in
the main table, adding a transaction time end column too
➤ Create a trigger that fires on each update or delete to copy old
values from the main table to the backup table
➤ Should add transaction time end to the backup table
➤ Should also update the transaction time start to now in the
main table if the operation is an update
IMPLEMENTING TRANSACTION TIME
➤ Things to consider:
➤ Extra complexity
➤ How long should backup data be kept for?
➤ Do you optimize for fast reads or writes?
MORE INFORMATION
➤ Wikipedia article on Temporal Databases
➤ Temporal features in SQL:2011 (PDF)
THANKS FOR LISTENING!
➤ Any questions?
➤ Contact me:
➤ @JCook21
➤ jeremycook0@icloud.com

More Related Content

Similar to Tracking your data across the fourth dimension

Trivadis TechEvent 2017 SQL Server 2016 Temporal Tables by Willfried Färber
Trivadis TechEvent 2017 SQL Server 2016 Temporal Tables by Willfried FärberTrivadis TechEvent 2017 SQL Server 2016 Temporal Tables by Willfried Färber
Trivadis TechEvent 2017 SQL Server 2016 Temporal Tables by Willfried FärberTrivadis
 
Time Travelling With DB2 10 For zOS
Time Travelling With DB2 10 For zOSTime Travelling With DB2 10 For zOS
Time Travelling With DB2 10 For zOSLaura Hood
 
Timo Walther - Table & SQL API - unified APIs for batch and stream processing
Timo Walther - Table & SQL API - unified APIs for batch and stream processingTimo Walther - Table & SQL API - unified APIs for batch and stream processing
Timo Walther - Table & SQL API - unified APIs for batch and stream processingVerverica
 
Apache Flink's Table & SQL API - unified APIs for batch and stream processing
Apache Flink's Table & SQL API - unified APIs for batch and stream processingApache Flink's Table & SQL API - unified APIs for batch and stream processing
Apache Flink's Table & SQL API - unified APIs for batch and stream processingTimo Walther
 
Temporal Tables, Transparent Archiving in DB2 for z/OS and IDAA
Temporal Tables, Transparent Archiving in DB2 for z/OS and IDAATemporal Tables, Transparent Archiving in DB2 for z/OS and IDAA
Temporal Tables, Transparent Archiving in DB2 for z/OS and IDAACuneyt Goksu
 
Temporal Case Management 1998
Temporal Case Management  1998Temporal Case Management  1998
Temporal Case Management 1998David Tryon
 
SQL Extensions to Support Streaming Data With Fabian Hueske | Current 2022
SQL Extensions to Support Streaming Data With Fabian Hueske | Current 2022SQL Extensions to Support Streaming Data With Fabian Hueske | Current 2022
SQL Extensions to Support Streaming Data With Fabian Hueske | Current 2022HostedbyConfluent
 
Dataware house Introduction By Quontra Solutions
Dataware house Introduction By Quontra SolutionsDataware house Introduction By Quontra Solutions
Dataware house Introduction By Quontra SolutionsQuontra Solutions
 
SQL Server Temporal Tables
SQL Server Temporal TablesSQL Server Temporal Tables
SQL Server Temporal TablesGreg McMurray
 
How to Design a Modern Data Warehouse in BigQuery
How to Design a Modern Data Warehouse in BigQueryHow to Design a Modern Data Warehouse in BigQuery
How to Design a Modern Data Warehouse in BigQueryDan Sullivan, Ph.D.
 
Sql 2016 - What's New
Sql 2016 - What's NewSql 2016 - What's New
Sql 2016 - What's Newdpcobb
 
Temporal_Data_Warehouse.pptx
Temporal_Data_Warehouse.pptxTemporal_Data_Warehouse.pptx
Temporal_Data_Warehouse.pptxKulwinder Padda
 
Checking and verifying temporal data
Checking and verifying temporal dataChecking and verifying temporal data
Checking and verifying temporal dataijdms
 
Data Warehouse - What you know about etl process is wrong
Data Warehouse - What you know about etl process is wrongData Warehouse - What you know about etl process is wrong
Data Warehouse - What you know about etl process is wrongMassimo Cenci
 
Real time database
Real time databaseReal time database
Real time databasearvinthsaran
 
Optimize Your Reporting In Less Than 10 Minutes
Optimize Your Reporting In Less Than 10 MinutesOptimize Your Reporting In Less Than 10 Minutes
Optimize Your Reporting In Less Than 10 MinutesAlexandra Sasha Blumenfeld
 

Similar to Tracking your data across the fourth dimension (20)

Trivadis TechEvent 2017 SQL Server 2016 Temporal Tables by Willfried Färber
Trivadis TechEvent 2017 SQL Server 2016 Temporal Tables by Willfried FärberTrivadis TechEvent 2017 SQL Server 2016 Temporal Tables by Willfried Färber
Trivadis TechEvent 2017 SQL Server 2016 Temporal Tables by Willfried Färber
 
Time Travelling With DB2 10 For zOS
Time Travelling With DB2 10 For zOSTime Travelling With DB2 10 For zOS
Time Travelling With DB2 10 For zOS
 
Timo Walther - Table & SQL API - unified APIs for batch and stream processing
Timo Walther - Table & SQL API - unified APIs for batch and stream processingTimo Walther - Table & SQL API - unified APIs for batch and stream processing
Timo Walther - Table & SQL API - unified APIs for batch and stream processing
 
Apache Flink's Table & SQL API - unified APIs for batch and stream processing
Apache Flink's Table & SQL API - unified APIs for batch and stream processingApache Flink's Table & SQL API - unified APIs for batch and stream processing
Apache Flink's Table & SQL API - unified APIs for batch and stream processing
 
Temporal Tables, Transparent Archiving in DB2 for z/OS and IDAA
Temporal Tables, Transparent Archiving in DB2 for z/OS and IDAATemporal Tables, Transparent Archiving in DB2 for z/OS and IDAA
Temporal Tables, Transparent Archiving in DB2 for z/OS and IDAA
 
Temporal Case Management 1998
Temporal Case Management  1998Temporal Case Management  1998
Temporal Case Management 1998
 
SQL Extensions to Support Streaming Data With Fabian Hueske | Current 2022
SQL Extensions to Support Streaming Data With Fabian Hueske | Current 2022SQL Extensions to Support Streaming Data With Fabian Hueske | Current 2022
SQL Extensions to Support Streaming Data With Fabian Hueske | Current 2022
 
Databases
DatabasesDatabases
Databases
 
Dataware house Introduction By Quontra Solutions
Dataware house Introduction By Quontra SolutionsDataware house Introduction By Quontra Solutions
Dataware house Introduction By Quontra Solutions
 
ACS DataMart_ppt
ACS DataMart_pptACS DataMart_ppt
ACS DataMart_ppt
 
ACS DataMart_ppt
ACS DataMart_pptACS DataMart_ppt
ACS DataMart_ppt
 
tempDB.ppt
tempDB.ppttempDB.ppt
tempDB.ppt
 
SQL Server Temporal Tables
SQL Server Temporal TablesSQL Server Temporal Tables
SQL Server Temporal Tables
 
How to Design a Modern Data Warehouse in BigQuery
How to Design a Modern Data Warehouse in BigQueryHow to Design a Modern Data Warehouse in BigQuery
How to Design a Modern Data Warehouse in BigQuery
 
Sql 2016 - What's New
Sql 2016 - What's NewSql 2016 - What's New
Sql 2016 - What's New
 
Temporal_Data_Warehouse.pptx
Temporal_Data_Warehouse.pptxTemporal_Data_Warehouse.pptx
Temporal_Data_Warehouse.pptx
 
Checking and verifying temporal data
Checking and verifying temporal dataChecking and verifying temporal data
Checking and verifying temporal data
 
Data Warehouse - What you know about etl process is wrong
Data Warehouse - What you know about etl process is wrongData Warehouse - What you know about etl process is wrong
Data Warehouse - What you know about etl process is wrong
 
Real time database
Real time databaseReal time database
Real time database
 
Optimize Your Reporting In Less Than 10 Minutes
Optimize Your Reporting In Less Than 10 MinutesOptimize Your Reporting In Less Than 10 Minutes
Optimize Your Reporting In Less Than 10 Minutes
 

More from Jeremy Cook

Unit test your java architecture with ArchUnit
Unit test your java architecture with ArchUnitUnit test your java architecture with ArchUnit
Unit test your java architecture with ArchUnitJeremy Cook
 
Beyond MVC: from Model to Domain
Beyond MVC: from Model to DomainBeyond MVC: from Model to Domain
Beyond MVC: from Model to DomainJeremy Cook
 
Beyond MVC: from Model to Domain
Beyond MVC: from Model to DomainBeyond MVC: from Model to Domain
Beyond MVC: from Model to DomainJeremy Cook
 
Accelerate your web app with a layer of Varnish
Accelerate your web app with a layer of VarnishAccelerate your web app with a layer of Varnish
Accelerate your web app with a layer of VarnishJeremy Cook
 
Turbo charge your logs
Turbo charge your logsTurbo charge your logs
Turbo charge your logsJeremy Cook
 
Turbo charge your logs
Turbo charge your logsTurbo charge your logs
Turbo charge your logsJeremy Cook
 
PHPUnit: from zero to hero
PHPUnit: from zero to heroPHPUnit: from zero to hero
PHPUnit: from zero to heroJeremy Cook
 

More from Jeremy Cook (7)

Unit test your java architecture with ArchUnit
Unit test your java architecture with ArchUnitUnit test your java architecture with ArchUnit
Unit test your java architecture with ArchUnit
 
Beyond MVC: from Model to Domain
Beyond MVC: from Model to DomainBeyond MVC: from Model to Domain
Beyond MVC: from Model to Domain
 
Beyond MVC: from Model to Domain
Beyond MVC: from Model to DomainBeyond MVC: from Model to Domain
Beyond MVC: from Model to Domain
 
Accelerate your web app with a layer of Varnish
Accelerate your web app with a layer of VarnishAccelerate your web app with a layer of Varnish
Accelerate your web app with a layer of Varnish
 
Turbo charge your logs
Turbo charge your logsTurbo charge your logs
Turbo charge your logs
 
Turbo charge your logs
Turbo charge your logsTurbo charge your logs
Turbo charge your logs
 
PHPUnit: from zero to hero
PHPUnit: from zero to heroPHPUnit: from zero to hero
PHPUnit: from zero to hero
 

Recently uploaded

Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 

Recently uploaded (20)

Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

Tracking your data across the fourth dimension

  • 1. TRACKING YOUR DATA ACROSS THE FOURTH DIMENSION Jeremy Cook CodeDaze 2016
  • 2. ““A temporal database is a database with built-in support for handling data involving time… –Wikipedia
  • 4. DATABASES ARE GOOD AT ‘NOW’ ➤ Create ➤ Read ➤ Update ➤ Delete ➤ At any point we only see the current state of the data
  • 6. ““Tonight @JCook21 explained temporal databases and I’m sure my brain is now leaking out of my nose… – Jeff Carouth, https://twitter.com/ jcarouth/status/496842218674470912
  • 7. TEMPORAL ASPECTS ➤ Term to describe different types of ‘temporality’ ➤ Current theory defines three aspects ➤ We use temporal aspects all the time, representing them in a DB is hard…
  • 9. DECISION TIME ➤ Records the time at which a decision was made ➤ Modelled as a single value ➤ Allows for granularity through the data type used
  • 10. DECISION TIME EmpId Name Hire Date Decision to Hire 1 Jeremy 2014-03-03 2014-01-20 2 PJ 2015-01-02 2013-12-15 3 Johnny 2013-08-20 2013-08-20
  • 12. ““In temporal databases, valid time (VT) is the time period during which a database fact is valid in the modelled reality. -Wikipedia
  • 13. VALID TIME ➤ Modelled as a range between two points in time ➤ Lower bound is always closed but upper bound can be open ➤ Also known as Application Time
  • 14. VALID TIME EmpId Name Position StartVT EndVT 1 Jeremy Dev 2014-03-03 2015-01-19 1 Jeremy Senior Dev 2015-01-20 ∞ 2 PJ Dev 2015-01-02 2016-01-30 2 PJ Manager 2016-01-31 ∞ 3 Johnny Director 2013-08-20 2016-09-30 3 Johnny Vice President 2016-10-01 ∞
  • 16. VALID-TIME ON ITS OWN MAY NOT BE ENOUGH… Name Type StartVT EndVT Saturn Planet Billions of years ago ∞ Pluto Planet Billions of years ago ∞
  • 17. VALID-TIME ON ITS OWN MAY NOT BE ENOUGH… Name Type StartVT EndVT Saturn Planet Billions of years ago ∞ Pluto Dwarf planet Billions of years ago ∞
  • 18. VALID-TIME ON ITS OWN MAY NOT BE ENOUGH… Name Type StartVT EndVT Saturn Planet Billions of years ago ∞ Pluto Plutoid Billions of years ago ∞
  • 19. VALID-TIME ON ITS OWN MAY NOT BE ENOUGH… Name Type StartVT EndVT Saturn Planet Billions of years ago ∞ Pluto Planet Billions of years ago 2006 Pluto Dwarf planet 2006 2008 Pluto Plutoid 2008 ∞
  • 21. ““In temporal databases, transaction time (TT) is the time period during which a fact stored in the database is considered to be true.” - Wikipedia
  • 22. TRANSACTION TIME ➤ Modelled as a range between two points in time ➤ Lower bound is always closed but upper bound can be open ➤ Also known as System Time
  • 23. TRANSACTION TIME Name Type StartVT EndVT StartTT EndTT Pluto Planet Billions of years ago ∞ 1930 2006 Pluto Dwarf planet Billions of years ago ∞ 2006 2008 Pluto Plutoid Billions of years ago ∞ 2008 ∞
  • 24. HOW MANY TEMPORAL ASPECTS SHOULD YOU USE? ➤ As many or few as your application needs! ➤ Tables that implement two aspects are bi-temporal ➤ You can implement more aspects, in which case you have multi temporal tables
  • 25. IS YOUR HEAD SPINNING? ➤ Decision time records when a decision was taken ➤ Valid Time records the period of time for which the fact is valid in the modelled reality ➤ Transaction Time records the period of time for which the fact is considered to be true in the modelled reality
  • 27. PERIOD DATA TYPE ➤ Table component, capturing a pair of columns defining a start and end date ➤ Not a new data type, but metadata about columns in the table ➤ Closed-open constraint ➤ Enforces that end time > start time
  • 28. VALID TIME ➤ Also called application time in SQL:2011 ➤ Modelled as a pair of date or timestamp columns with a period ➤ Name of the columns and period is up to you
  • 29. TEMPORAL PRIMARY KEYS ➤ SQL:2011 allows a valid time period to be named as part of a primary key ➤ Without this how can you trace the evolution of data? ➤ Can also enforce that the valid time periods do not overlap
  • 30. TEMPORAL FOREIGN KEYS ➤ What happens if a parent and child table both define valid time periods? ➤ It doesn’t make sense to allow a row in a child table to reference a row in a parent table where the valid time does not overlap ➤ SQL:2011 allows valid time periods to be part of foreign key constraints ➤ For the constraint to be considered satisfied the valid time period in the child table must be contained within the valid time period of one or more contiguous rows in the parent table
  • 31. QUERYING VALID TIME TABLES ➤ Can query against valid time columns as normal - they’re just normal table columns ➤ When querying the database you need to specify what valid time period you’re interested in ➤ Updates and deletes can be performed for a period of a valid time time period ➤ Can create periods in queries and use new predicates to query for valid time
  • 32. TRANSACTION TIME ➤ Also known as system time in SQL:2011 ➤ Modelled as two DATE or TIMESTAMP columns ➤ New predicates to query across transaction time periods. ➤ Management of the columns for the period is handled by the database for you
  • 33. TRANSACTION TIME ➤ Because the system manages transaction time: ➤ Not possible to alter transaction time values in the past ➤ Not possible to add future dated transaction time values
  • 35. CURRENT SUPPORT ➤ IBM DB2 ➤ Very good support ➤ Oracle 12c ➤ Valid time and transaction time support ➤ SQL Server 2016 ➤ Only supports system/transaction time ➤ PostgreSQL ➤ 9.1 and earlier: temporal contributed package ➤ 9.2 native ranged data types ➤ Handful of others implemented as extensions
  • 36. HOW DO I ADD THIS STUFF TO MY CURRENT SCHEMA?
  • 37. SOME BIG PROBLEMS ➤ Temporal primary keys ➤ Temporal foreign keys ➤ Where are the boundaries of your temporal model? ➤ Making changes in a timeline is hard… ➤ Coaching users about the kind of changes they're making ➤ Querying for the data is harder
  • 38. IMPLEMENTING VALID TIME - ONE TABLE ➤ Add a pair of date time columns to your table for the valid time period. ➤ Can make these part of your primary key ➤ Good: ➤ Simpler model ➤ Ugly: ➤ Foreign keys become hard
  • 39. IMPLEMENTING VALID TIME - TWO TABLES ➤ ‘Main’ table contains data that is valid now ➤ Second table contains data for other valid time periods ➤ Process to ‘promote’ data as it becomes valid ➤ Good: ➤ Easy to retrofit to an existing schema ➤ Ugly: ➤ More processing/logic ➤ What level of granularity can you achieve and accept with promoting data?
  • 40. IMPLEMENTING TRANSACTION TIME ➤ Add a column recording transaction time start to your table ➤ For each table create a backup table mirroring the columns in the main table, adding a transaction time end column too ➤ Create a trigger that fires on each update or delete to copy old values from the main table to the backup table ➤ Should add transaction time end to the backup table ➤ Should also update the transaction time start to now in the main table if the operation is an update
  • 41. IMPLEMENTING TRANSACTION TIME ➤ Things to consider: ➤ Extra complexity ➤ How long should backup data be kept for? ➤ Do you optimize for fast reads or writes?
  • 42. MORE INFORMATION ➤ Wikipedia article on Temporal Databases ➤ Temporal features in SQL:2011 (PDF)
  • 43. THANKS FOR LISTENING! ➤ Any questions? ➤ Contact me: ➤ @JCook21 ➤ jeremycook0@icloud.com