建立一個典型的Ruby On Rails網站(二)

來源:互聯網
上載者:User

這是第二部分,主要是Mysql資料庫的分布式設計。我建立環境的時候,基本上沒有把資料庫分開。為用到的時候,做準備吧。

主從結構的資料庫設計

www.eol.org 項目本身有主從資料庫和讀寫分開的資料庫設計。

(Master/Slave)和Rails核心資料庫與應用核心資料庫分離。主要依靠以下外掛程式實現:

use_db   : 主要功能是將不同的models 分布到不同的資料庫。詳細說明見下:(http://rails.elctech.com/blog/using-and-testing-rails-with-multiple-databases)

masochism : 主要用於ActiveRecord時,將讀寫操作分開詳細說明參考如下網址(http://www.planetrubyonrails.org/tags/view/masochism)

分布式機構的Mysql資料庫設計

在本程式中,分散式資料庫的實現,主要通過建立串連到不同資料庫的Abstract Class Models, 其他的Models再通過繼承虛類的方式,而串連不同的資料庫。這樣就實現了,將Models分布到不同的資料庫。

在本項目中,有兩個Abstract Class Model分別對應應用程式資料庫,和日誌庫。這兩個Abstract Class Model分別為:

Ruby代碼

- SpeciesSchemaModel- LoggingModel

和它們對應的資料庫可以從database.yml的定義中找到,分別是

Java代碼

- environment_data (e.g. development_data)- environment_logging (e.g. development_logging)

讀寫分開的分布資料庫機制

讀寫分開的資料庫機制是依靠masochism plugin建立兩個資料庫完成的。這兩個數控庫也可以從config/database.yml中看到描述

Ruby代碼

- master_database (master database 儲存核心的Rails資料)- master_data_database (master database 儲存應用本書的資料)

另外,為了區分資料的訪問,分別設計兩個不同的Abstract class讀取以上兩個不同的Master資料庫它們各自擁有直接的Sql查詢許可權。

Ruby代碼

- MasterDatabase   (for the core rails database)- SpeciesSchemaWriter  (for the species data database)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.