Базы данных

Обратимые миграции в Rails 3.1

мая 10, 2011  |  Published in Ruby on Rails, Ruby on Rails 3, Базы данных

Миграции всегда были одной из основных «фишек» Ruby on Rails. В Rails 3.1 миграции приобретают еще один козырь, который упрощает процесс поддержки логики в up и down методах миграции. Если вам нужно немного восстановить свои знания о миграциях, я рекомендую прочитать официальный .

Давайте начнем с разбора примера миграции из Rails 3.0:

#db/migrate/20110505090317_create_posts.rb
class CreatePosts < ActiveRecord::Migration
  def self.up
    create_table :posts do |t|
      t.string :title
      t.text :body

      t.timestamps
    end
  end

  def self.down
    drop_table :posts
  end
end

Эта миграция создает в базе данных таблицу posts с двумя полями — title и body тип хранимых данных в которых соответственно string и text. Хэлпер timestamps создает поля типа datetime — created_at и updated_at. Для отката этой миграции нам просто необходимо удалить таблицу posts. Метод .down как раз и занимается откатом миграции — удалением таблицы posts. Когда Rails использует миграцию, миграция запускает метод .up. Для отката миграции (которая выполняется командой rake db:rollback) миграция выполняет метод .down.

Глядя на эту миграцию возникают два вопроса:

- Почему именно методы класса, вместо методов экземпляра класса?
- Для простых случаев почему бы не объявить только метод выполнения миграции и защитить миграцию от отката?

Замечательный человек Аарон Петерсон думает так же и решил упросить миграции.
Read the rest of this entry »

Tags: , ,

Mongoid #2: Документы

марта 16, 2011  |  Published in Базы данных

mongoid logoДанная статья является переводом официальной документации:

Документы — основные объекты в Mongoid и любой объект, который сохраняется в базу данных должен включать в себя через include Mongoid::Document. Представлением документа в MongoDB является BSON-объект, который очень похож на хэш в Ruby или объект формата JSON. Документы могут храниться в своих собственных коллекциях в базе данных или могут быть включены в другие документы таким образом имея некую степень вложенности.

Объявление документов в Mongoid

Рассмотрим простой класс — модель человека. У каждого человека должны быть имя, фамилия и отчество. Мы можем объявить эти атрибуты человека объявив соответствующие поля (поле — field) в объекте представляющем человека. В Mongoid поля, по умолчанию, имеют тип String.

#person.rb
class Person
  include Mongoid::Document
  field :first_name
  field :middle_initial
  field :last_name
end

Read the rest of this entry »

Tags: , ,

Mongoid #1: Установка

марта 1, 2011  |  Published in Базы данных

mongoid logoДанная статья является переводом официальной документации:

Для работы с MongoDB, из Ruby, необходимо установить gem Mongoid:

$ gem install mongoid —pre

Для исправления производительности, вы должно быть захотите установить расширения для Mongo написанные на Си, которые совместимы с вашей системой:

$ gem install bson_ext

Read the rest of this entry »

Tags: , , ,

Мелкопост о MongoDB и Mongoid

марта 1, 2011  |  Published in Базы данных, Новости

mongoDBДобрый день, уважаемые читатели блога! Пишу сей пост с радостью, поскольку появился повод разобраться наконец-то с тем, что такое документо-ориентированные базы данных и с чем их едят. А это означает, что на RubyDev будет новый цикл статей, в первую очередь переводов официальной документации по MongoDB — документо-ориентированной базе данных, и Mongoid — библиотеке для работы с MongoDB в Ruby. В первую очередь начну с перевода документации по Mongoid, а дальше пойдет перевод документации по самой MongoDB и различных статей на тему.

Что же такое документо-ориентированные базы данных? В первую очередь хочу сказать, что пока я сам не очень разобрался, поэтому буду благодарен на правки в комментариях. Документо-ориентированные БД — это в первую очередь NoSQL базы данных. Во-вторых, документо-ориентированные базы данных, как видно из названия ориентируются на такие структуры данных, как «документ», в отличие от таблиц, которые используются в реляционных БД типа MySQL или PostgreSQL.

Что такое документ? - Документ, это грубо говоря венегрет из различных данных, ну или, техническим языком говоря, документ можно назвать многомерным ассоциативным массивом. В MongoDB для хранения данных используется формат BSON — бинарный эквивалент формата JSON.

Как установить MongoDB?
Установка предельно проста, идем сюда: , скачиваем подходящую стабильную версию и просто распаковываем содержимое в любую необходимую нам папку.

Чтобы запустить сервер MongoDB, необходимо запустить файл mongod:

$ ./mongod —dbpath data/db

Где параметр —dbpath указывает путь, где хранится база данных. По умолчанию MongoDB, хранит файлы в папке data/db, которую вам необходимо создать самостоятельно и правильно выставить права доступа, однако у меня что-то не завелось и мне приходиться каждый раз указывать папку с БД вручную.

Все, теперь вы имеете MongoDB на борту! Ждите в ближайшее время перевода официальной документации по Mongoid.

Tags: ,

Установка базы данных SQLite 3 на Windows и Ubuntu

октября 3, 2010  |  Published in Help, Базы данных

sqlite3 sqlite 3Часто на форумах вижу вопросы связанные с установкой БД SQLite3 на Windows, по этому и решил написать данную How To — статью.

Установка базы данных SQLite 3 на Windows

1. Скачиваем с sqlite-3_7_2.zip и sqlitedll-3_7_2.zip либо более свежие версии (на момент написания поста актуальная версия — 3.7.2).

2. Распаковываем содержимое обеих архивов в папку WINDOWS/system32. В архивах содержится всего 3 файла:

sqlite3.exe  sqlite3.def  sqlite3.dll

3. Теперь SQLite 3 установлена в нашей системе, но для того, чтобы мы могли ее использовать в наших проектах на Ruby on Rails, нам следует установить Ruby-интерфейс для работы с SQLite 3, который поставляется в виде gem’а — sqlite3-ruby:

gem install sqlite3-ruby

Установка SQLite 3 на Ubuntu Linux

1. Устанавливаем пакеты sqlite3 и libsqlite3-dev:

sudo apt-get install sqlite3 libsqlite3-dev

2. Устанавливаем gem sqlite3-ruby:

sudo apt-get install sqlite3-ruby

Все! теперь мы можем работать с базой данных SQLte 3.

Tags: ,