AppEngine NDB: Как правильно применять предков?

Я рассматриваю GAE + NDB для нового проекта. Я все еще немного запутался в отношении предков, поэтому я мог бы воспользоваться некоторыми советами о том, как правильно их использовать.

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

Мне нужно реализовать способ изоляции данных между клиентами. Клиент А не должен иметь доступа к каким-либо данным других клиентов в этом приложении.

Так целесообразно ли использовать предков в хранилище данных для разделения данных от разных клиентов? Думаю, в этом случае у меня могут быть ключи предков, такие как ClientA-Products, ClientA-Orders , ClientB-Продукты, ClientB-Заказы и так далее. Или, возможно, даже иметь ключи для всех транзакций по клиенту: например, ClientA, ClientB..?

Или лучше иметь свойство в каждой сущности, связывающее сущность с Клиентом? В этом случае сущности "продукты" и "заказы" будут иметь свойство "Компания". ", которое должно быть заполнено приложением при каждой записи и включено в каждый запрос.

Заранее спасибо за ваши мысли!


person kxtronic    schedule 13.12.2014    source источник


Ответы (1)


Мультиарендность идеально подойдет для вашего варианта использования.

from google.appengine.api import users

def namespace_manager_default_namespace_for_request():
    # assumes the user is logged in.
    return 'client_id'

Подробнее об этом читайте здесь.

person Dmytro Sadovnychyi    schedule 13.12.2014
comment
Привет, Дмитрий, похоже на ответ для моего случая. Спасибо! - person kxtronic; 13.12.2014