`
fantaxy025025
  • 浏览: 1311858 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Rails_ActiveRecord_分表分库_方法搜集

 
阅读更多

 

最好的方式是对程序是透明的,程序猿们不用关心背后的存储细节问题,比如是分表了还是分库了。

 

分表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_lite

    Rails/ActiveRecord 精简版 ![预览] [预览]: ./docs/preview.png 描述 Rails/ActiveRecord Lite 是流行的 Ruby on Rails 框架的精简版。 这个应用程序的目的是更深入地了解 Rails 和 ActiveRecord 的工作原理,特别...

    inspinia admin - v2.5 Rails_Full_Version

    5. **Gemfile与Bundler**:管理Rails应用依赖的工具,通过Gemfile指定项目所需的库和版本,Bundler负责安装和管理这些依赖。 6. **Bootstrap**:Inspinia Admin基于Bootstrap,所以需要了解其栅格系统、组件和...

    weixin_rails_middleware, 微信集成 ruby weixin_rails_middleware for integration weixin..zip

    `weixin_rails_middleware` 是一个开源的 Ruby 框架中间件,设计用于帮助开发者轻松地在 Rails 应用程序中集成微信服务。这个中间件提供了与微信API交互的功能,包括验证微信服务器的请求、处理用户消息、以及发送...

    rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器.zip

    rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板.zip

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...

    InspiniaAdmin 2.6.1 Rails_Full_Version

    Rails的ActiveRecord ORM(对象关系映射)允许开发者以更面向对象的方式操作数据库,而路由系统则使得URL管理变得直观和灵活。 InspiniaAdmin 2.6.1 版本中的亮点包括: 1. **用户认证与授权**:内置了用户注册、...

    agile_web_development_with_rails_3rd_edition.9994652073.pdf

    《敏捷Web开发与Rails》第三版是一本深入探讨Ruby on Rails框架在敏捷软件开发方法论下的应用指南。本书由多位知名作者共同编写,包括Sam Ruby、Dave Thomas、David Heinemeier Hansson等,他们都是在Ruby社区内享有...

    ActiveRecord简单实例_activerecord.zip

    在Ruby on Rails框架中,ActiveRecord是一个至关重要的组件,它负责模型(Model)与数据库之间的交互。本实例将深入探讨ActiveRecord的基本用法,帮助理解如何在实际开发中有效地运用这个强大的工具。 首先,让我们...

    bhl_rails_solr-源码.rar

    1. **Gemfile**:定义了项目依赖的Gem库,包括与Solr通信的solr-rails库和其他辅助库。 2. **lib目录**:存放自定义的Ruby模块和类,如连接Solr的适配器、Solr配置文件解析工具等。 3. **app/models/solr_document....

    rails_best_practices:Rails项目的代码度量工具

    rails_best_practices rails_best_practices是用于检查Rails代码质量的代码度量工具。 它支持以下ORM / ODM: 活动记录 蒙古型 mongomapper 以及以下模板引擎: erb 哈姆 减肥 拉布尔 rails_best_practices...

    rails_admin_acts_as_list:rails_admin插件以对记录进行排序

    介绍插件,用于对记录进行排序(使用 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_Seed_Project

    《InspiniaAdmin 2.5在Rails框架下的种子项目详解》 InspiniaAdmin 2.5 Rails_Seed_Project是一款基于Bootstrap框架的高级管理模板,专为Ruby on Rails开发者设计,旨在加速Web应用程序的开发过程。这个项目作为...

    inspinia admin - v2.5 Rails_Seed_Project

    《Inspinia Admin - v2.5 Rails Seed Project:打造高效后台管理的全面解析》 在Web开发领域,后台管理界面的设计与实现是一项至关重要的任务,它直接影响到开发者的工作效率和用户体验。Inspinia Admin是一款广受...

    RestFul_Rails_Dev_pdf_v_0.1.zip

    此外,Rails的ActiveRecord模型提供了强大的关联(Associations)功能,如has_many、belongs_to等,这在构建复杂的RESTful API时非常有用。通过关联,可以方便地处理资源之间的关系,比如用户拥有多个博客文章...

    Ruby on Rails_ Up and Running

    RUBY的经典之作,对其在RAILS下开发写得很详细

    ruby rails_kindeditor(编译器)插件

    在实际开发中,你还可以结合其他工具和库,例如使用 ActiveStorage(Rails 5.2 引入的存储服务)处理文件上传,或者利用 ActionCable 实现编辑器内容的实时预览。总的来说,`rails_kindeditor` 插件是 Ruby on Rails...

    rails_admin_content_builder:使用rails_admin创建内容的简单方法

    使用创建内容的简单方法。 预习 示范 要求 依存关系 MiniMagick 支持的ORM ActiveRecord 支持的资产插件 CarrierWave 安装 使用rails <5和TurboLink <5进行测试 将此行添加到您的应用程序的Gemfile中: ...

    Rails_3_Cheat_Sheets.pdf

    Rails_3_Cheat_Sheets.pdf

    [其他类别]ActiveRecord简单实例_activerecord(ASP.NET源码).rar

    这个压缩包文件"ActiveRecord简单实例_activerecord(ASP.NET源码).rar"包含了一些示例代码,用于展示如何在ASP.NET项目中实现ActiveRecord模式。 ActiveRecord模式的主要目标是将对象与数据库表进行映射,使得...

    jruby_activerecord_test:尝试让JRuby使用ActiveRecord 6

    rails new jruby_activerecord_test和配置database.yml或克隆此rails new jruby_activerecord_test cd到该文件夹​​并运行ruby -v确保您正在使用JRuby。 .tool-versions文件将其设置为jruby-9.2.13.0我也尝试了...

Global site tag (gtag.js) - Google Analytics