问题标签 [db-charmer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 如何通过 ruby on rails 为每个租户使用一个数据库
我遇到了一个不常见的问题,我的客户有 3 家商店,并且想要一个 Web 应用程序来分别管理每个商店。这将是一种常见的多租户方法,但还有一个额外的要求:客户端不想依赖互联网连接。因此我可以想到2个解决方案,每个商店都必须有一个服务器,1个数据库实例和1个应用程序实例运行,如果互联网连接失败,客户端可以使用应用程序本地实例。
异步数据库复制——每个存储本地数据库都是在线服务器数据库的副本。
根据所选存储,使 rails 连接到不同的数据库。在这种情况下,应用程序在线实例将仅连接到 3 个本地数据库(每个数据库位于一个商店)。我看到了Guy 的演讲,并阅读了有关 magic_multi_connections (magicmodels.rubyforge.org/magic_multi_connections) 的内容,但它似乎已经过时了。DbCharmer似乎是一个可能的解决方案,但我不确定它是否会这样做。
其他相关帖子:- railsforum.com/viewtopic.php?id=48435
- stackoverflow.com/questions/1825844/multiple-databases-in-rails
我想知道这种情况下最好的架构。你会怎么做 ?
ruby-on-rails-3 - railscollective_idea/delayed_job gem 出现奇怪的乱序行为
[我在github上发布的交叉发布问题以扩大受众范围]
delay
在事务中使用该方法时,我们看到了一种奇怪的行为。它可以很容易地在带有User
模型和以下代码的 rails 控制台中复制。
有谁知道delayed_job 是否在内部做了一些改变数据库操作顺序的事情,如下所示?
重现步骤
预期行为
当它运行时,我们期望插入到delayed_jobs
表中的操作按照所示的顺序发生,并且在我们指定的事务中。我们在 rails 控制台日志中看到的内容证实了这一点,如下所示。
观察到的(不正确的)行为
但是,mysql
二进制日志显示了一些不同的内容,如下所示。请注意在其他操作之前INSERT
进入delayed_jobs
表是如何发生的,以及它是如何放置在自己的事务中的。
额外细节
我们还测试了没有外部事务的场景(如下所示),并且看到了相同的行为。意思是,INSERT
indelayed_jobs
发生在其他代码之前并且无序。
此外,我们是否在上述代码中的各种 AR 操作中使用save
或都没有关系。save!
这个问题无论如何都会发生。
版本信息
MySQL版本
导轨和宝石