-4

「一意」とは、ユーザーがアプリを2回以上ダウンロードした場合、別のユーザーがアプリを再度ダウンロードするまで、そのダウンロード数は永久に1のままであることを意味します。たとえば、ユーザーのダウンロードの動作を次のように追跡します。

Date        User        App name
2012-01-01  jack        Angry Birds
2012-01-01  jack        Angry Birds
2012-01-02  jack        Angry Birds
2012-01-02  paul        Angry Birds
2012-01-02  jack        Snappea

これにより、結果が得られるはずです。

Angry Birds        2
Snappea            1

これを実装する簡単な方法は、HashSetなどのデータ構造を使用してユーザー+アプリ名をキーとして格納することです。しかし実際には、AppStoreにはたくさんのユーザーとアプリがあります。ユーザー数が400Mで、アプリが650Kあるとすると、HashSetのサイズは最悪の状況で400M * 650K= 260Tに達します。また、毎日ダウンロード数を計算する必要があると想定しています。

Google Playのヒット数は60万、インストール数は200億、AppStoreのダウンロード数は2012年6月までに300億に達しました。それでも、それは大きな数字です。

では、どうすればより少ないスペースで、しかも高速に実装できるでしょうか。hadoop / hbaseを使用する場合は?

4

1 に答える 1

0

データベースを使用する:のテーブルを用意しますusers。各ユーザーには、ダウンロードの履歴が必要です。ユーザーがアプリをダウンロードすると、ダウンロードの履歴に追加されます。これが新しいアプリの場合は、app(トリガーを使用して)テーブルを更新してカウントを増やします。いいですね?

于 2013-01-07T07:04:25.747 に答える