- Postgres Queue は優れているが主流ではない理由: 他のキュー技術のほうがより高いスケーラビリティを提供するという一般的な考えがあるため
- webapp.io のような企業は、運用の単純さ、保守性、そして親しみやすさをスケーラビリティより重視し、Postgres キューを選択した
- Postgres キュー技術の構成要素
- 新しいジョブを通知して受け取ること(pub/sub)と相互排他(row locks)
- この2つは 2016 年にリリースされた Postgres 9.5 から提供されている
- Postgres をこのように使うのは「ハック的」だという業界の一般的な考えに反論し、Postgres は取るに足らないキュー技術ではないと主張
- 長時間実行されるジョブを処理するためのキューツールとして、Redis、Apache Kafka、RabbitMQ、Amazon SQS などが選ばれてきた
- 技術業界の「規模」への執着を批判し、単純さ、保守のしやすさ、開発者の認知負荷の低減を犠牲にすることを問題視
- 技術的な意思決定を行う際には、現在使っていて十分に理解している技術を考慮すべきだという著者の提案
- すでに使っていて理解が進んでいる「退屈な技術」を選ぶことを推奨
- 「出口を作りながら進む」という概念を紹介し、ジョブ処理のためのアプリケーションコードはキューに依存しないべきだという意味
- 著者は、Postgres キュー技術を検討し、「退屈な技術」をデフォルトの選択肢にするよう他の人々を後押しする形で締めくくっている
1件のコメント
Hacker Newsの意見
SELECT FOR UPDATE SKIP LOCKEDを使用するのは、あらゆるORM/Query DSLフレームワークで動作するシンプルなアプローチである。LISTEN/NOTIFYを使ってPostgreSQLをpub/subバスとして使う主な欠点は、LISTENがセッション機能であるため、ステートメントレベルのコネクションプーリングと互換性がないことだ。SKIP LOCKED、遅延ジョブ、再試行、状態更新、「少なくとも1回」といったコストの高いパターンを実装するためのインデックス付き永続ストレージの利点を強調している.