Можно ли использовать разные хранилища данных для каждого субдомена в Google App Engine? - PullRequest
2 голосов
/ 01 марта 2010

Допустим, у меня есть домен:

mywonderfulapp.com

Я бы хотел иметь поддомен для каждого клиента. Например:

clientA.mywonderfulapp.com

Я бы хотел, чтобы клиент A пошел по URL clientA.mywonderfulapp.com и получил свои данные в частном порядке, а клиент B мог бы перейти на clientB.mywonderfulapp.com, чтобы получить свои собственные данные.

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

Возможно ли это с помощью Google App Engine Java?

Заранее спасибо!

Спасибо за полученный отзыв. Кажется, что Google App Engine Aplication не может использовать несколько хранилищ данных на поддомен.

Решения

@ jldupont и @Steve Jessop: Позвольте мне попытаться понять, что вы имели в виду. Пожалуйста, поправьте меня, если я вас не понял.

Каждый объект имеет поле с именем prefix, в котором хранится строка субдомена, к которой он принадлежит. Эта строка может быть захвачена, например, с помощью фильтра, настроенного в web.xml:

<filter>
    <filter-name>SubdomainFilter</filter-name>
        <filter-class>filters.SubdomainFilter</filter-class>        
</filter>
<filter-mapping>
    <filter-name>SubdomainFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Затем используйте запрос, такой как:

select from guestbook.Greeting where subdomain == 'clientA'

Вопросы

  • Не будет ли медлительно выполнять запросы в такой огромной «базе данных»?
  • Разве это не имеет последствий для безопасности, когда все данные пользователя и учетной записи смешиваются в одном и том же хранилище данных?

Ответы [ 2 ]

4 голосов
/ 27 января 2011

это обычно называется мультитенанс . К счастью, поскольку этот вопрос был задан изначально, команда разработчиков приложений добавила функцию под названием пространства имен , которая поддерживает работу с несколькими арендаторами и позволяет разделить хранилище данных так, как вы хотите.

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

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

3 голосов
/ 01 марта 2010

Насколько я знаю, нет это невозможно.

Почему бы prefix на основе субдомена было бы недостаточно?

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