Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
9d3d274d
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9d3d274d
编写于
6月 14, 2019
作者:
E
Eileen M. Uchitelle
提交者:
eileencodes
6月 14, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Merge pull request #36488 from eileencodes/update-multi-db-docs
Update multi-db docs
上级
6306fd95
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
1 deletion
+20
-1
guides/source/active_record_multiple_databases.md
guides/source/active_record_multiple_databases.md
+20
-1
未找到文件。
guides/source/active_record_multiple_databases.md
浏览文件 @
9d3d274d
...
...
@@ -32,6 +32,7 @@ The following features are not (yet) supported:
*
Sharding
*
Joining across clusters
*
Load balancing replicas
*
Dumping schema caches for multiple databases
## Setting up your application
...
...
@@ -121,6 +122,12 @@ config.active_record.writing_role = :default
config
.
active_record
.
reading_role
=
:readonly
```
It's important to connect to your database in a single model and then inherit from that model
for the tables rather than connect multiple individual models to the same database. Database
clients have a limit to the number of open connections there can be and if you do this it will
multiply the number of connections you have since Rails uses the model class name for the
connection specification name.
Now that we have the database.yml and the new model set up it's time to create the databases.
Rails 6.0 ships with all the rails tasks you need to use multiple databases in Rails.
...
...
@@ -253,17 +260,29 @@ for the 'nonexistent' role.)`
## Caveats
### Sharding
As noted at the top, Rails doesn't (yet) support sharding. We had to do a lot of work
to support multiple databases for Rails 6.0. The lack of support for sharding isn't
an oversight, but does require additional work that didn't make it in for 6.0. For now
if you need sharding it may be advisable to continue using one of the many gems
that supports this.
### Load Balancing Replicas
Rails also doesn't support automatic load balancing of replicas. This is very
dependent on your infrastructure. We may implement basic, primitive load balancing
in the future, but for an application at scale this should be something your application
handles outside of Rails.
Lastly, you cannot join across databases. Rails 6.1 will support using
`has_many`
### Joining Across Databases
Applications cannot join across databases. Rails 6.1 will support using
`has_many`
relationships and creating 2 queries instead of joining, but Rails 6.0 will require
you to split the joins into 2 selects manually.
### Schema Cache
If you use a schema cache and multiple database you'll need to write an initialzer
that loads the schema cache from your app. This wasn't an issue we could resolve in
time for Rails 6.0 but hope to have it in a future version soon.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录