私は2つの異なるマシンで動作している2つの異なるアプリケーションを持っています。2つの異なるソースから同じ10000レコードをサンプルする方法は?
- アプリケーションAは、
技術Source A
とSource B
が同じデータを提供するようになっている
この2つのアプリケーションでは、ソースAとBの両方から取得したレコードをサンプルします。 Source A
から10000レコードをサンプリングしている場合は、Source B
から同じ10000レコードをサンプリングしたいと考えています。私はuserId
を使って両方のソースからレコードをサンプリングしています。だからuserId
私は10000レコードをサンプリングすることができるいくつかのロジックを追加する必要があります。そして、両方のアプリケーションで同じロジックを使用して、ソースAとBの両方から同じ10000のサンプルレコードを取得します。
userId's
は両方のソースから集めていますが、特定のパターンはありません私が特定の期間にどれだけ多くのユーザーIDを取得できるのか分かりませんが、間違いなく10000を超えることになります。私たちは1日に数百万人のユーザーIDを取得しています。
私は10000レコードをサンプリングできるように、これに使用するアルゴリズムとロジックは何ですか?私は両方のアプリケーションで同じロジックを使用したい..これを行う方法はありますか?私はここでモジュラスを使うことを考えていましたか?両方のアプリケーションで以下のコードと全く同じコードを使用していますので、両方のアプリケーションで同じロジックを使用します。
public void writeToDatabase(final Holder holder) {
String userId = holder.getUserId();
// how to make sure that we are storing only 10000 user data in database
// and it should be same user data from both the system.
// I was thinking of using hashCode as below but I don't think so it is
// right way to use it
if (userId.hashCode() < 10000) {
// write to database
}
}
源(AとB)の両方から同じデータを記憶した後、私は、これら二つのソースの間にいくつかのデータ品質の比較を行う必要があります。基本的には、ソースAとソースBの10000 userId
データを比較します。
[貯水池のサンプリング](https://en.wikipedia.org/wiki/Reservoir_sampling) – amit