アプリケーションは継続的に(ほぼ毎秒)ユーザーの位置を収集して保存します。
このデータは構造化されています。リレーショナルデータベースでは、次のように保存されます。
| user | timestamp | latitude | longitude |
ただし、データが多すぎます。ユーザーごとに、毎日60×60×24 = 86,400レコードになります。ユーザー数が1000であっても、これは毎日86,400,000レコードを意味します。
そして、それは毎日86,400,000レコードだけではありません。これらのレコードが処理され、それらの処理されたバージョンも保存されるためです。したがって、その数に約2を掛けます。
データの使用方法
基本的に、位置データのより粗いバージョンを作成して、より簡単に使用できるようにする予定です。あれは:
- タイムスタンプ付きの受信データを並べ替えます。
- このリストを順番に繰り返して、場所が大幅に変更されたかどうかを判断します(緯度と経度の変化量を確認してください)。
- 重要ではない場所の変更を出力の単一のエントリとして表します(したがって、出力は場所データのより粗いバージョンです)。
- 大幅な変更のためにさらに大きな緯度と経度の変更を要求することにより、出力でこのプロセスを繰り返します。したがって、前の出力から生成される出力は、さらに粗くなります。
- プロセス全体を必要なだけ繰り返します。
- さまざまな解像度を集計してユーザーに送信します。また、後で使用できるように、データのすべての解像度を保存します。
このデータを保存するには何を使用すればよいですか?リレーショナルデータベースまたはNoSQLソリューションを使用する必要がありますか?このアプリケーションを設計するとき、他に何を考慮すべきですか?