1. ホーム
  2. database

[解決済み] 73億行のマーケットデータ(読み出しに最適化)を格納する方法とは?

2023-03-17 05:03:19

質問

1998年以降の1000銘柄の1分足のデータセットを持っています。 (2012-1998)*(365*24*60)*1000 = 7.3 Billion の行になります。

ほとんど(99.9%)の時間は、私が実行する唯一の を読む のリクエストしか行いません。

このデータをdbに保存するのに最適な方法は何ですか?

  • 7.3B行の1つの大きなテーブル?
  • 各7.3M行の1000テーブル(各株式記号に1つ)?
  • データベースエンジンの任意の勧告?(私はAmazon RDSのMySQLを使用することを計画している)。

私はこのような大きなデータセットを扱うのに慣れていないので、これは私が学ぶための素晴らしい機会です。私はあなたの助けと助言に大いに感謝します。

編集する。

これはサンプル行です。

'xx', 20041208, 938, 43.7444, 43.7541, 43.735, 43.7444, 35116.7, 1, 0, 0

1列目は銘柄記号、2列目は日付、3列目は分、残りは始値-高値-終値、出来高、3列目は整数です。

ほとんどのクエリは、2012年4月12日12:15と2012年4月13日12:52の間のAAPLの価格を教えてください、のようになります。

ハードウェアについて:Amazon RDSを使用する予定なので、それについては柔軟に対応します。

解決方法は?

クエリの内容、ハードウェア環境について教えてください。

私は非常に非常に行きたくなる NoSQL を使って Hadoop などで、並列処理を利用することができます。

アップデート

なるほど、なぜ?

まず第一に、私がクエリについて質問したことに注目してください。 ワークロードがどのようなものかを知らずに、この質問に答えることはできませんし、私たちもそうです。 (偶然にも、この件に関する記事が近々掲載される予定ですが、今日はリンクできません)。 しかし スケール この問題のために、私は Big Old Database からの移行を考えています。

  • 類似のシステムでの私の経験から、アクセスは大きなシーケンシャル (ある種の時系列分析の計算) か、非常に非常に柔軟なデータ マイニング (OLAP) のどちらかになることが予想されます。 シーケンシャル データは、より良く、より速くシーケンシャルに処理できます。OLAP は、たくさんのインデックスを計算することを意味し、それにはたくさんの時間またはスペースが必要になります。

  • しかし、OLAP の世界で多くのデータに対して効果的に大きな実行を行っている場合、列指向のアプローチが最適かもしれません。

  • ランダムなクエリを行いたい場合、特に相互比較を行う場合は、Hadoopシステムが効果的かもしれません。 なぜでしょうか?なぜなら

    • 比較的小さなコモディティハードウェアで並列性をよりよく利用できる。
    • 高い信頼性と冗長性を実現することができます。
    • これらの問題の多くは、MapReduceのパラダイムに自然に適しています。

しかし、実際のところ、あなたの仕事量について知るまでは、決定的なことは何も言えません。