データベース バックエンドを変更する時期はいつですか?

StackOverflow https://stackoverflow.com/questions/74261

  •  09-06-2019
  •  | 
  •  

質問

Web アプリケーション データを保存するときに、どのデータベース バックエンドを使用する必要があるかを知るために従うべき一般的な経験則はありますか?選択する際に考慮すべき指標は、1 日あたりのヒット数、データ行数、またはその他の指標ですか?

私の最初のアイデアは、この順序は次のようになると考えています (ただし、必ずしもそうとは限りません。それが私が質問している理由です)。

  1. フラットファイル
  2. BDB
  3. SQLite
  4. MySQL
  5. PostgreSQL
  6. SQLサーバー
  7. オラクル
役に立ちましたか?

解決

それはそれほど簡単ではありません。唯一の一般的な経験則は、現在のソリューションが対応できなくなった場合は、別のソリューションを探す必要があるということです。これには、異なるソフトウェア (必ずしもグローバルに固定された順序である必要はない)、ハードウェア、またはアーキテクチャの使用が含まれる可能性があります。

おそらく、次のようなものを使用してデータをキャッシュすると、さらに多くのメリットが得られるでしょう。 memcached 別のランダム ストレージ バックエンドに切り替えるよりも優れています。

他のヒント

ヘビーウェイト (SqlServer、Oracle) のいずれかが必要になると思われる場合は、最初にそれらのいずれかを使用して開始する必要があります。データ移行は非常に困難です。長期的には、トップからスタートしてそこに留まるほうがコストは安くなります。

ランキングにこだわりすぎていると思います。非常に小さなデータ セットの場合はフラット ファイルなどから始めて、SQL のような構文を必要としない少し大きなデータ セットの場合は DBM などに進み、その後は何らかの SQL データベースに進むことができます。

しかし、誰がそのようなすべての書き換えをしたいと思うでしょうか?アプリケーションが結合、ストアド プロシージャ、トリガー、外部キー検証などへのアクセスから恩恵を受ける場合は、データセットのサイズに関係なく SQL データベースを使用してください。

どれ 保持しているデータの量よりも、クライアントの既存のインストールと利用可能な DBA スキルに依存する必要があります。

言い換えれば、データベースのサイズは唯一の考慮事項ではなく、おそらく最も重要な考慮事項ではありません。

これに対する完全な答えはありませんが、ほぼ常に、フラット ファイルを使用するのは得策ではありません。それらを解析する必要があります (おそらく) が、適切に拡張できません。Oracle や SQL Server (無料のオプションをお探しの場合は MySQL、Postgres) などの適切なデータベースから始めるのが良いでしょう。オーバーヘッドがほとんどないため、後で多くの労力と頭痛の種を節約できます。また、データをばかげていない方法で構造化できるため、データをどのように入出力するかではなく、データを使って何をするかを自由に考えることができます。

実際には、データとその使用方法によって異なります。以前のポジションの 1 つでは、ポリゴン データ型を使用してデータを管理できるネイティブの地理位置情報とタイムゾーン拡張機能があったため、Postgres を使用していました。私たちの場合、それを行う必要があり、ストアド プロシージャやビューなども使用したいと考えていました。

さて、私が働いていた別の場所では、単にデータが標準的な行ごとのデータで正規化されていたという理由で MySQL を使用していました。

SQL Server には長い間 4 GB のデータベース制限がありました (SQL Server 2000 を参照)。しかし、その制限にもかかわらず、古いデータがパージされる中小規模のアプリケーションにとっては非常に安定したプラットフォームであり続けます。

Oracle と SQL Server 05/08 を使用した経験から言えることは、安定性、スケーラビリティ、柔軟性の点で最高の品質が必要な場合は、これら 2 つが最善の策であるということだけです。エンタープライズ アプリケーションの場合は、これを強くお勧めします (単に、私が今働いている場所でそれを使用しているからです)。

その他の考慮事項:

  • 言語統合 (ASP.NET セッション ストレージ、ロール管理など)
  • クエリ タイプ (選択、更新、削除) (ただし、これは DBMS の問題ではなく、スキーマ設計の問題です)
  • データストレージ要件

アプリケーションによるデータベースの使用率は最も重要です。主にどのクエリが最も頻繁に使用されますか (SELECT、INSERT、または UPDATE)。

たとえば、SQLite を使用する場合は、小規模なアプリケーション向けのギアですが、「Web」アプリケーションの場合は、MySQL や SQL Server などの大きなアプリケーションを使用する可能性があります。

スクリプトと Web アプリケーション プラットフォームの記述方法も重要です。Microsoft プラットフォームで開発している場合は、SQL Server の方が適しています。

通常、使用しているフレームワークで一般的に受け入れられているものを使用します。つまり、.NET => SQL Server、Python (Django または Pylons 経由) => MySQL または SQLite を実行している場合。

フラットファイルはほとんど使いませんが。

RDBMS ソリューションの選択には、単に「バックエンドの馬力」だけではありません。たとえば、失敗したトランザクションをロールバックできるコミットメント制御機能もその 1 つです。理由。

メガトランザクション レートのアプリケーションを使用している場合を除き、ほとんどのデータベース エンジンで十分です。したがって、ソフトウェアにいくら支払うか、必要なハードウェアおよびオペレーティング システム環境で動作するかどうか、およびどのような専門知識を持っているかが問題になります。そのソフトウェアを管理する際に。

その進行は苦痛に思えます。MS 製品 (特に有料 SQL Server) をどこにでも含める場合は、スタック全体を使用したほうがよいでしょう。なぜなら、これらの最後のものに対してのみ支払う必要があるからです。

SQL Server Compact -> SQL Server Express -> SQL Server Enterprise (clustered).  

最初にアプリのターゲットを SQL Server Compact に設定した場合、すべての SQL コードは変更せずに次のバージョンにスケールアップされることが保証されます。SQL Server Enterprise よりも大きくなった場合は、おめでとうございます。それを彼らは「」と呼んでいます 良い 抱えている問題。

また:戻って SO ポッドキャストをチェックしてください。彼らはこのことについて簡単に話したと思います。

この質問は実際にはあなたの状況によって異なります。

デプロイ先のサーバーを制御でき、必要なサービスをすべてインストールできる場合は、MySql または MSSQL Express サーバーをインストールし、既存のデータベース フレームワークに基づいてコードを作成する時間と、フラット ファイル構造に基づいてコードを作成する時間は、労力に値しません。検討すること。

ファイアバードはどうでしょうか?それはリストのどこに当てはまりますか?

そして、ソリューションの「顧客」も満たさなければならない要件を忘れないでください。小規模企業向けの商用アプリケーションを作成する場合、Oracle は良い選択ではないかもしれません...しかし、複数のキャンパス間でデータを共有する必要があり、適切な規模の IT 部門を擁する大企業向けにカスタマイズされたソリューションを作成する場合、Oracle と SQL Server の決定は、顧客がすでに導入している可能性が最も高いものによって決まります。

Embarcadero の優れたツールがあるため、今日のデータ移行はそれほど悪くはありません。そのため、私はむしろ顧客のニーズに基づいて決定を下すことにします。

選択肢がある場合は、最初から SQL Server を選択するのが良い選択です。主な理由は、確実なプロシージャと関数にアクセスでき、データベースのバックアップ機能が完全に信頼できるからです。(使用している言語ではなく) できる限りロジックをデータベース自体の中にまとめると、セキュリティとパフォーマンスが向上します。確かに、挿入/更新ロジックには常にプロシージャを使用することについて十分な議論があります。インジェクション攻撃に対して無敵です。

選択できる場合、MySQL を優先的に検討するのは、主に読み取りアクセスに使用される大規模でかなり単純なデータベースを使用する場合だけです。これは MySQL を非難するわけではありません。MySQL は最近著しく改善されており、選択肢がない場合は喜んで使用しますが、更新/挿入アクティビティを伴うより複雑なシステムの場合は、一般に MSSQL が優れたオプションです。

あなたのリストは主観的なものだと思いますが、私はあなたのゲームをプレイします。

フラットファイル

BDB

SQLite

MySQL

PostgreSQL

SQLサーバー

オラクル

テラデータ

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