 Good morning. Thank you for coming early in the morning and gave up your sleep to listen to me. I hope you'll find it useful and ours. I have been doing research in temporal databases since 1985. That's when my first article appeared in ACM-SIGMAT management of data conference. In those days, temporality was an academic curiosity and it is really interesting and somewhat gratifying for me to see that temporality is moving in the mainstream of information technology. That's really an exciting development. Actually, my talk will be somewhat cursory without going into details. I'll touch on many topics from basic concepts to modeling temporal data, temporal operations, temporal cura languages, expressive power of temporal data models, integrity constraints, and designing temporal databases. Of course, that would be half a day or a day-long presentation. I'll briefly touch on them. Feel free to interrupt me at any time to ask your questions or to make your comments. And also, this is a very conceptual presentation, unlike the other postgres presentations. So I promise you that you'll not see a single line of postgres code. Well, why do we need temporal databases? Here you see various cases that I have cut and pasted from an IBM website that introduces temporal databases. Like in an internal audit, you need to see the transactions in the last five years. Or pending laws requires that in a hospital, the patient treatment before another treatment started. So they all involve temporality. A client files a claim to insurance company and the claim needs to be processed according to the policy specifications that were valid when the incident occurred. And that certainly requires temporality. And here are some other cases, and I don't really need to go over them to convert you. I guess you all see the need. Here are some transactions that involve OLTP as well as OLAP. And of course, typically in a database environment, the database is geared to OLTP. But of course, OLAP functionality is also highly desirable. It is more desirable than in the past today. Well, what is temporal data? Actually, our intuition tells us that the data is something current. However, if we scratch it a little, the data really has a temporal dimension. The data has a temporal context. And nowadays, of course, big data is the hot topic. And what fuels big data is high volume, high velocity, and high variety. When we add temporal dimension to the data, then it becomes long data, as suggested by Samuel Eddinson. So truly, long data is feasible today. We can store, retrieve, and massage it. What are the characteristics of time and data? Clearly, it is ubiquitous. It is everywhere. And in today's technology, we have the capacity to capture, store, and process it. And definitely, it is essential for every aspect of human decision making, regardless of whether it is economic or industrial activity. From prediction to analysis, strategy, accountability, etc. Well, how do I see time? Actually, you can visualize time in different ways. And I will propose you a simple visualization. Time starts at relative origin, let's say zero. And it progresses as the clock ticks. And the current time is represented as now. We can use the calendars values as you see on the second line. Or we can use integers, zero, one, two, etc. Because the calendar times nicely maps to integers. And of course, time granularities, we are well versed in them. And the conversion from one time granularity to another time granularity is very well explored. Now, how we visualize time and data generation? Here is a simple example, as you see. At the top, you see the timeline. And to make things a little abstract, I don't know why I did it. Instead of using zeros and ones, I used time, instant zero, time, instant one. That doesn't really matter. And events take place as the clock ticks. As you see, event E1 took place at time point two. And event E3 took place at time instant E5. Now, events generate data, and we're able to capture that data. In capturing the data, we have to connect the data values with the relevant time. Here are three choices available. Our intuition tells us that the events occur at time instances, like the first one here at T2, event E1 took place. And at T5, event two took place. So as an example, for instance, let's say an employee started working at 1.2014 in the toy department. Of course, this is very intuitive. However, for capturing the temporal reality, it is incomplete. And a better solution is using time intervals that are designated by a lower and an upper bound. And if you look at the example, the toy department, actually the employee in the toy department, worked from 1.2013 to 5.2014. And of course, this is a very compact and complete representation. Still another possibility is using temporal elements that was introduced by Shashi Gadia, a prominent researcher in temporal databases. And here, a temporal element, as you see at the bottom line, is nothing but a union of maximal intervals, designating the time of event. What are the data types that we are dealing in a temporal database? Actually, in reality, we can identify three types of data. The first one is stepwise constant. That is, an example is a salary. The salary value is valid for a certain period of time. And the changes are abrupt and stepwise. Still another type of data is like sales that are valid at a time instance. A third type is analog continuous data like the voice. So in a temporal database, we have to deal with all of them. Now, when we consider temporal data, I will use the relational data model as a presentation medium. Typically what you see at the front is a simple table, employee name and salary, right? And the current snapshot is within the circle as you see it. And behind the current snapshot, there are the past values. So as you see, there is a third dimension. So that is how the reality evolves. Actually, we typically see it as snapshots occurring one after another at the clock ticks. In any temporal data modeling, the challenge is how we represent this three-dimensional structure, whether it is an object-oriented database, a relational database, entity relationship, whatever data model you are using. So the time you see here is actually called valid time that shows the validity period of the values. There are other names for that, like business time, logical time. For instance, in IBM DB2, it's called business time. Even effective time, if I remember correctly, is used. Now let's look at the evolution of the data over time. Now 1114, this is the three-dimensional structure we have. Now let's look at a transaction that happens at 6114. N got a promotion, the salary moves from 12k to 13k. And Tom got a promotion, the salary is from 15k to 16k. And as you see, they are the current values. And if I have drawn my diagram correctly, the previous values should be behind those values, right? But I was not that prudent in drawing the picture or the diagram. Now let's continue with as the clock ticks. And now there is a correction at 9114. The correction says N salary was not 14k, but it was 14k, but not 13k. And similarly, Tom's salary was 17k, but not 16k. And as you see at the current snapshot, it is shown. What we see actually in the database is a correct and complete history. Now if you ask a question as of let's say 10114 about the salary of N and Tom, you'll get this. This is the correct answer. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. You'll get this. is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is