QuestDBの4つのプロトコル、実測で比べてみた - ILP/TCP, ILP/HTTP, PGWire, REST | TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
QuestDBにおいて、公式ドキュメントはプロトコルの使い分けを推奨しているが、実際の性能差やリソース消費の特性に関する定量的なデータが不足していた。特に、高負荷なデータ投入時や頻繁なクエリ実行時における、プロトコル選択がシステム全体のパフォーマンスや計算リソースに与える影響が不明確であった。
// Approach
Pythonを用いたベンチマーク環境を構築し、金融ティックデータを模した100万行のデータセットを用いて、4つのプロトコルのINSERTおよびSELECT性能を計測。スループット、p50/p95レイテンシに加え、実行中のCPUおよびメモリ使用率を詳細に分析することで、各プロトコルの特性を明らかにした。
// Result
INSERTではILP/TCPが最速かつ低負荷であり、SELECTではPGWireがバイナリ転送の利点によりRESTを圧倒した。PGWireのINSERTはSQLの柔軟性を持つ反面、CPU負荷が極めて高い。用途に応じた「INSERTはILP、SELECTはPGWire」という公式推奨の妥当性が実証された。
Senior Engineer Insight
> 本検証は、単なるスループット比較に留まらず、CPUリソースの消費特性に踏み込んでいる点が極めて実践的である。特に、PGWireのINSERTにおけるCPU負荷の高さと、RESTのSELECTにおけるJSONシリアライズコストの増大は、大規模システム設計において無視できない。高頻度なデータ投入が求められるIoTエッジ環境ではILP/TCPの採用が不可欠であり、アプリケーション層からの定常的なクエリにはPGWireを選択することで、レイテンシと計算リソースのバランスを最適化できる。プロトコル選定がインフラコストに直結することを再認識させる結果である。