質問

非常に小さなデータセットの場合、私が作業しているポリシーでは通常、それらをテキストファイルに貼り付けることですが、私の経験では、これは開発の頭痛の種になる可能性があります。データは通常、データベースから取得されますが、そうでない場合、その設定/保存に関連するプロセスは通常、コード内に隠されます。データベースを使用すると、通常、利用可能なすべてのデータと、それが他のデータとどのように関連しているかを確認できます。

場合によっては、非常に小さなデータ セットの場合は、それらをコード内の内部データ構造 (Perl ハッシュなど) に保存するだけですが、変更が必要な場合は開発者の手に渡ります。

では、頻繁に変更されない小さなデータのセットをどのように処理すればよいでしょうか?データベース テーブルやテキスト ファイルなどをいつ使用するかについての基準を設定していますか?

すべてにデータベーステーブルを使用したいと思うのですが、これに何か影響があるかどうかはわかりません。

編集: コンテキスト:

数社の企業から、Web サイトに新しいお問い合わせフォームを設置するよう依頼されていますが、今後さらに追加される予定です。ただし、企業には連絡先メール アドレスがありません。これらの企業内のユーザーも同様です (自分のアカウントを通じて求人を投稿するため)。ただし、ここでは「投機的アプリケーション」タイプの機能が必要であり、フォームにはこれらのアプリケーションを送信するための電子メール アドレスが必要です。しかし、フォームのプロパティとして電子メール アドレスを含めたくもありません。そうしないと、スパマーがそれをオープンな電子メール ゲートウェイとして使用するだけになってしまいます。したがって、企業との ID -> contact_email タイプの関係が必要であることは明らかです。

したがって、文字通り約 20 回使用される数百万行のテーブルに列を追加するか、最大でも約 20 行を保持する新しいテーブルを作成することができます。従来、これに対処する方法は通常、厄介なテキスト ファイルを作成し、そこから読み取るだけでした。しかし、これによりメンテナンスの悪夢が生じ、これらのテキスト ファイルは、依存するデータが変更されると頻繁に調べられます。おそらくこれはプロセスに問題があるのでしょうが、これについての意見を聞きたいだけです。

役に立ちましたか?

解決

これらが小さな構成のようなデータの場合は、シンプルで一般的な形式を使用します。ini、json、yaml は通常は問題ありません。Java と .NET のファンも XML を好みます。つまり、メモリ内オブジェクトに簡単に読み取って忘れることができるものを使用してください。

他のヒント

それをデータベースに入れます。頻繁に変更されない場合は、中間層にキャッシュします。

すぐに思い浮かぶ例は、列挙として格納するのが適切なものと、「検索」データベース テーブルに格納するのが適切なものです。

私は、データベース内の列に列挙値にマップされる「マジック ナンバー」が含まれる場合、その列挙は実際にはルックアップ テーブルとして存在する必要があるというルールで「線を引く」傾向があります。データベースに保存されているデータと無関係な場合 (例:ユーザー生成データではなくアプリケーション構成データ) の場合、それはずっと列挙です。

サイズに関係なく、データ セットを使用するかどうかは、開発したソフトウェア ツールのユーザーに依存するのでしょうか?

単に彼らが Excel を知っているだけかもしれないので、ツールは彼らが作成した .csv ファイルを解析する必要があるでしょう。

開発者向けに書かれたものであれば、何を使用するかは誰にも気にされません。ただし、私はマイナーなデータや一時的なデータでデータベースを乱雑にするのが好きではありません。

標準の設定ファイル形式 (キー:値) とそれを処理するクラスがあります。すべてのプロジェクトでそれを使用するだけです。ほとんどの場合、アプリケーション (携帯電話開発) に永続プロパティを設定しているだけなので、これは適切なことです。YMMV

プログラムがデータベースにアクセスする場合は、すべてをそこに保存します。バックアップやデータの移動が簡単になります。

データベースにアクセスしない小規模なプログラムの場合、データは .net 設定に保存され、xml ファイルに保存されます。もちろん、これは C# の機能なので、あなたには当てはまらないかもしれません。

とにかく、すべてのデータを 1 か所に保存するようにしています。通常はデータベースです。

検討しましたか スクライト ?これはファイルベースであり、「ファイルだけで十分かもしれない」 (構成ゼロ) という感覚に対処しますが、完全に優れたデータベースであり、驚くほどうまく拡張できます。多数の API をサポートしており、 多数のフロントエンド それを管理するためです。

それをメインテーブルのデータベースに追加します。

  1. バックアップとリカバリ (このテキスト ファイルをリカバリしたいですよね?)
  2. アドホック クエリ (SQL ツールで実行し、他のデータベース データに結合できるため)
  3. データベース列が空の場合、その列に対するストア要件は最小限にする必要があります (Oracle のテーブルの最後にある NULL 列の場合は何もありません)。
  4. 複数のアプリケーション サーバーを使用したい場合は、追加の構成ファイルのコピーを複数保持する必要がないため、より簡単になります。
  5. 小さな子供用のテーブルに置くと、実際のメリットは何もなく、デザインが複雑になるだけです。

いずれにせよ、処理の一部としてデータベース内の同じ行に既にアクセスしている可能性があるため、パフォーマンスが問題になる可能性は高くありません。そうでない場合は、メモリにキャッシュすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top