作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究一个解决方案,其中我们有两个用于以下目的的数据库:
最佳答案
好吧,我可能会吸引一些批评者,但让我以我理解的方式向您解释。我的理解是这个问题/关注更多的是架构角度而不是设计/代码角度。
即时一致性,当然还有最终一致性
来自应用层
对于immediate consitency
在两个数据库之间,实现它们的唯一方法是 polygot persistence in a transactional way
以便 Postgres
中的相同数据和 Elasticearch
得到更新,否则他们都不会。我不会纯粹推荐这个,因为它会给应用程序带来很大的压力,而且你会发现很难扩展/维护。
所以基本上GUI --> Application Layer --> Postgres/Elasticsearch
队列/实时流机制
您需要有一个消息队列,以便更新在基于事件的方法中进入队列。
GUI --> Application Layer --> Postgres--> Queue --> Elasticsearch
indexer
.此工具的目的是从
postgres
执行更新。并将它们插入
Elasticsearch
.
indexer
中拥有什么有多个
single configuration per source
这会有
select *
和索引 everything
进入 Elasticsearch
或 完全爬网Elasticsearch
中时,这将被使用。 only the updated rows
在 Postgres 中,从而将它们推送到 Elasticsearch 或 增量抓取 0
的记录对于最近更新的文档,或基于 timestamp
提取上次更新的记录 30 secs/1 min
或根据您的需要。 增量查询 status
实现增量爬网, ,您需要将其状态更改为1
(成功)或'-1'(失败),以便在下一次爬网中不会拾取相同的文档。 后增量查询 GUI --> Application Layer --> Postgres --> Indexer --> Elasticsearch
关于postgresql - 使用需要同步的两个数据库时如何实现乐观(或悲观)锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53045634/
我正在编写一个 Web 应用程序,两个不同的用户可以在其中更新事物列表,例如待办事项列表。我已经意识到,乐观锁定机制效果最好,因为我不希望出现高争用情况。 我一直在查看事务隔离级别,现在我有点困惑。看
我是一名优秀的程序员,十分优秀!