2016-07-05 8 views
0

私は、複数のデバイス間でユーザーデータを同期するクラウド同期アプリケーションを構築しています。私は交差点にあり、サーバー上のデータをファイルとして保管するか、リレーショナル・データベースに保管するかを決定しています。私はAmazon Web Servicesを使用しており、代わりにテーブルにデータを格納することを選択した場合は、S3をユーザーファイルまたはそのデータベースサービスに使用します。保存しているデータは、10秒ごとのアプリケーションの状態です。これは、格納されるユーザーあたりの平均行数が100,000であり、現在のユーザー数が2万人で、バットから20億行分のデータがあるため、データベースに格納するのは問題になる可能性があります。その情報をファイルに保存する方が良いでしょうか?これは、1人のユーザーあたり6メガバイトの合計約100個のファイルになるためです。ファイルまたはデータベースを使用する必要がありますか?

+2

「保存しているデータがアプリケーションの状態です」ということを具体的に説明できますか?リレーショナルデータベースにとってより賢明なものにするために、そのデータを列に正規化できますか?前回のアップデート以降に加えられた変更を比較して、すべてをすべてダンプするのではなく、それらを保存することはできませんか? –

+0

@MarcFowlerこれは、外部のマシン(酸素レベル、窒素レベル)から10秒ごとにさまざまなデータを取得するプロフェッショナルなアプリケーションのため、そのように構成する必要があります。そして、私は変更を同期するだけですが、そのユーザーの特定の行を照会するのに20億行はありませんか? –

+1

両方を使用することを検討してください。それは何のための良い、それのo/sのためのデータベースです。だから、通常、それは非ブロブストレージ、2つの融合を意味する – Drew

答えて

1

コメントで説明したように、私はこれらをファイルとして保存します。

S3はキーストアと価値ストアに完全に適しています。変更を比較して不必要に重複するデータがないことを確認できれば、関連するデータをダウンロードすることで同期がはるかに簡単になりますS3からのファイルとそれらをクライアント側で同期させます。

大量の行を格納してクライアントにすばやく提供できるデータベースサーバーを操作する必要がないため、大幅なコスト削減が実現します。

バックグラウンドビューまたは管理ビューとして複数のユーザーに統計情報/データ/情報を集約する場合、これらのファイルのデータを解析するのが難しいことがあります。値を集計するために単純なSQLクエリを書くことはできず、関連するファイルを開き、awkや正規表現などのようなものを処理してから、そのように値を計算する必要があります。

あなたは、そのユーザーに関連する特定のファイルのクライアント側でこれを実行している可能性が高いので、そこにはおそらくいくつかの重複があります。

関連する問題