SaaS / SaaS: 2.6 - Models, Databases and ActiveRecord
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Увидев что Модель-Контроллер-Вид разновидность организации приложений husband 01.03.12 в 10:03 |
|
|
давайте рассмотрим немного подробнее, но не слишком husband 01.03.12 в 10:03 |
||
|
каждую из трех частей начиная с Модели, мы коснемся husband 01.03.12 в 10:04 |
||
|
баз данных и activerecord. Позднее когда мы будем работать с нашим первым Rails приложением husband 01.03.12 в 10:05 |
||
|
и другими вещами, мы рассмотрим эти вопросы подробнее. husband 01.03.12 в 10:05 и другими вещами, мы рассмотрим эти вопросы подробнее. Нашей целью husband 01.03.12 в 10:11 |
||
|
является понимание того как эти умные слова и понятия складываются husband 01.03.12 в 10:12 |
||
|
в общую картину. Давайте вернемся к нашей разновидности мира. Мы находимся husband 01.03.12 в 10:18 |
||
|
здесь. Мы собираеся говорить о моделях. И о серверах приложений. И husband 01.03.12 в 10:20 |
||
|
И перманентная база данных здесь. Несут ответственность за управление частями husband 01.03.12 в 20:48 |
||
|
кода, которые имеют отношение к моделям. Итак основная проблема персистентности husband 01.03.12 в 21:00 |
||
|
которую нужно решить в любом SaaS приложении, в Вашем коде есть объекты husband 01.03.12 в 21:02 |
||
|
которые воздействуют на память. Если Вы будете играться с IRB, вы можете husband 01.03.12 в 21:03 |
||
|
увидеть это если выведите на печать значение переменной, обычно husband 01.03.12 в 21:06 |
||
|
вы увидите что-то вроде: к какому классу принадлежит объект husband 01.03.12 в 21:11 |
||
|
ID этого объекта и затем вы можете запросить husband 01.03.12 в 21:14 |
||
|
свойства объекта. Но когда приходит время сохранить сущность husband 01.03.12 в 21:17 |
||
|
перманентно, вы должны как нибудь решить в каком формате зафиксировать ее, husband 01.03.12 в 21:26 |
||
|
поместить в перманентное хранилище, и извлечь обратно когда будет нужно. husband 01.03.12 в 21:27 |
||
|
В зависимости от того какой язык вы используете, и какое десятилетие родились некоторые husband 01.03.12 в 21:32 |
||
|
называют это маршалинг, некоторые сериализация. А некоторые husband 01.03.12 в 21:33 |
||
|
никак не называют, а просто понимают как это работает. husband 01.03.12 в 21:34 |
||
|
Затем с помощью демаршалинга или десеарилизации получаем сущность из хранилища и husband 01.03.12 в 21:39 |
||
|
и воссоздаем ее в памяти, даже несмотря на то что ID объекта другой husband 01.03.12 в 21:41 |
||
|
у вас синтезирован новый объект. Он ведет себя так же как и оригинальный husband 01.03.12 в 21:45 |
||
|
Так как же переключаться между этими двумя husband 01.03.12 в 21:49 |
||
|
видами представления? И опять же как и следовало ожидать, это такая husband 01.03.12 в 21:53 |
||
|
обычнвя вещь что все сайты должны делать это. Целый ряд различных паттернов husband 01.03.12 в 21:55 |
||
|
и фреймворков развивались чтобы помочь решить нам эту проблему. Основные операции которые husband 01.03.12 в 22:00 |
||
|
должны все поддерживать, называются CRUD операции: создание нового husband 01.03.12 в 22:03 |
||
|
объекта, чтение уже созданного, создание свойств уже созданного объекта husband 01.03.12 в 22:04 |
||
|
или удаление объекта и уничтожение его навсегда. И ActiveRecord паттерн husband 01.03.12 в 22:07 |
||
|
который мы будем использовать. ActiveRecord отличается тем что husband 01.03.12 в 22:09 |
||
|
каждая модель знает как CRUD себя. И есть ряд общих механизмов которые husband 01.03.12 в 22:14 |
||
|
которыми обладают все модели ActiveRecord. Так что когда вы говорите, я хочу сущность, которая maxwell44 02.03.12 в 22:04 |
||
|
является фильмом и обладает такими-то атрибутами, вы не должны заботиться о том, когда maxwell44 02.03.12 в 22:05 |
||
|
наступает время для маршалинга фильма, какие необходимы этапы, чтобы упаковать maxwell44 02.03.12 в 22:10 |
||
|
всю эту штуку и поместить в базу данных. И каковы этапы maxwell44 02.03.12 в 22:11 |
||
|
демаршалинга и возвращения? Давайте возьмём разновидность баз данных номер ноль, maxwell44 02.03.12 в 22:13 |
||
|
ноль один. В Rails самая распространённая парадигма - это хранить все ваши модели в maxwell44 02.03.12 в 22:14 |
||
|
реляционный базах данных. [кашель] Если вы брали курс или имели некоторый опыт maxwell44 02.03.12 в 22:15 |
||
|
с реляционными базами данных, то это замечательно. Если нет, то это те пять процентов, maxwell44 02.03.12 в 22:16 |
||
|
которые составят полпути к десяти процентам того, что вам нужно знать. Реляционные maxwell44 02.03.12 в 22:17 |
||
|
базы данных хранят объекты в таблицах. Каждый тип модели получает свою собственную таблицу maxwell44 02.03.12 в 22:18 |
||
|
в базе данных, и по сути одна строка в таблице - это один экземпляр модели. maxwell44 02.03.12 в 22:20 |
||
|
Так в таблице фильмов каждая строка в базе данных будет представлять один объект фильма, который мы хотим сохранить. maxwell44 02.03.12 в 22:21 |
||
|
Столбцы в таблицах хранят значения атрибутов модели. maxwell44 02.03.12 в 22:22 |
||
|
Так каждый фильм обладает рейтингом, датой выпуска и это означает, что в каждой строке одна и та же структура, верно? maxwell44 02.03.12 в 22:23 |
||
|
В общем случае мы не можем решить, какая: вы знаете, maxwell44 02.03.12 в 22:24 |
||
|
что некоторые фильмы имеют названия, а некоторые нет. Ну, мы можем сделать это, maxwell44 02.03.12 в 22:26 |
||
|
но с точки зрения базы данных, на её уровне детализации, каждый элемент одинаков. maxwell44 02.03.12 в 22:32 |
