そーくのつれづれぶろぐ

web系エンジニアの勉強したことなど

【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