0

設計上の問題が発生したので、アドバイスをお願いしたいと思いました。

現在、API をポーリングして、さまざまなサービスからの情報のインデックスを作成しています。そして、そのデータから、自分のサービスで使用するために調整されたモデルを構築しています。

私が抱えている問題は、ID がどのように見えるかということです。サービスはコレクション内の各要素の ID を提供します (これは良いことです) が、私の場合、ドキュメントの識別子として外部 ID を使用したいとは思いません。2 つのサービスの ID が重複している場合はどうなりますか? これをどのように処理すればよいですか?ポーリングされたサービスの名前から取得した 1 文字を ID に追加することを考えています (ID を数値にしたいので、これは問題です)。それとも、独自の一意の ID を作成する必要がありますか?

ElasticSearch をデータストアとして使用しています。

ありがとう、

ジェームズ・フォード

4

1 に答える 1

2

これを処理するには、次の 3 つの方法が考えられます。

  1. 衝突を避けるために、データのソースを表す新しいキーを導入します。したがって、Elastic Search のドキュメントには、API ID (1、2、3 など) と、それらが提供したエンティティ ID があります。すべてのクエリは、API ID とエンティティ ID の両方を使用します。

  2. ID に大きな数字を追加して、新しいグローバル スペースに配置します。すべての ID に 1 兆程度を追加するだけで、ID 用の独自のスペースが得られます。明らかに、ここでの秘訣は、データがどれだけ増加するかを予測することです。(将来、衝突はしたくありません。)

  3. 調整されたモデルにマップされる新しいエンティティに独自の自動インクリメントを作成します。

どちらを選択しても、元の ID をソース API にマップし直す必要がある場合に備えて、元の ID を保持することをお勧めします。

于 2013-01-21T01:23:28.163 に答える