【发布时间】:2013-08-10 04:11:56
【问题描述】:
问题
我正在为几十万种产品构建 postgres 数据库。我将设置一个索引(Solr 或 ElasticSearch),以缩短复杂搜索查询的查询时间。
现在的重点是如何让索引与数据库同步?
过去我有一种应用程序会定期轮询数据库以检查应该完成的更新,但我会有一个过时的索引状态时间(从数据库更新到索引更新拉)。
我更喜欢这样的解决方案,在该解决方案中,数据库会通知我的应用程序(java 应用程序)数据库中的某些内容已发生更改,然后应用程序将决定是否需要更改索引更新与否。更准确地说,我会构建一种生产者和消费者结构,希望副本能够从 postgres 收到通知,告知发生了一些变化,如果这与索引的数据相关,它会存储在要更新的堆栈中。消费者将使用此堆栈并构建要存储到索引中的文档。
可能的解决方案
一种解决方案是编写一种副本端点,在该端点中,应用程序将充当 postgres 实例,用于从原始数据库复制数据。有人对这种方法有一些经验吗?
我还有哪些其他解决方案可以解决这个问题?
【问题讨论】:
标签: java postgresql indexing synchronization replication