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 创建索引 —— 可以简单地使用迁移创建。可以轻松地使用 create_table 迁移创建索引,也可以创建一个额外的迁移来创建索引。以下是一个迁移示例,可用来为 ChangingThePresent.org (请参见 参考资料)创建索引:
新闻热点
疑难解答