Windows サーバーで JavaScript、MySQL、および PHP を使用して RIA を実行しています。
データベースに入れたい同じ構造のデータセットが 5,000 個あります。データには 5 つのテーブルで十分です。典型的なデータ セットの 300,000 以上のレコードを持つ 1 つのテーブルを除いて、すべてのテーブルは適度に小さくなります。
さらに、500 人のユーザーは、これらのデータ セットからコンパイルされた統計への読み取り専用アクセスを取得します。これらの統計は PHP によって提供されます (直接アクセスは許可されません)。さらに、データへのアクセスはさまざまです。1 つのデータ セットしか使用できないユーザーもいれば、一部、少数、またはすべてを使用できるユーザーもいます。
ユーザーに表示される結果は比較的小さいものです。ほとんどのリクエストは 100 行をはるかに下回り、最大のリクエストは約 700 行になります。すべてのリクエストは、Ajax を使用して PHP に接続する JavaScript RIA を介して行われます。PHP はデータに接続し、その処理を実行して応答として JSON を出力し、JavaScript はそれに応じて表示します。
これをどのように構成するかを考えると、次の 3 つのオプションが提示されます。
データ セットを同じテーブルに配置します。これにより、最大のテーブルで 1,500,000,000 レコードを簡単に取得できます。
データ セットごとに個別のテーブルを使用します。これにより、最大テーブル サイズが制限されますが、25,000 テーブルになる可能性があります。
データベースを忘れて、独自のフォーマットに固執します。
私はいくつかの理由で#2に傾いています。
非常に大きなテーブルを使用する際の問題が心配です (例: クエリの速度、実装の制限など)。
別のテーブルの方が安全に見えます。エラーや構造変更の影響を制限します。
別のテーブルを使用すると、独自の行レベル セキュリティを実装するのではなく、MySQL のテーブル レベル セキュリティを使用できます。これは、作業が減り、保護が強化されることを意味します。たとえば、クエリが行レベルのセキュリティなしで誤って送信された場合、ユーザーは不正なデータを取得できます。テーブル レベルのセキュリティではそうではありません。データベースが勝手にクエリを拒否するからです。
それは私の考えですが、あなたの考えが欲しいです。これは正しい選択だと思いますか?そうでない場合、なぜですか?私が見逃した考慮事項は何ですか?スケーラビリティが問題になる場合、他のプラットフォームを検討する必要がありますか?