IPCとしてのデータベース

コンピュータプログラミングにおいて、データベースをIPCとして使用することはアンチパターンとみなされることがあります。これは、データベース内のディスクに永続化されたテーブルを、日常的なプロセス間通信(IPC)またはサブスクライブ型データ処理のためのメッセージキューストアとして使用するものです。データベースのパフォーマンスが懸念される場合は、ソケットネットワークソケットメッセージキューなどの代替手段があります。

イギリスのコンピュータ科学者ジュナード・アリは、データベースをIPCアンチパターンとして定義し、データベースを「ジョブをスケジュールしたり、完了するタスクをキューに入れたり」することだと指摘し、このアンチパターンは永続的なデータではなく一時的なメッセージのためにデータベースを使用することに重点を置いていると指摘した。[ 1 ]

論争

パフォーマンス上の問題があり、追加のシステム(およびサーバー)の導入が正当化されるかどうかが問題となります。パフォーマンスの面では、近年のデータベースシステムの進歩により、シグナリングとメッセージングのためのより効率的なメカニズムが提供され、データベースシステムはメモリ(非永続)テーブルもサポートしています。

PostgreSQL、 [ 2 ] [ 3 ] SQL Server、[ 4 ] Oracle [ 5 ]など、通知メカニズムが組み込まれたデータベースがあります。これらのメカニズムとデータベースシステムの将来の改良により、キューイングははるかに効率的になり、サーバーと管理のオーバーヘッドとともに、別のシグナリングまたはメッセージングキューシステムを設定する必要がなくなります。

MySQLは通知を直接サポートしていませんが[ 6 ] 、いくつかの回避策は可能です。しかし、それらは非標準と見なされ、メンテナンスが困難になる可能性があります。[ 7 ]

参照

参考文献

  1. ^ Ali, Junade (2016年9月). Mastering PHP Design Patterns . バーミンガム, イギリス: Packt Publishing Limited. pp.  45– 46. ISBN 978-1-78588-713-0. 2020年6月1日時点のオリジナルよりアーカイブ。2017年12月11日閲覧。
  2. ^ [1] Postgresql.org 2020年9月9日
  3. ^ [2] Postgresql.org 2020年9月9日
  4. ^ [3]ニック・フェリエ 2018年8月15日
  5. ^ [4] docs.oracle.com. 2020年9月9日
  6. ^ [5] MariaDB Jira。 2020年9月9日
  7. ^ MySQL をキューとして使用する 5 つの微妙な方法と、それがなぜ問題になるのかArchived 2018-06-12 at the Wayback Machine Schwartz, Baron. 2011 年 9 月 14 日。