0

我遇到了一个设计问题,我想我会征求你的意见。

我目前正在通过轮询他们的 api 来索引来自不同服务的信息。根据这些数据,我正在构建一个量身定制的模型,用于我自己的服务。

我遇到的问题是我的 ID 应该是什么样子。这些服务为其集合中的每个元素提供了一个 ID(这很好),但我认为我不想使用外部 ID 作为我的文档上的标识符。如果两个服务有重复的 id 怎么办?我该如何处理?我正在考虑只向 ids 添加一个字符(这是一个问题,因为我希望 ids 是数字),取自轮询服务的名称?还是我应该只创建自己的唯一 ID?

我使用 ElasticSearch 作为数据存储。

谢谢,

詹姆斯福特

4

1 回答 1

2

我可以想到三种方法来处理这个问题:

  1. 引入表示数据源的新键以避免冲突。因此,您在 Elastic Search 中的文档中有一个 API ID(1、2、3 等),然后是他们提供的实体 ID。所有查询都将使用 API ID 和实体 ID。

  2. 向 ID 添加一个大数字以将它们分隔在一个新的全局空间中。只需在每个 ID 上添加大约 1 万亿,然后他们都可以获得自己的 ID 空间。显然,这里的技巧是预测数据可以增长多少。(您不希望将来发生碰撞。)

  3. 在映射到您的定制模型的新实体上创建您自己的自动增量。

无论您选择哪一个,我都建议您保留原始 ID,以防您需要将其映射回源 API。

于 2013-01-21T01:23:28.163 回答