Solr用于系统中的不同帐户

时间:2016-11-11 02:53:07

标签: solr

我正在开发一个SaaS,每个帐户都有一个数据库,基本上都是相同的表。分别索引所有数据库的最佳方法是什么?我正在考虑为同一服务器中的每个数据库设置不同的solr实例(不同的端口),但它可能在服务器上很难。所以,我对下一步该做什么感到非常怀疑。我在solr文档中找不到任何有用的想法。你们能帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果您将所有租户的所有数据存储在一个集合中,那么一开始就很容易,因为您可能会对架构进行一些更改,如果您为所有客户执行一次更容易,则会更容易。 作为此场景中的一个负面因素,您将把大量不相关的数据组合在一起,并且您始终必须对租户(客户端)ID使用过滤器查询。

如果您为同一个Solr服务器上的每个租户创建一个集合,那该怎么办?这样您就不会混合租户的数据,而是实现您基本需要的功能。 在这种情况下,正如您的关系数据库实例一样,您必须保持架构更改同步。

对于关系数据库,有flywayliquibase等工具可用于对每个租户数据库上应用的更改进行版本控制。

对于Solr,AFAIK没有这样的工具,但您可以通过Solr Schema API以编程方式应用架构更改。如果您必须执行无法通过Schema API完成的高度详细的更改,则可以使用其更新版本替换每个集合的schema.xml文件,然后重新启动solr服务器。

您需要记住的是向后兼容性。每当您向任何数据库(关系数据库或Solr)添加一些更改时,您都需要考虑旧代码仍然必须使用您在关系数据库/ solr架构结构上执行的最新更新。