【Postgresql】オブジェクト識別子データ型とは ~C言語のint→charのキャストみたいなもの~【メモ】
前提
- postgresqlはユーザ/システムが作ったDB関連の部品を'オブジェクト'として管理する
- データベースクラスタ/スキーマ/テーブル/インデックス/シーケンス/データ型etc
- 管理するので何かしらの情報をまとめる→postgresqlの世界では「システムカタログ」という(あとでざっくり図解を公開する)
- オブジェクトにはすべて一意のIDをふる →
oid
- オブジェクト識別子 =
oid
- オブジェクト識別子は数値(10進数なはず)
oidに触れる機会の例
- テーブルの特定カラムのデータ量が多すぎたらアラートメールを投げるようにする
- 該当のテーブルがあればデータを取得する
↑の情報を取得するのにシステムで管理しているテーブルをオブジェクト識別子で結合しまくる必要があるが、 ユーザ側からみたらとってもみづらいSQLになる...
→そこで「オブジェクト識別子データ型」
オブジェクト識別子データ型
- データ型
- C言語のchar/intのキャストと同じイメージ
(int)'A'; // 65
char型「A」をintでキャストして「65」になるように、
'sales':: regclass
regclass
というオブジェクト識別子データ型でキャストして「oid」になる便利なやつでした。
雑感
過去にやった言語のイメージがあったおかげで今回の記憶定着に役立った。
経験って大事。
参考URL
いつもお世話になっています。
lets.postgresql.jp