iT邦幫忙

4

關於 Temporal table

今天在 https://ithelp.ithome.com.tw/questions/10196349 這個討論中,
ckp6250 兄提到了這樣功能,鑑於那裡不方便討論,在此補充一些資料.

首先來看一位電腦科學家 https://en.wikipedia.org/wiki/Richard_T._Snodgrass

還有著作  Developing Time-Oriented Database Applications in SQL
1999年出版的.
https://www2.cs.arizona.edu/~rts/tdbbook.pdf 

關於此類探討的書籍還有 Joe Celko's SQL for Smarties: Advanced SQL Programming 
Joe Celko 在我之前寫的系列有介紹.
都是 Morgan Kaufmann 出版的,這家出了蠻多好書.
有興趣往電腦科學方向研究的,可以在這家出版社的書,學到不少好東西.

後來在 ANSI SQL 2011 標準,就有引進相關語法.可以參考 IBM 的一份簡報
http://metadata-standards.org/Document-library/Documents-by-number/WG2-N1501-N1550/WG2_N1536_koa046-Temporal-features-in-SQL-standard.pdf

Postgresql 從9.2版開始有timestamp range data type. 可以搭配 temporal tables extension
可以參考這份介紹

http://clarkdave.net/2015/02/historical-records-with-postgresql-and-temporal-tables-and-sql-2011/

另外還有 
https://pgxn.org/dist/table_version/1.5.0/

Postgrsql 關於此功能還有很多,例如 
https://pgxn.org/dist/e-maj/
還發展了 Web Client 介面
https://emaj.readthedocs.io/en/latest/webUsage.html

但是 Postgresql 的方式與 ANSI SQL 標準不同.

在很久以前的 Postgresql 是有 Time Travel, 後來因為效能等等因素就不再支持.
https://www.postgresql.org/docs/6.3/c0503.htm

SQL Server 在 2016年開始支持
https://channel9.msdn.com/Shows/Data-Exposed/Temporal-in-SQL-Server-2016

https://www.mssqltips.com/sqlservertip/3680/introduction-to-sql-server-temporal-tables/

https://docs.microsoft.com/zh-tw/sql/relational-databases/tables/temporal-tables?view=sql-server-ver15

MariaDB 在 10.3.4 版開始支援

https://mariadb.com/kb/en/library/temporal-data-tables/

SQL Server 與 MariaDB 只是部分功能支援. 以 System-versioned tables 為主.
Application-versioned tables 都還沒支援.
 
Oracle 在 10g (2005年) Support, 
有興趣的可以查詢 Oracle Flashback Query,還有 DBMS_FLASHBACK Package.

IBM DB2 在 Version 10 (2010年),有許多ANSI SQL 功能 DB2 支持的很好.

關於此功能或特色還有很多可以深入探討的,今天先在此簡單介紹.

1 則留言

0
ckp6250
iT邦新手 3 級 ‧ 2019-12-02 11:26:49

  這已經不是【簡單介紹】了,十分感恩。

  我其實很早就有接觸 postgresql,但沒有深入採用,跟著大眾走,採用 mysql,實在錯失交臂,殊為可惜。

  我一直都知道 postgresql 向來完整性都比 mysql 強,而且早了很多年,記得以前的 mysql 還沒有 procudure 時,我就在流口水了,還有像是有條件的索引檔,vfp 有這個功能,postgresql也有,很好用,但 mysql 也沒有,又是口水滿地。

  闗於這項 Temporal table 功能,您有提到用 trigger 在 mysql 也能做,這我當然知道,也做了,但就很麻煩,做了幾個之後,就不了了之,mariadb 10.3內建了,方又使我重燃興趣,故有此一問,果然, postgresql 又是捷足先登。

  我和 postgresql 的交集,只有一個客戶的客戶使用 postgresql,我幫它寫了一支轉檔程式,用 odbc 由 postgresql 轉出資料到 vfp,坦白說,我當時還覺得 postgresql 很難用,市面上幾乎找不到什麼中文書,mysql 的參考書則滿街都是,或可謂曲高和寡吧。

  您上回提示 postgresql 後,我立刻安裝並測試了一週左右,深刻體會其威力,可惜,直到今天,以本版來說,提問者依然少之又少,也不知何故?

我後續再寫些關於資料庫還有其他資訊技術的介紹,資料庫不限於
Postgresql.但會以PG為主,畢竟比較多材料可以用.

另外在臉書上有 PostgresqlTW 社群.

https://www.facebook.com/groups/pgsql.tw/

歡迎加入.

我要留言

立即登入留言