読者です 読者をやめる 読者になる 読者になる

k-holyのPHPとか諸々メモ

Webで働くk-holyがPHP(スクリプト言語)とか諸々のことをメモしていきます。ソースコードはだいたいWindowsで動かしてます。

TECHSCORE BLOGに『PostgreSQLのUUID型とpgcryptoモジュールを使って会員パスワード認証を実装してみる』を掲載していただきました

PostgreSQL

TECHSCORE BLOG に記事を掲載していただきました。

普段の業務では主にLAMPおじさんとしてPHP + MySQLで動く小規模なWebアプリケーションばかり開発している私ですが、TECHSCORE BLOGではJava, Ruby(Rails), PostgreSQLの記事が多いということで、今回は久しぶりにPostgreSQLを触って記事を書きました。

最新版の9.5をWindowに入れてみたんですが、公式のインストーラーで問題なく完了できましたし(昔はもっと苦労してたような…)、付属のPgAdminがとても良く出来ていて、これがあればpsql要らないんじゃないかな…って思いつつ、記事としてはSQLを手で実行して試さないといけないので、psqlを使いました。

何か普段の業務で書くようなコードをPostgreSQLっぽい機能で実装してみようと、マニュアル PostgreSQL 9.4.5文書 を眺めていて思い付いたのが今回の記事で、会員制Webサイトでのパスワード認証にまつわる処理を、拡張モジュールの pgcrypto を使って書いてみるというものです。

UUID型 はそのついでに使ってみた程度ですが、この型とpgcryptoモジュールを使ったユーザー定義関数を併用すれば、なかなか実用的だと感じました。(エンタープライズ界隈ではごく普通に使われているのかもしれませんが)

もう一つ思い付いたのは、JSON型の応用例として、トリガーを使ったテーブルの汎用更新ログというネタでしたが、試しに検索してみたらQiitaにすごいのが上がってたので、早々に諦めました…。

これの「2.6. 監査ログテーブル」辺りです。

私も今回 JSON作成関数のrow_to_json()を知って思い付いたのですが、こちらのQiita記事では記録のみならず差分抽出までトリガーで実装されてます。いやはや。

MySQLでも5.7からネイティブJSONデータ型で性能強化されたとかで、「Generated Columns」という機能でjson_extract()関数の抽出結果をカラムとして定義して、インデックスを張ったりできるようになったみたいなので、同じネタで実用的なものができそうです。

TECHSCORE BLOGへの投稿をきっかけに、今後はPostgreSQLも業務の方で積極採用していきたいです。(まずは自作のDBライブラリをPostgreSQLに対応させないといけませんが…)