Для чего используется пространство имен в хранилище данных App Engine? - PullRequest
18 голосов
/ 11 сентября 2010

В консоли администратора разработки, когда я смотрю на свои данные, появляется сообщение "Select different namespace".

Для чего нужны пространства имен и как их использовать?

Ответы [ 3 ]

13 голосов
/ 11 сентября 2010

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

1 голос
/ 19 июня 2013

Пространства имен используются в движке приложений Google для создания многопользовательских приложений. В мультитенентных приложениях один экземпляр приложения запускается на сервере, обслуживая несколько клиентских организаций (арендаторов). Таким образом, приложение может быть спроектировано для виртуального разделения его данных и конфигурации (бизнес-логики), и каждая клиентская организация работает с настроенным экземпляром виртуального приложения. Вы можете легко разделить данные между арендаторами, просто задав уникальную строку пространства имен для каждого арендатора .

Другое Использование пространства имен:

  1. Разделение пользовательской информации
  2. Отделение данных администратора от данных приложения
  3. Создание отдельных экземпляров хранилища данных для тестирования и производства
  4. Запуск нескольких приложений на одном экземпляре механизма приложений

Для получения дополнительной информации посетите ссылки ниже:

http://www.javacodegeeks.com/2011/12/multitenancy-in-google-appengine-gae.html
https://developers.google.com/appengine/docs/java/multitenancy/
http://java.dzone.com/articles/multitenancy-google-appengine

http://www.sitepoint.com/multitenancy-and-google-app-engine-gae-java/
0 голосов
/ 31 мая 2012

Глядя на этот вопрос не так уж много хорошего, он рассмотрел и ответил, поэтому пытаюсь ответить на этот вопрос.

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

from google.appengine.api import namespace_manager
from google.appengine.ext import db
from google.appengine.ext import webapp

class Counter(db.Model):
   """Model for containing a count."""
   count = db.IntegerProperty()


def update_counter(name):
   """Increment the named counter by 1."""
def _update_counter(name):
   counter = Counter.get_by_key_name(name)
   if counter is None:
       counter = Counter(key_name=name);
       counter.count = 1
   else:
       counter.count = counter.count + 1
   counter.put()
# Update counter in a transaction.
db.run_in_transaction(_update_counter, name)

class SomeRequest(webapp.RequestHandler):
 """Perform synchronous requests to update counter."""
 def get(self):
    update_counter('SomeRequest')
    # try/finally pattern to temporarily set the namespace.
    # Save the current namespace.
    namespace = namespace_manager.get_namespace()
    try:
        namespace_manager.set_namespace('-global-')
        update_counter('SomeRequest')
    finally:
        # Restore the saved namespace.
        namespace_manager.set_namespace(namespace)
    self.response.out.write('<html><body><p>Updated counters')
    self.response.out.write('</p></body></html>')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...