SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
時系列データ型を
つくってみた
ぬこ@横浜 (@nuko_yokohama)
みなさん、こんにちは
楽しい
PostgreSQL 拡張作成ライフを
お過ごしでしょうか?
今回のテーマ
時系列データ型
あるカラムがいつの時点で
どういった値だったのかを
知りたいときって
ありませんか。
ありませんかそうですか。 (´ ・ ω ・` )
ということで、
役に立つのかどうかは不明だが
そんなデータ型をなんとなく
作ってみたくなったので
作ってみた。
ということで、
役に立つのかどうかは不明だが
そんなデータ型をなんとなく
作ってみたくなったので
作ってみた。
コンセプト
データ型に時系列を加えてみる
列値に履歴情報を持つ。
きちんと拡張すれば監査とかに使えるかも?
時系列データ型の実装
・履歴追記データ型 (int4 用 )
型に対する入出力関数
今回は整数型のプロトタイプを作成する。
可変長データ型になると少し面倒。
データタイプ名: h_int4
ヘッダ(世代数、最終更新タイムスタンプ)
エントリ(タイムスタンプ、データ実体)
→ 監査目的にするなら、ユーザ情報も格納すべき?
(今回は追加していない)
こんな感じ
ヘッダ
世代数

最終更新タイムスタンプ

エントリ
タイムスタンプ

データ実体 (INT)

タイムスタンプ

データ実体 (INT)

世代数分、繰り返し

データ実体が可変長の場合は、各エントリの長さ情報も
エントリ内のヘッダに必要になる。ちょい面倒。
(ヘッダ部にインデックス的な情報も必要かも)
型に対する入出力関数
・入力:入力値から 1 世代分の履歴型を
 生成して追加
・出力:最新の世代の値を取り出し
・バイナリ入力:必要か?
・バイナリ出力:トリガで必要か?
型に関する操作関数(1)
・世代数取得
・全ヒストリの取得
・世代番号指定による取り出し
・タイムスタンプによる取り出し
・タイムスタンプに一番近い過去のもの
・タイムスタンプに一番近い未来のもの
・世代の消去(最新世代のみを残す)
型に関する操作関数(2)
・タイムスタンプ指定つきの履歴追加
 ※未来の時刻と値を事前にセットする
未来のタイムスタンプを指定して、一定時間を過ぎると勝手に
値が変わる機能があると嬉しかったりするだろうか?
この場合、デフォルトの評価値が最新世代のもの、ではなく
カレントタイムスタンプより過去のものとかいう評価が必要
型に関する演算関数
・通常の四則演算関
  (add/sub/mul/div/mod)
・集約演算関数
 ( SUM/MAX/MIN など)
インデックス?

・対応できるかどうか微妙。
・というか型の変動性分類上、
 対応できない気がする・・・。
関数の変動性分類
そもそも、こういう型を評価する関数の
変動性分類はどうなるのか。
Immutable/Stable とは言えないか・・・。
→ フツーに考えると volatile に分類すべきなんだろかなあ。
最適化や関数インデクスのことを考えると微妙なことになる。
→ 検索条件となりうるカラムに使うのは難しいかも
(別にインデクス検索されるカラムがあり、
その後の Filter 句として使うくらいか)
デモ向け実装
・時間がなくて C 関数できちんと実装
 できなかった・・・
・今回はプロトタイプということで
  PL/pgSQL でそれっぽいものを。
デモ
デモ(1)
h_int4 型を登録
h_int4 型カラムを持つテーブルを作成

id=2 の
id=3 の
id=3 の
id=4 の

4 件 INSERT
data を更新( 200→210 )
data を更新( 300→310 )
data を更新( 310→320 )
data を更新( 400→410 )

普通に SELECT
世代番号指定で SELECT
デモ(2)
id=4 の data を更新( 10 秒後に 410→420 )
id=4 の data を更新( 20 秒後に 420→430 )
普通に SELECT
10 秒後に SELECT
20 秒後に SELECT
デモ(図)
id = 1

100

id = 2

200

id = 3

300

id = 4

デモ環境
CentOS 6.3
PostgreSQL 9.3.2

400

INSERT

210
310

320

10 秒後 20 秒後
410

UPDATE

UPDATE

UPDATE

420

UPDATE

現世代

SELECT

前世代

430

UPDATE

UPDATE

直後

SELECT

t

10 秒後 20 秒後
トリガとの組み合わせ
トリガ関数
更新前の値と更新後の値を入力
更新後の値を更新前の値に追記
トリガ設定
BEFORE EACH ROWS /列トリガ
UPDATE test SET data = append(data, 100) WHERE …;
↓
UPDATE test SET data = 100 WHERE …;
今後
C 関数できちんと実装
可変長型への対応など
おしまい

Contenu connexe

Tendances

TokyoR LT Rで連続データを離散化
TokyoR LT Rで連続データを離散化TokyoR LT Rで連続データを離散化
TokyoR LT Rで連続データを離散化tetsuro ito
 
二階堂愛と二階堂藍の違いについて
二階堂愛と二階堂藍の違いについて二階堂愛と二階堂藍の違いについて
二階堂愛と二階堂藍の違いについてshow you
 
Hash functions
Hash functionsHash functions
Hash functionstabun_muri
 
トポロジカルデータ解析(仮)
トポロジカルデータ解析(仮)トポロジカルデータ解析(仮)
トポロジカルデータ解析(仮)Takahiro Yoshinaga
 
NetworkXによる語彙ネットワークの可視化
NetworkXによる語彙ネットワークの可視化NetworkXによる語彙ネットワークの可視化
NetworkXによる語彙ネットワークの可視化Shintaro Takemura
 
データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016Akinori Kohno
 
Twitterテキストのトピック分析
Twitterテキストのトピック分析Twitterテキストのトピック分析
Twitterテキストのトピック分析Nobuyuki Kawagashira
 
クリスマス?
クリスマス?クリスマス?
クリスマス?sasenomura
 

Tendances (12)

TokyoR LT Rで連続データを離散化
TokyoR LT Rで連続データを離散化TokyoR LT Rで連続データを離散化
TokyoR LT Rで連続データを離散化
 
二階堂愛と二階堂藍の違いについて
二階堂愛と二階堂藍の違いについて二階堂愛と二階堂藍の違いについて
二階堂愛と二階堂藍の違いについて
 
Hash functions
Hash functionsHash functions
Hash functions
 
トポロジカルデータ解析(仮)
トポロジカルデータ解析(仮)トポロジカルデータ解析(仮)
トポロジカルデータ解析(仮)
 
NetworkXによる語彙ネットワークの可視化
NetworkXによる語彙ネットワークの可視化NetworkXによる語彙ネットワークの可視化
NetworkXによる語彙ネットワークの可視化
 
Rでプロット
RでプロットRでプロット
Rでプロット
 
データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016
 
Twitterテキストのトピック分析
Twitterテキストのトピック分析Twitterテキストのトピック分析
Twitterテキストのトピック分析
 
クリスマス?
クリスマス?クリスマス?
クリスマス?
 
S09 t4 wrapup
S09 t4 wrapupS09 t4 wrapup
S09 t4 wrapup
 
Rでダイエット
RでダイエットRでダイエット
Rでダイエット
 
Sapporo20140709
Sapporo20140709Sapporo20140709
Sapporo20140709
 

Plus de Toshi Harada

無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々Toshi Harada
 
Pgunconf14 pg13-psql
Pgunconf14 pg13-psqlPgunconf14 pg13-psql
Pgunconf14 pg13-psqlToshi Harada
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12Toshi Harada
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-FunctionsToshi Harada
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extensionToshi Harada
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extensionToshi Harada
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10Toshi Harada
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsqlToshi Harada
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10Toshi Harada
 
20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdevToshi Harada
 
Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Toshi Harada
 
Jpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubJpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubToshi Harada
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubToshi Harada
 
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaPgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaToshi Harada
 
Pgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiPgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiToshi Harada
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Toshi Harada
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-klyToshi Harada
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Toshi Harada
 
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseOsc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseToshi Harada
 

Plus de Toshi Harada (20)

無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々
 
Pgunconf16 toast
Pgunconf16 toastPgunconf16 toast
Pgunconf16 toast
 
Pgunconf14 pg13-psql
Pgunconf14 pg13-psqlPgunconf14 pg13-psql
Pgunconf14 pg13-psql
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
 
20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev
 
Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10
 
Jpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubJpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pub
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
 
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaPgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-ja
 
Pgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiPgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversi
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-kly
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
 
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseOsc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-database
 

Dernier

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Dernier (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

時系列データ型(Int4)をつくってみた