`
jiajie0531
  • 浏览: 29283 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Rails Database Migrations 7 Schema Dumping and You 数据库模式输出

阅读更多

version: Rails 4.1

7 Schema Dumping and You 数据库模式输出

7.1 What are Schema Files for? 数据库模式文件是为了什么?

基本上就是 Migrations,对于你的数据库模式而言,Migrations 是没有验证的代码。其作用就是形成由 Active Record 产生的 db/schema.rb 或者 一个 SQL 文件, 用来测试数据库的. 他们不是被设计成用来编辑的, 他们仅仅只是显示数据库当前的状态.
 
对于部署一个应用的实例用来回放整个数据迁移文件(migration) 的历史而言, 这不是必须的(也容易出错). 而仅仅载入到当前模式的数据描述是比较简单和快速的.
 
例如, test 数据库是如何创建的: 当前开发模式数据库被输出为文件(可能是 db/schema.rb 或者 db/structure.sql), 然后载入到 test 数据库.
 
数据库模式文件也是很有用的, 如果你想快速浏览一下一个 Active Record 对象所拥有哪些特性. 这信息不在模型的代码里, 经常地遍布在几个数据迁移文件(migrations)里, 但这信息是很漂亮地被归纳在数据库模式(schema)文件中. annotate_models gem 自动地在每一个模型的概述顶部增加和更新注释, 如果你想要那个功能的话.
 

7.2 Types of Schema Dumps 数据库模式输出的类型

有两种方式来输出数据库模式. 这是在 config/application.rb 中设置的, 把config.active_record.schema_format 设置为 :sql 或者 :ruby. 
 
如果设置了 :ruby, 那么数据库模式被保存为 db/schema.rb. 如果你看到这个文件, 你将会发现一大堆可怕的标签,就像一个巨大的数据迁移文件(migration):
 
ActiveRecord::Schema.define(version: 20080906171750) do
  create_table "authors", force: true do |t|
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
  end
 
  create_table "products", force: true do |t|
    t.string   "name"
    t.text "description"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string "part_number"
  end
end

在许多方面, 确实是这样的.  这个文件的创建是用来检查数据库和描述它的数据结构, 使用 create_table, add_index之类的. 因为这是不依赖数据库, 它可以被载入到任何数据库, 只要Active Record 支持的数据库种类. 这是非常有用的, 如果你过去做过的应用, 它是能够运行在多种数据库上面的.

 

然而这里也有一种权衡让步. db/schema.rb 不能描述数据库的特有属性, 例如外键限制, 触发器, 或者是存储过程. 当在一个数据迁移文件(migration)中, 你可以生成定制的SQL语句, 数据库模式输出中不能够重新组成那些来自数据库的语句.  如果你正在使用类似于这种特性, 那么你应该设置数据库模式的格式为 :sql.

 

等价于使用Active Record 的数据库模式输出的另外一个情况是, 数据库的结构将会被使用一个工具来输出(通过 db:structure:dump 的Rake task) 把数据库的详细描述都放到 db/structure.sql 文件里.例如, 对于 PostgreSQL, 使用的是 pg_dump 工具. 对于 MySQL, 这个文件将包含 SHOW CREATE TABLE 对于多个数据表的输出内容.

 

载入这些数据库模式是一个相对简单的问题, 用来生成他们所包含的SQL语句. 在定义上, 这是会创建一个完美的数据库结构拷贝. 然而使用:sql模式格式将会阻止载入数据库模式到一个 RDBMS(关系型数据库)中, 除了是用来创建它的数据库.

 

7.3 Schema Dumps and Source Control 数据库模式的输出和代码控制

因为数据库模式输出是验证过的代码, 所以强烈建议你用代码控制来管理他们.

 

 

0
0
分享到:
评论

相关推荐

    Rails.Angular.Postgres.and.Bootstrap.2nd.Edition

    You should have some experience with basic Rails concepts and a cursory understanding of JavaScript, CSS, and SQL, but by no means need to be an expert. You'll learn how to install Postgres on your ...

    mongoid_rails_migrations:Mongoid的数据迁移

    gem "mongoid_rails_migrations" 如何使用 创建迁移 $ rails generate mongoid:migration 运行迁移: $ rails db:migrate $ rails db:migrate:down VERSION= $ rails db:migrate:up VERSION= $ rails db:rollback...

    mongoid_rails_migrations, Mongoid的数据迁移.zip

    mongoid_rails_migrations, Mongoid的数据迁移 发行说明最新版本,1.1. x, 目标 Mongoid> = 4.0.0和 Rails> = 4.2.0.对于 Rails> = 3.2.0和 Mongoid> = 3.0.0,使用版本 1.0.0.

    PHP Database Migrations-开源

    `PHP Database Migrations` 是一个用于管理这些变化的工具,它允许开发者以有序且可控制的方式更新或回滚数据库模式。这个开源项目借鉴了 Ruby on Rails 的迁移理念,使得在PHP环境中也能实现数据库版本控制。 ### ...

    rails和mysql数据库连接中出现的问题以及解决办法

    在开发Web应用时,Rails框架和MySQL数据库的集成是一个常见的选择。然而,有时在尝试连接Rails应用到MySQL数据库时,可能会遇到一些问题。本篇文章将深入探讨这些常见问题及其解决方案。 首先,Rails与MySQL的连接...

    Rails, Angular, Postgres, and Bootstrap(Pragmatic,2016)

    As a Rails developer, you care about user experience and performance, but you also want simple and maintainable code. Achieve all that by embracing the full stack of web development, from styling with...

    Ruby on rails 数据库详细配置

    总的来说,配置Ruby on Rails的数据库涉及到安装必要的数据库驱动和Rails框架,然后在`database.yml`文件中正确设定数据库连接参数。理解这个过程对于开发基于Rails的应用程序至关重要,因为这使得Rails能够与各种...

    cassandra_migrations:Cassandra Migrations是用于Rails应用程序的Cassandra数据库模式迁移库

    卡桑德拉迁移描述Cassandra Migrations是用于Rails应用程序的Cassandra数据库架构迁移库。 该宝石提供: 多环境数据库配置版本化的CQL模式迁移管理用于简化迁移代码的模式修改DSL 用于数据库架构管理的瑞克任务支持...

    Agile Web Development with Rails 4th edition(敏捷Web开发与Rails:程序指南 第四版)

    7. **Migrations and Database Schema**: 书中详细讲解了如何使用Rails的迁移(migrations)来管理数据库结构的变化,以及如何编写有效的数据库模式(schema)。 8. **Testing**: 对于Rails应用,测试是必不可少的一...

    Ruby on Rails安装及MySQL数据库配置指南

    Ruby on Rails 安装及 MySQL 数据库配置指南 本文详细介绍了 Ruby on Rails 的安装步骤,以及 MySQL 数据库的配置方法,并提供了一些官方阅读资源。 一、Ruby on Rails 安装 Ruby on Rails 的安装可以分为以下几...

    Ruby-Multiverse让Rails支持多数据库

    例如,`MULTIVERSE_DATABASE=secondary rails db:migrate`将会只对`secondary`数据库执行迁移。 此外,Multiverse还支持数据库路由,允许你在运行时动态切换数据库,这在处理临时的性能需求或者故障转移时非常有用...

    中文版rails教程

    2. **数据库迁移(Database Migrations)**:Rails使用ActiveRecord和SQLite、MySQL或PostgreSQL等数据库系统交互。开发者通过编写迁移文件来定义和修改数据库结构。 3. **路由(Routing)**:Rails的路由系统根据...

    Ruby on Rails入门例子

    - **数据库迁移(Database Migrations)**:Rails使用迁移来管理数据库结构的变化。通过`rails generate migration AddTitleToPosts title:string`创建迁移,然后运行`rails db:migrate`执行迁移。 - **...

    Rails Recipes英文版(清晰文字pdf+源码)

    From the latest Ajax effects to time-saving automation tips for your development process, "Rails Recipes" will show you how the experts have already solved the problems you have. Use generators to ...

    Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf

    ### Ubuntu 11.04下Ruby on Rails与MySQL数据库集成指南 #### 一、安装与配置MySQL数据库 在Ubuntu 11.04环境中,安装MySQL数据库是部署Ruby on Rails应用的重要步骤之一。首先,通过打开终端并执行以下命令进行...

    Ruby+for+Rails

    在Rails中,可以配置数据库连接信息,使用`database.yml`文件。安装MySQL后,通过Gemfile中的`gem 'mysql2'`来添加MySQL驱动,接着运行`bundle install`安装依赖。 4. **Rails基础知识** - **模型(Model)**:...

Global site tag (gtag.js) - Google Analytics