我正在考虑使用cockroachdb以ACID保证的方式在第三范式中写入数据。所以所有的写作都会被转移到cockroachdb。CQRS与polyglot设置中的cockroachdb
这些读取可能都是基于rowkey到Cassandra的点查找。我相信这样的读取设置将消除对Redis缓存的需要,因为Cassandra会自行快速读取。所以Cassandra表将根据访问路径进行非规范化。
可能存在基于事件的同步插入/更新/删除内部cockroachdb规范化模式插入/更新/删除cassandra denormalzied模式。
问题1:
这是否读/写分离成适合使用cockroachdb有效的用例?其目的是减少连接并快速读取以及写入。蟑螂数据库也成为单一的事实源头,摄取事件源类数据。而像cassandra和elasticsearch这样的其他数据库就成为最终保持同步的查询投影。
问题2:
此安装配合,其中N报表需要进行自动完成的金融交易?根据我的理解,让我们假设在cockroachdb 3NF模式中有事务性地执行了N个SQL语句。在此之后,读取从Cassandra/ElasticSearch发生,由于同步延迟,这些读取将不会同步。在这种最终的一致性方案中,如果用户发送另一个命令以并行地从其他机器获得相同的结果,则将转到将在cockroachdb中查找的命令处理程序。我认为既然CockroachDb符合ACID标准,那么在查找cockroachdb后,在命令验证步骤期间,我们将确保无效命令。我相信这个cockroachdb会抛出乐观锁定异常,因为写入同一个表的一个事务已经在进行中。所以问题是 - 在这种情况下,我们是否应该阅读CockroachDB而不是Cassandra/ElasticSearch?
问题3
最后用例我脑子里想的是让cockroachdb起什么火花集群将做卡桑德拉相对于聚合作用。我们可以在cockroachdb中进行聚合,这个聚合包含所有的数据并存储在cassandra的预聚合表中。虽然ElasticSearch也能够进行聚合,但这里有个问题 - 这个用例是否听起来正确w.r.t使用cockroachdb而不是elasticsearch进行聚合?
感谢您的详细回复。我仍然有关于全文搜索的问题,请问cockroachdb中的当前选项是什么? – fortm
CockroachDB目前没有任何种类的全文索引。它在[本期]中进行了追踪(https://github.com/cockroachdb/cockroach/issues/7821)。我们希望有一天能做到,但还没有安排。 –