2014-10-07 51 views
0

我们正在从事件存储中存储的数据创建lucene索引作为事件流。这些索引用于为我们的数据提供高效的分页/排序/搜索功能。复制Lucene索引中的所有数据

碰巧我们必须复制索引中的所有数据才能满足我们的要求。 什么是概念上在这种情况下查询数据的最佳方式?

我看到2个选项:

  • 查询中的所有数据直接从指数构建视图模型
  • 查询只从索引标识的列表,并使用这些ID从事件存储查询数据

我们也关注可伸缩性和容错性,所以我也必须考虑这些。有什么建议么?

回答

0

我猜想选项#1更好。 将数据存储在索引中,只有那些您需要从分页/过滤表格中构建模型的部分。并从那里获取它们。它闪电般快。

Hibernate Search使用类似于选项#2的方法。 它存储id和Java类,在索引中查找然后从DB中提取。虽然它可以避免昂贵的代价。最近我有一个案例,我使用它,因为默认行为杀死了我的数据库。奇迹般有效。

我从来没有(跨越4个项目)经历过索引腐败,但应该可以在应用程序中明确重新索引。

您是否使用事件快照?它们也可以被索引。