Ruby on Rails 編程常常會將您寵壞。這一不斷發展的框架會讓您從其他框架的沉悶乏味中解脫出來。您可以用習以為常的幾行代碼片斷表達自己的意圖。而且還可以使用 ActiveRecord。
對于我這樣的一個老 Java? 程序員而言,ActiveRecord 多少有點生疏。通過 Java 框架,我通常都會在獨立的模型和模式之間構建一種映射。像這樣的框架就是映射框架。通過 ActiveRecord,我只定義數據庫模式:或者用 SQL 或者用稱為遷移(migration)的 Ruby 類。將對象模型設計建立于數據庫結構之上的那些框架稱為包裝框架。與大多數包裝框架不同,Rails 能通過查詢數據庫表發現對象模型的特征。與構建復雜查詢不同,我使用模型在 Ruby(而非 SQL)中遍歷關系。這樣一來,我既獲得了包裝框架的簡單性,又具備了映射框架的大部分功能。ActiveRecord 易于使用和擴展。有時,甚至有些過于簡單。
與任何數據庫框架一樣,ActiveRecord 讓我極易做出很多惹麻煩的事。我所能獲取的列太多,又很容易遺漏重要的結構化數據庫特性,比如索引或空約束。我并不是說 ActiveRecord 是個不好的框架。只不過若是需要擴展,您需要知道如何堅固自己的應用程序。在本篇文章中,我將帶您親歷在使用 Rails 這一獨樹一幟的持久性框架時可能需要的一些重要優化。
基礎管理
生成受模式支持的模型異常容易,只需很少的代碼,即 script/generate model model_name。正如您所知,該命令可生成模型、遷移、單元測試甚至一個默認的 fixture。在該遷移中填上一些數據列,并輸入一些測試數據、編寫幾個測試、添加幾個驗證就算大功告成,這樣做真是很有誘惑力。但請您三思而行。您應該考慮總體的數據庫設計,要特別注意以下這些事情:
Rails 不會讓您擺脫基本的數據庫性能問題。數據庫需要信息,這些信息經常以索引的格式才能有不錯的性能。 Rails 不會讓您擺脫數據完整性問題。雖然大多數 Rails 開發人員都不喜歡在數據庫中保留限制,但您應該考慮像空列這樣的事情。 Rails 為很多元素提供了方便的默認屬性。有時,像文本字段的長度這樣的默認屬性對于大多數實用的應用程序而言都會過大。 Rails 不會強制您創建有效的數據庫設計。在您繼續跋涉,深入學習 ActiveRecord 之前,應該首先確保您已經打好了足夠的基礎。請確保索引結構可以為您所用。如果給定的表很大,如果將在列上而不是 id 上搜索,如果索引能對您有所幫助(更多細節,請參見數據庫管理器文檔 —— 不同的數據庫以不同方式使用索引),那么就需要創建索引。無需采用 SQL 創建索引 —— 可以簡單地使用遷移創建??梢暂p松地使用 create_table 遷移創建索引,也可以創建一個額外的遷移來創建索引。以下是一個遷移示例,可用來為 ChangingThePresent.org (請參見 參考資料)創建索引:
新聞熱點
疑難解答