gpt4 book ai didi

ruby-on-rails - 主从暴露技术债务

转载 作者:行者123 更新时间:2023-11-29 14:34:16 25 4
gpt4 key购买 nike

使用 rails 和 postgresql。

我在编写我的应用程序时并未考虑使用主从配置。

现在,我已经在应用程序中设置了主从,现在我遇到了一些技术债务。我的应用程序中的相同进程写入数据库,然后立即从数据库中读取。读取未在读取数据库上进行,但数据不存在。以前,这效率不高,但不会造成任何问题,因为两个数据库是相同的。现在,这在我面前爆炸了。

我的问题是很难在代码中找到所有存在这个问题的地方。有人可以向我建议一种技术,让我的测试以读取和写入使用未更新的不同数据库的方式运行,以便我找出问题所在吗?

其他解决方案也将受到欢迎!

最佳答案

我强烈建议您重新考虑您的主/从配置,或者主/从是否适合您的应用程序。

构建一个假设写入持久存储的数据可以立即读回的系统并不是“技术债务”。这是正常和正确的。虽然你可以合理地避免这种模式

write A, ..., look up A.key

使用各种简单的缓存方案,尝试编写代码,例如

write A, ..., complex query that *might* fetch A 

要求您保留 A 的副本并确定它是否会在单独的代码中满足查询的 WHERE 子句,仅仅是因为您不能依赖查询结果。除非您的系统非常小和简单,否则尝试在整个系统范围内执行此操作将产生 super 复杂、脆弱、昂贵且丑陋的代码库。我强烈建议您不要尝试。

主/从持久存储组织的通常目的是离线读取与写入时间无关的流量。例如,如果您的系统挖掘数据以生成用户可访问的摘要,您将离线度量计算并让它挖掘奴隶。这可以防止挖掘查询从用户请求处理中抽取资源。写入主机和复制到从机之间的小延迟是没有问题的。

如果您的应用因为持久存储上的负载过多而苦苦挣扎,您可能需要分区数据(有时称为分片),而不是主/从数据。分区会使您面临另一种问题:没有跨分区事务。但这通常比您正在尝试的更容易解决。

关于ruby-on-rails - 主从暴露技术债务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47374207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com