データをテキストファイルに保存するよりも、データを保存するのに適したデータベースはいつですか?
ウィキペディアは教えてくれることを、データベースがデータの整理コレクションです。その対策により、テキストファイルはデータベースになります。それは言い続けます:
通常、データは、この情報を必要とするプロセスをサポートする方法で、現実の関連する側面をモデル化するために編成されます。たとえば、空室のあるホテルの検索をサポートする方法で、ホテルの部屋の空室状況をモデリングします。
その部分は主観的です-どのようにデータをモデル化するべきか、どの操作を最適化する必要があるかを具体的に教えてくれません。テキストファイルは、毎日1つずつ、多数の個別のレコードで構成されているため、問題に関連する方法で現実の側面をモデル化しています。
「データベース」と言うと、おそらく何らかのリレーショナルデータベース管理システムを考えているのに、テキストファイルをデータベースと考えると、「データベースをいつ使うべきか」という質問が変わることがわかります。「どのようなデータベースを使用すればよいですか」その観点から物事を見ると、答えがわかりやすくなります。持っているデータベースが要件を満たさなくなったときに、より良いデータベースを使用します。
Pythonスクリプトと単純なテキストファイルが十分に機能する場合は、変更する必要はありません。1日あたり新しいレコードが1つだけで、コンピューターの速度が毎年向上しているため、現在のソリューションは長期にわたって実行可能であると思われます。10年分のデータでは、3650レコードしか得られませんが、一度解析すると、おそらく75キロバイト未満しか必要ありません。
1日あたり1つの小さなレコードではなく、CodeReviewで尋ねられたすべての質問、誰が、いつ尋ねたかを記録することにしたと想像してください。さらに、すべての回答と関連するメタデータも収集します。君はすべてをテキストファイルに保存もできますが、フラットファイルを使用すると、必要なときに情報を見つけることが難しくなります。全部をメモリに読み込むにはデータが多すぎるので、質問や回答を見つけたいときはいつでも、探しているものが見つかるまでファイルをスキャンする必要があります。特定のユーザーからの質問をすべて検索したい場合は、ファイル全体をスキャンする必要があります。タグとして「バグ」を含むすべての質問を検索する場合は、ファイル全体をスキャンする必要があります。
それは恐ろしく遅いので、特定のレコードを見つけるためにファイル内のどこを見るべきかを示すいくつかのインデックスを構築することによって、物事をスピードアップすることに決めるかもしれません。質問用のインデックス、ユーザー用のインデックス、回答用のインデックスなどを作成できます。質問を見つけたいときは、(はるかに小さい)質問インデックスを検索し、メインデータファイル内の質問の位置を取得し、ファイル内の適切な場所にすばやくジャンプします。それはパフォーマンスの大きな改善になるでしょう。実際、それはデータベース管理システムとほとんど同じです。
したがって、必要なときにDBMSを使用してください。大量のデータがある場合、そのデータに迅速にアクセスできるようにする必要がある場合、おそらく最初は完全に予測できない方法で使用します。互いに接続された異なる種類のデータ(異なる種類のレコード)がある場合は、RDBMSを使用して、さまざまなレコードを適切に関連付けることができます。