Я пришел из мира реляционных баз данных, затем я нашел эту штуку с хранилищем данных. на то, чтобы разобраться, потребовалось несколько дней. ну вот некоторые из моих выводов.
Вы, должно быть, уже знали, что Datastore строится с возможностью масштабирования, и это то, что отличает его от RDMBS. для лучшего масштабирования с большим набором данных в App Engine внесены некоторые изменения (некоторые из них означают много изменений).
Структура RDBMS VS DataStore
В базе данных мы обычно структурируем наши данные в таблицах, Rows, которые в Datastore становятся Kinds и Entities .
Отношения
В РСУБД большинство людей следуют отношениям «один-к-одному», «многие-к-одному», «многие-ко-многим» в хранилище данных, так как в нем нет соединений, но все же мы можем добиться нашей нормализации с помощью « ReferenceProperty» "например, пример взаимоотношений один-к-одному .
Индексы
Обычно в RDMBS мы создаем индексы, такие как первичный ключ, внешний ключ, уникальный ключ и ключ индекса, чтобы ускорить поиск и повысить производительность нашей базы данных. В хранилище данных вы должны создать по крайней мере один индекс для каждого вида (он будет автоматически генерировать , нравится вам это или нет), потому что хранилище данных выполняет поиск вашей сущности на основе этих индексов и, поверьте мне, это лучшая часть.В РСУБД вы можете искать, используя неиндексное поле, хотя это займет некоторое время, но будет. В Datastore нельзя выполнять поиск с использованием неиндексных свойств.
Подсчет
В RDMBS подсчет намного проще (*), но в хранилище данных, пожалуйста, даже не думайте об этом обычным образом (да, есть функция подсчета), так как он имеет предел 1000 и будет стоить столько же мелких операций, сколько и объект, который нехорошо, но у нас всегда есть хороший выбор, мы можем использовать счетчики осколков .
Уникальные ограничения
в RDMBS, нам нравится эта функция, верно? но у Datastore свой путь. вы не можете определить свойство как уникальное :(.
Запрос
GAE Datatore обеспечивает лучшую функцию много LIKE (О , нет! Хранилищу не LIKE ключевое слово) SQL , который GQL .
Вставка / Обновление / Удаление / Выбор данных
Это то, в чем мы все заинтересованы, поскольку в RDMBS нам требуется один запрос для вставки, обновления, удаления и выбора, точно так же, как РСУБД, хранилище данных поместило, удалило, получило (не слишком волнуйтесь), потому что хранилище данных положить или получить с точки зрения записи, чтения, небольших операций ( затраты на чтение для вызовов хранилища данных ), и вот где моделирование данных вступает в действие. вы должны свести к минимуму эти операции и поддерживать работу приложения. Для операции сокращения чтения вы можете использовать Memcache .