【发布时间】:2021-03-31 04:00:57
【问题描述】:
我是 Ignite 的新手。碰巧发现 Ignite 是一个内存数据库,它可能是对我们当前系统的一个很好的改进。
这是我的情况:
1,我们现有一个庞大的OLTP系统。这是针对在线电子商务的。
2、目前应用使用Spring Boot,数据库为Postgres (AWS)
3、app包含上千条sql:select .. from A inner join B, inner join C .... (一般是5~10个表join)
4,应用程序使用 select ... for update 来锁定条目并执行更新。重试/超时在应用中配置为并发。
5,系统处理在线流量(100 个请求/秒)以及一些后端作业更新。所以并发可能每秒都在一条记录上发生。
这是我的目的:
1、希望更改最小应用代码以集成Ignite;
2,计划这样设置架构:App -> Ignite (Memory DB) -> Postgres (Backup DB)。 (原因是我们是Ignite的新手,为了避免操作风险。所以还是倾向于保留Postgres作为备份)
一些问题
第一季度。不支持 writeThrough 与 TRANSACTIONAL 一起使用?
Q2,由于我们需要事务/锁定(选择...进行更新),我使用 CacheAtomicityMode.TRANSACTIONAL,但似乎无法自动同步到 Postgres(Q1)。有没有办法同时让 TRANSACTIONAL 和 Autosync 到 PG?否则很麻烦。我们需要自己同步。
Q3,如果我们在app中实现动态dataSource,那么在Ignite宕机的情况下可以实现切换到PG。但这要求PG上的数据与Ignite相同。请问如何在 Postgres 和 Ignite 之间保持数据一致性?
【问题讨论】:
标签: postgresql concurrency transactions locking ignite