3

データベースを使用することのトレードオフと、他のオプションは何であるか疑問に思いました。また、データベースに適していない問題は何ですか?

私はリレーショナルデータベースに関心があります。

4

5 に答える 5

7

データベースの概念は非常に広いです。ここで紹介する内容をいくつか簡略化します。

一部のタスクでは、最も一般的なデータベースはリレーショナルデータベースです。リレーショナルモデルに基づくデータベースです。リレーショナルモデルは、各テーブルに特定の固定数の列があるテーブルに属する行でデータを記述することを前提としています。「行ごと」にデータを送信します。つまり、テーブルのすべての列に関連するデータを含む1つのショットで行を提供する必要があります。送信されたすべての行は通常、テーブルレベル、場合によってはデータベースレベルで一意の識別子を取得します。リレーショナルデータベース内のエンティティ間の関係を作成できます。たとえば、テーブル内の特定のセルが別のテーブルの行を参照する必要があると言うことで、いわゆる「参照整合性」を維持できます。

このモデルは正常に機能しますが、それだけではありません。場合によっては、データはツリーとしてより適切に編成されます。ファイルシステムは階層型データベースです。ルートから始まり、すべてがこのルートの下にあり、ツリーのような構造になっています。もう1つのモデルは、キーと値のペアです。Sleepycat BDBは、基本的にKey/Valueエンティティのストアです。

LDAPは、2つの利点がある別のデータベースです。つまり、一般的なデータを格納すること、設計によって配布されること、および読み取り用に最適化されていることです。

グラフデータベースとトリプルストアを使用すると、グラフを保存して同型検索を実行できます。これは通常、エンティティの幅広いレベルの説明を網羅できる非常に一般的なデータセットがあり、基本的には不明である場合に必要になります。これは、非常に正確な列のセットを使用してテーブルを作成し、各列に何が含まれるかを知っているリレーショナルモデルとは明らかに反対です。

いくつかのリレーショナル列ベースのデータベースも存在します。行ごとにデータを送信する代わりに、列全体ごとにデータを送信します。

それで、あなたの質問に答えるために:データベースはデータを保存する方法です。技術的には、テキストファイルでさえデータベースですが、特に優れたものではありません。データベースの背後にあるモデルの選択は、ほとんどの場合、アプリケーションの一般的なニーズに関連しています。

私がおそらく厳密に正しくないことを言っているので、答えをCWとして設定します。自由に編集してください。

于 2009-11-19T08:01:33.730 に答える
1

これはかなり広い質問ですが、データベースはリレーショナルデータの管理に適しています。代替案は、ほとんどの場合、独自のデータストレージおよび取得エンジンを設計することを意味します。これは、ほとんどの標準/小規模アプリケーションでは、努力する価値がありません。

データベースにあまり適していない典型的なシナリオは、比較的少量の論理ファイルとして編成された大量のデータのストレージです。この場合、単純なファイルシステムのようなシステムで十分です。

于 2009-11-19T07:43:41.130 に答える
1

NOSQLデータベースを確認することを忘れないでください。これはかなり新しいテクノロジーであり、リレーショナルデータベースに適合/拡張できないものに適しています。

于 2009-11-19T07:47:13.270 に答える
0
  • 検索アプリケーションの場合、全文検索エンジン(一部は従来のDBMSに統合されていますが、一部は統合されていません)は、より多くの機能(さまざまな言語認識、半構造化データを持つ機能、ランキング...)だけでなく、より良いパフォーマンス。

  • また、構成データがデータベースに保存されているアプリケーションを見たことがあります。これは場合によっては理にかなっていますが、プレーンテキストファイル(またはYAML、XMLなど)を使用し、初期化中に基になるオブジェクトをロードすることが望ましい場合があります。そのような代替手段の自己完結型の性質、およびそのようなファイルの変更と複製の容易さ。

  • もちろん、使用法によっては、フラットログファイルをDBMSに記録する代わりに使用することもできます。

つまり、過去10年ほどで、DBMSシステムは一般に、さまざまな形式のデータとさまざまな検索機能(例:前述の全文検索、XML、スマートストレージ/処理)を処理するのに役立つ多くの機能を追加しました。 BLOB、強力なユーザー定義関数など)を使用すると、BLOBの用途が広がり、かなりユビキタスなサービスになります。 ただし、それらの強みは主にリレーショナルデータにあります

于 2009-11-19T07:44:29.410 に答える
0

保存およびクエリするデータがある場合は、データベースを使用してください。

技術的には、ほとんどのものがデータベースに適しています。コンピューターはデータを処理するように作られ、データベースはそれらを保存するように作られています。

考慮すべき唯一のことはコストです。展開のコスト、メンテナンスのコスト、時間の投資ですが、通常はそれだけの価値があります。

非常に単純なデータのみを保存する必要がある場合は、フラットファイルが代わりになります(テキストファイル)。

注:「データベース」という一般的な用語を使用しましたが、これらには多くの異なるタイプと実装があります。

于 2009-11-19T07:46:30.420 に答える