これは概念的な質問です。それは、単純なクエリでさえ長い時間(適切に索引付けされる)を必要とする非常に大きなテーブルを使用することに触発されています。私はテーブルが成長し続けるより良い構造があるのだろうかと思っていました。非常に大きなテーブルを構成する方法
大きいとは、毎日10,000以上のようなものによって毎日成長する10,000,000件以上のレコードを意味します。このようなテーブルは、2.7年ごとに10,000,000の追加レコードを記録します。最近の記録は最もアクセスが多いが、古いものは利用可能である必要があると言いましょう。 私はそれをスピードアップするための2つの概念的なアイデアを持っています。
1)すべてのデータを保持するマスター表を、日付順に逆順に保持します。その年のデータのみを保持する年ごとに別々のビューを作成します。次に、クエリを実行して、クエリが3年のスパンからわずかなレコードのみを取得すると予想される場合、私は3つのビューを結合してそれらを選択するためにユニオンを使用できます。
2)別のオプションは、毎年別のテーブルを作成することです。その後、再びユニオンを使用してクエリを結合します。
誰にも他のアイデアや概念はありますか?私はこれがFacebookが直面している問題だと知っています。だからあなたはどうやってそれを扱ったと思いますか?私は100,000,000,000レコードを含む単一のテーブル(status_updates)を持っているのではないかと思います。
このアクセスの相対頻度はどのくらいですか?年間データの実際の組合が必要な頻度はどれくらいですか?そして、あなたが組合を必要としたとしても、組合のオーバーヘッドを避けるために、データベースの外にある*データベースを組み合わせるだけではどうですか? –
テーブルにあるフィールドの数(およびタイプ)を教えてください。 –