最好的方式是对程序是透明的,程序猿们不用关心背后的存储细节问题,比如是分表了还是分库了。
分表1
Deal.table_name = "deals_100"
deal = Deal.new
deal.price = xxx
deal.save
上面写法如果效率比较低的话(诱发底层的很多验证和表的meta数据获取),这样稍微会好些:
if(Deal.table_name != "deals_100"
Deal.table_name = "deals_100"
end
deal = Deal.new
deal.price = xxx
deal.save
这种问题是程序公布了自己的分表策略,每回或者在变更的表的时候,需要写代码来切换表。
分表2
把分表的任务放在sql层,即交给dbms执行sql前,处理一下。
比如这个插件:https://github.com/cookpad/arproxy
+-------------------------+ +----------+ +----------+ +------------------+
| ActiveRecord::Base#find |--execute(sql, name)-->| MyProxy1 |-->| MyProxy2 |-->| Database Adapter |
+-------------------------+ +----------+ +----------+ +------------------+
可以在MyProxyN内对sql进行处理
这种处理方法的好处是对程序透明了,但坏处是直接替换sql。
简单的crud操作还好,但对逻辑比较复杂的操作,比如发杂的连表查询等,替换策略可想而知。
分表的折中处理
分库1
待续。。。
。
。
。
参考:
dynamic table names for Active Record models
How to change ActiveRecord's table name during runtime
相关推荐
Rails/ActiveRecord 精简版 ![预览] [预览]: ./docs/preview.png 描述 Rails/ActiveRecord Lite 是流行的 Ruby on Rails 框架的精简版。 这个应用程序的目的是更深入地了解 Rails 和 ActiveRecord 的工作原理,特别...
5. **Gemfile与Bundler**:管理Rails应用依赖的工具,通过Gemfile指定项目所需的库和版本,Bundler负责安装和管理这些依赖。 6. **Bootstrap**:Inspinia Admin基于Bootstrap,所以需要了解其栅格系统、组件和...
`weixin_rails_middleware` 是一个开源的 Ruby 框架中间件,设计用于帮助开发者轻松地在 Rails 应用程序中集成微信服务。这个中间件提供了与微信API交互的功能,包括验证微信服务器的请求、处理用户消息、以及发送...
rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
Rails的ActiveRecord ORM(对象关系映射)允许开发者以更面向对象的方式操作数据库,而路由系统则使得URL管理变得直观和灵活。 InspiniaAdmin 2.6.1 版本中的亮点包括: 1. **用户认证与授权**:内置了用户注册、...
《敏捷Web开发与Rails》第三版是一本深入探讨Ruby on Rails框架在敏捷软件开发方法论下的应用指南。本书由多位知名作者共同编写,包括Sam Ruby、Dave Thomas、David Heinemeier Hansson等,他们都是在Ruby社区内享有...
在Ruby on Rails框架中,ActiveRecord是一个至关重要的组件,它负责模型(Model)与数据库之间的交互。本实例将深入探讨ActiveRecord的基本用法,帮助理解如何在实际开发中有效地运用这个强大的工具。 首先,让我们...
1. **Gemfile**:定义了项目依赖的Gem库,包括与Solr通信的solr-rails库和其他辅助库。 2. **lib目录**:存放自定义的Ruby模块和类,如连接Solr的适配器、Solr配置文件解析工具等。 3. **app/models/solr_document....
rails_best_practices rails_best_practices是用于检查Rails代码质量的代码度量工具。 它支持以下ORM / ODM: 活动记录 蒙古型 mongomapper 以及以下模板引擎: erb 哈姆 减肥 拉布尔 rails_best_practices...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
《InspiniaAdmin 2.5在Rails框架下的种子项目详解》 InspiniaAdmin 2.5 Rails_Seed_Project是一款基于Bootstrap框架的高级管理模板,专为Ruby on Rails开发者设计,旨在加速Web应用程序的开发过程。这个项目作为...
《Inspinia Admin - v2.5 Rails Seed Project:打造高效后台管理的全面解析》 在Web开发领域,后台管理界面的设计与实现是一项至关重要的任务,它直接影响到开发者的工作效率和用户体验。Inspinia Admin是一款广受...
此外,Rails的ActiveRecord模型提供了强大的关联(Associations)功能,如has_many、belongs_to等,这在构建复杂的RESTful API时非常有用。通过关联,可以方便地处理资源之间的关系,比如用户拥有多个博客文章...
RUBY的经典之作,对其在RAILS下开发写得很详细
在实际开发中,你还可以结合其他工具和库,例如使用 ActiveStorage(Rails 5.2 引入的存储服务)处理文件上传,或者利用 ActionCable 实现编辑器内容的实时预览。总的来说,`rails_kindeditor` 插件是 Ruby on Rails...
使用创建内容的简单方法。 预习 示范 要求 依存关系 MiniMagick 支持的ORM ActiveRecord 支持的资产插件 CarrierWave 安装 使用rails <5和TurboLink <5进行测试 将此行添加到您的应用程序的Gemfile中: ...
Rails_3_Cheat_Sheets.pdf
这个压缩包文件"ActiveRecord简单实例_activerecord(ASP.NET源码).rar"包含了一些示例代码,用于展示如何在ASP.NET项目中实现ActiveRecord模式。 ActiveRecord模式的主要目标是将对象与数据库表进行映射,使得...
rails new jruby_activerecord_test和配置database.yml或克隆此rails new jruby_activerecord_test cd到该文件夹并运行ruby -v确保您正在使用JRuby。 .tool-versions文件将其设置为jruby-9.2.13.0我也尝试了...