Я создаю приложение Google App Engine (python), и я узнаю об общей структуре. Я смотрел учебник и документацию для хранилища данных NDB, и у меня возникли трудности с обволакиванием концепций. У меня большой фон с базами данных SQL, и я никогда не работал с какой-либо другой системой хранения данных, поэтому я думаю, что там, где у меня возникают проблемы.
Мое настоящее понимание таково: хранилище данных NDB - это совокупность объектов (аналогичных записям БД), которые имеют свойства (аналогичные полям/столбцам БД). Объекты создаются с использованием модели (аналогичной схеме БД). Каждый объект имеет ключ, который генерируется для него, когда он хранится. Здесь я столкнулся с проблемой, потому что эти ключи, похоже, не имеют аналогии ни с чем в понятиях SQL DB. Они кажутся похожими на первичные ключи для таблиц, но они более тесно связаны с записями и фактически являются полями. Эти ключи NDB не являются свойствами объектов, но считаются отдельными объектами из объектов. Если объект хранится в хранилище данных, вы можете получить этот объект, используя его ключ.
Один из моих больших вопросов - где вы получаете ключи для этого? В некоторых документах, которые я видел, были показаны примеры, в которых ключи были просто созданы. Я этого не понимаю. Казалось, что когда объекты хранятся, метод put()
возвращает ключ, который может быть использован позже. Итак, как вы можете просто создавать ключи и определять идентификаторы, если исходные ключи генерируются хранилищем данных?
Еще одна вещь, с которой я, похоже, борюсь, - это концепция родословной с ключами. Вы можете определить родительские ключи любого типа, который вы хотите. Есть ли для этого предопределенная схема? Например, если у меня был подкласс класса под названием "Человек", и я создал ключ вида "Лицо", могу ли я использовать этот ключ в качестве родителя любого другого типа? Например, если бы я хотел, чтобы ключ "Чистка" был ребенком ключа "Человек", могу ли я затем объявить ключ "Автомобиль" дочерним по отношению к этому же "Человеческому" ключу? Или я не смогу после добавления ключа "Обувь"?
Мне бы просто понравилось простое объяснение хранилища данных NDB и его API для кого-то, исходящего из основного фона SQL.