コンピュータ プログラミングでは、データベースを IPC として使用することは、データベース内のディスクに永続化されたテーブルを、日常的なプロセス間通信やサブスクライブされたデータ処理のメッセージ キュー ストアとして使用するアンチパターンとみなされる場合があります。データベースのパフォーマンスが懸念される場合は、ソケット、ネットワーク ソケット、またはメッセージ キューを代替手段として使用できます。
英国のコンピュータ科学者ジュナード・アリは、データベースをIPCアンチパターンとして定義し、データベースを「ジョブをスケジュールしたり、完了するタスクをキューに入れたり」することであると指摘し、このアンチパターンは永続的なデータではなく一時的なメッセージにデータベースを使用することに重点を置いていると指摘した。[1]
論争
この問題は、パフォーマンス上の問題があり、追加のシステム (およびサーバー) が正当化されるかどうかで発生します。パフォーマンスの点では、データベース システムの最近の進歩により、シグナリングとメッセージングのためのより効率的なメカニズムが提供され、データベース システムはメモリ (非永続) テーブルもサポートします。
Postgres、 [2] [3] SQL Server、[4] Oracle [5]など、通知メカニズムが組み込まれたデータベースがあります。これらのメカニズムとデータベースシステムの将来の改善により、キューイングがはるかに効率的になり、サーバーと管理のオーバーヘッドとともに、別のシグナリングまたはメッセージングキューシステムを設定する必要がなくなります。
MySQLは通知を直接サポートしていませんが、[6]いくつかの回避策は可能です。ただし、それらは非標準と見なされ、メンテナンスがより困難になります。[7]
参照
参考文献
- ^ Ali, Junade (2016 年 9 月)。Mastering PHP Design Patterns。バーミンガム、イギリス: Packt Publishing Limited。pp. 45–46。ISBN 978-1-78588-713-0. 2017年12月11日閲覧。
- ^ [1] Postgresql.org 2020年9月9日
- ^ [2] Postgresql.org 2020年9月9日
- ^ [3] ニック・フェリエ 2018年8月15日
- ^ [4] docs.oracle.com. 2020年9月9日
- ^ [5] MariaDB Jira。 2020年9月9日
- ^ MySQL をキューとして使用する 5 つの巧妙な方法と、それが問題となる理由 Archived 2018-06-12 at the Wayback Machine Schwartz, Baron. 2011 年 9 月 14 日。
