データベースとファイルシステムの比較の世界観です。データベースも参照のこと。
(以下の文章は、データベースについての経験や知識がなく、自分で考えて書いたため、一般的な良識と比較して間違ったことや何も分かっていないことを教えています。注意してご覧ください。)
また、データベースはファイルシステムと比べて、大量のデータをやり取りする場合、堅固かつ高速です。
大切な何年も保存しておくべき顧客データは、ファイルにするとすぐに無くなります。破損の恐れもあります。こうしたデータはDBMSにすることで堅固になるだけではなく、プログラムから取得・変更もしやすくなります。
また、ファイルからデータを検索するためには、いちいちファイルをひとつひとつ開いて確認しなければなりません。SQLならこれをいっぺんに検索できます。
また、さまざまな信頼性の機能があるため、データの冗長化(同じデータを複数重複して保持することで、信頼性を上げる)のような「高信頼機能」や、排他制御、アクセス制御などの「制御機能」、データが破損した時に復活する「回復機能」などが実現できます。
また、SQLデータベースは、プログラムから見てアクセス・操作しやすいということが言えます。
ファイルと比べると、ファイルではテキストデータを解析して操作しなければならず、特定の要素を特定の位置に挿入したり更新したりといった作業が面倒です。また、頻繁に書き換えていると、すぐに壊れます。
データベースは、指定の位置に素早くデータを格納することができ、更新や取得もSQL文によって容易にできます。頻繁な更新があっても壊れないため、ネットワーク上の掲示板などを作る時に適しています。
後日注記:また、排他制御を提供する、という点が大きい。UNIXのファイルシステムでは、排他制御が提供されず、複数のユーザから同時にアクセスがあるとデータが失われてしまう。DBMSなら、そうした排他制御をきちんと行うことができる。
ファイルシステムでデータを格納するのに比べて、データベースを使う主な理由は、「高い性能と堅固さ」です。
LinuxでもBtrFSなどで見られるように、Bツリー方式のファイルシステムが最近ブロック型ファイルシステムに代わって良く使われるようになりましたが、このBツリーとはデータベースの世界で培われたアルゴリズムです。
データベースではファイル処理に比べて、大量にあるデータを高速に検索できます。また頻繁に更新されても、壊れることがありません。
データベース管理システムには、同時にアクセスしてもデータが壊れないような排他制御の機能や、データベースが乱雑になった時にそれを整理してアクセス性能を向上させる再編成の機能があります。また大切なデータを勝手にアクセスされないように守るためのセキュリティ機能も必要です。
MySQLは軽量さや性能を求める人向けで、PostgreSQLは機能や堅固さを求める人向きだとよく言われます。また、国際的にはMySQLが標準ですが、日本では以前からPostgreSQLがよく使われます。
後日注記:実際には、MySQLは検索性能が高く、PostgreSQLはSQLの機能が多い。標準的に使われているのはMySQLだが、PostgreSQLはOracle DBなどからの本格的な移行先として利用を検討できる。
(以下の文章は、リレーショナルデータベース管理システムやMySQLの経験がなく、何も知らなかったころの自分が書いたため、一般的な良識と比較して間違ったことを教えています。注意してご覧ください。)
僕が思うに、MySQLデータベースを設計するのは、「自分独自のファイルシステムを作っている感覚」に近いと思います。
オートインクリメントをしたり、データに対してカラムをいくらでも追加出来たりするのは、ファイルシステムで言えば、自分で独自に、オリジナルのファイルシステムを作っている感じに近いのではないかと思います。