SaaS / SaaS: 2.6 - Models, Databases and ActiveRecord

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Любое отклонение от этого нам нужно будет обрабатывать по собственному разумению. Кроме того,

maxwell44 02.03.12 в 22:35

0

в реляционной БД каждый должен иметь некоторое уникальное значение для идентификации,

maxwell44 02.03.12 в 22:36

0

которое Rails зовёт первичным ключём и согласно конвенции Rails это целое число, которое называется ID.

maxwell44 02.03.12 в 22:38

0

Вообще вы не должны иметь с ним дела, потому что Rails будет

maxwell44 02.03.12 в 22:39

0

автоматически создавать и присваивать новые ID за вас, но знайте, что они есть.

maxwell44 02.03.12 в 22:40

0

Так что на практике вас будет очень редко заботить, какой ID у фильма.

maxwell44 02.03.12 в 22:40

0

Вся информация о фильме, имеющая значение, находится в других столбцах,

maxwell44 02.03.12 в 22:41

0

но вам нужно иметь способ уникальным образом ссылаться на него в случае, например, если есть совпадения в других столбцах.

maxwell44 02.03.12 в 22:43

0

Вот что делает ID. Окей. Так, ещё разок,

maxwell44 02.03.12 в 22:43

0

это может быть один из тех пяти процентов, в теперешней терминологии.

maxwell44 02.03.12 в 22:45

0

Но так как архитектура касается альтернатив, когда бы я ни говорил о пути, каким это сделано в Rails,

maxwell44 02.03.12 в 22:49

0

или о пути, каким это сделано в SaaS, вы должны немедленно подумать:

maxwell44 02.03.12 в 22:49

0

ну, а какими другими путями это может быть сделано? Какие альтернативы остались у таблиц?

maxwell44 02.03.12 в 22:50

0

И есть изрядное число аргументов за и против паттерна ActiveRecord.

maxwell44 02.03.12 в 22:53

0

О, простите, я должен указать, что схема, вообще говоря, -

maxwell44 02.03.12 в 22:56

0

это набор всех таблиц в данной БД и структура, которой они обладают.

maxwell44 02.03.12 в 22:56

0

Так что если Вы видите слово схема вы знаете что это значит. А если мы не будем

husband 03.03.12 в 14:58

0

использовать ActiveRecord, а как вы знаете, каждая модель знает как CRUD себя?

husband 03.03.12 в 15:03

0

Это не кажется чем-то очевидным? Как ещё вы могли бы это сделать?

maxwell44 05.03.12 в 18:58

0

Ну, есть другой путь, по которому вы могли пойти. Я подобрал извращённую версию UML,

maxwell44 05.03.12 в 19:03

0

унифицированного языка моделирования, которую мы коротко рассмотрим,

maxwell44 05.03.12 в 19:04

0

чтобы попытаться проиллюстрировать разницу между ActiveRecord и Data Mapper,

maxwell44 05.03.12 в 19:13

0

который является другим распространённым способом сделать то же. Итак, идея вот в чём. Это кажется тривиальным, но в ActiveRecord мы просто говорим:

maxwell44 05.03.12 в 19:15

0

О, у нас есть две модели, фильм и зритель,

maxwell44 05.03.12 в 19:18

0

и каждая модель построена на представлении, что нам не нужно делать ничего в коде нашего приложения

maxwell44 05.03.12 в 19:18

0

для взаимодействия с БД при реализации четырёх CRUD-операций. В то время как в паттерне Data Mapper

maxwell44 05.03.12 в 19:21

0

для каждой модели, которую мы создаём,

maxwell44 05.03.12 в 19:26

0

мы также должны установить Mapper, которому даны инструкции о том,

maxwell44 05.03.12 в 19:27

0

как выполнять CRUD-операции для моделей того или иного типа. И фактически, в то время как ActiveRecord довольно сильно

maxwell44 05.03.12 в 19:29

0

привязан к выполнению поверх реляционной БД, о которых мы вскоре поговорим подробнее,

maxwell44 05.03.12 в 19:30

0

Data Mapper может работать практически с чем угодно. Итак, вы можете спросить:

maxwell44 05.03.12 в 19:31

0

Ну, почему бы вы захотели выбрать тот или иной способ? Одна причина -

maxwell44 05.03.12 в 19:32

0

это, как мы упомянули несколько минут назад, то, что реляционные БД очень тяжело

maxwell44 05.03.12 в 19:34

0

масштабировать, особенно по прошествии определённой точки. Но есть множество механизмов хранения,

maxwell44 05.03.12 в 19:35

0

которые не являются реляционными и которые крайне хорошо масштабируются. Так что есть некоторая выгода

maxwell44 05.03.12 в 19:37

0

от структурирования ваших данных таким образом, чтобы вы могли использовать такие нижележащие механизмы хранения.

maxwell44 05.03.12 в 19:37

0

И в действительности, так поступает Google App Engine. Если вы пишете приложение, которое выполняется на Google App Engine,

maxwell44 05.03.12 в 19:41

0

в общем случае вы не можете писать запросы к реляционной БД.

maxwell44 05.03.12 в 19:41

0

Используя некоторые уловки и некоторые интересные особенности, которые там есть, вы можете сделать что-то,

maxwell44 05.03.12 в 19:45

0

что выглядело бы похоже в некоторых простых случаях. Но вообще говоря, вы не можете.

maxwell44 05.03.12 в 19:46

0

Всего несколько минут назад мы видели, что модели могут взаимодействовать между собой.

maxwell44 05.03.12 в 19:49

0

Например, рецензия может быть отобрана, будучи привязанной к отдельному фильму

maxwell44 05.03.12 в 19:58

0

или же к человеку, написавшему её. Или, если вы собирались сделать систему голосования за фильмы,

maxwell44 05.03.12 в 20:00

0

то вы можете вообразить, что фильм имеет кучу разных ранжирований

maxwell44 05.03.12 в 20:04

0

и каждое ранжирование привязано к этому фильму, но к отдельному пользователю, верно?

maxwell44 05.03.12 в 20:05

0

Так что там будут отношения вида один к одному, многие к одному, многие ко многим. Как мы увидим,

maxwell44 05.03.12 в 20:06

0
Минутку...

← Предыдущая страница

Следующая страница →