API Namespaces para serviços em pacote legados
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A API Namespaces no Google App Engine facilita a compactação dos dados do Google App Engine. Ela é implementada por meio de um novo pacote chamado gerenciador de namespace e está incorporada em determinadas APIs ativadas por namespaces.
Quando você define um namespace no gerenciador, essas APIs recebem o namespace atual e o utilizam globalmente. Você pode explicitamente declarar um namespace localmente. No entanto, é necessário ter cuidado ao declarar namespaces explicitamente porque isso pode gerar o vazamento de dados e outros bugs inadvertidamente. Qualquer solicitação do App Engine pode acessar qualquer namespace. Assim, fica a cargo do aplicativo impor uma política de controle de acesso nos namespaces.
Use a API Namespaces para criar uma variedade de aplicativos. Um dos usos mais interessantes dessa API é para aplicativos multilocatários, como descrito abaixo.
Sobre a multilocação
Multilocação é o nome dado a uma arquitetura de software em que várias organizações clientes (também conhecidas como locatários) são atendidas por uma instância do aplicativo, executada em um servidor remoto.
Usar uma arquitetura multilocatária simplifica a administração e o aprovisionamento de locatários. É possível fornecer uma experiência do usuário personalizada e facilitada, além de agregar diferentes silos de dados em um único esquema de banco de dados. Como resultado, os aplicativos se tornam mais escalonáveis e com melhor custo-benefício, à medida que você realiza o escalonamento. A segregação e análise de dados entre locatários se torna mais fácil porque estes compartilham o mesmo esquema de banco de dados. Diferentes grupos de usuários veem conteúdo personalizado empacotado em um aplicativo mais eficiente.
Como criar um aplicativo multilocatário com a API Namespaces
Com a Namespaces API, você pode particionar dados com facilidade em locatários simplesmente ao especificar uma string de namespace exclusiva para cada locatário. Basta configurar o namespace para cada locatário globalmente usando o gerenciador de namespace (em vez de configurá-lo explicitamente para uma solicitação específica). As APIs ativadas para namespace sempre usam esse namespace atual por padrão.
A API Namespaces é integrada ao Google Workspace, permitindo que você use seu domínio do Google Workspace como o namespace atual. Como o Google Workspace permite implantar seu app em qualquer domínio de sua propriedade, você pode definir namespaces únicos facilmente para todos os domínios vinculados à sua conta do Google Workspace.
Ao designar aplicativos multilocatários, você deve impedir o vazamento de dados entre namespaces. Para mais informações, acesse Como evitar vazamentos de dados.
APIs do App Engine que usam namespaces
Atualmente o Google App Engine é compatível com namespaces nas seguintes APIs:
Exemplos de projetos usando namespaces
São fornecidos dois exemplos de aplicativos de livro de visitas usando namespaces:
Outros usos para a Namespaces API
Além de ativar a multilocação no Google App Engine, a API Namespaces pode ser usada para muitos outros fins, incluindo:
- compartimentalizar informações de usuário;
- separar dados de administração de dados do aplicativo;
- criar instâncias separadas do armazenamento de dados para teste e produção;
- executar vários aplicativos em uma única instância do App Engine.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-04 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-04 UTC."],[[["\u003cp\u003eThe Namespaces API in Google App Engine allows for data compartmentalization through a namespace manager, which is incorporated into specific namespace-enabled APIs, primarily for first-generation runtimes.\u003c/p\u003e\n"],["\u003cp\u003eMultitenancy, a software architecture where a single application instance serves multiple client organizations, is a key use case for the Namespaces API, enabling simplified administration, a customized user experience, and better scalability.\u003c/p\u003e\n"],["\u003cp\u003eUsing the Namespaces API, you can partition data across tenants by assigning a unique namespace string to each, which is set globally via the namespace manager and used by namespace-enabled APIs by default.\u003c/p\u003e\n"],["\u003cp\u003eThe Namespaces API integrates with Google Workspace, allowing the use of Google Workspace domains as current namespaces, and the supported APIs with this include Datastore, Memcache, Task Queue, and Search.\u003c/p\u003e\n"],["\u003cp\u003eThe Namespaces API has other uses beyond multitenancy, such as compartmentalizing user information, separating admin and app data, and creating separate data stores for testing and production.\u003c/p\u003e\n"]]],[],null,["# Namespaces API for legacy bundled services\n\nThe Namespaces API in Google App Engine makes it easy to compartmentalize your Google App Engine data. This API is implemented via a new package called the [namespace manager](/appengine/docs/legacy/standard/python/refdocs/google.appengine.api.namespace_manager.namespace_manager), and is incorporated in certain [namespace-enabled APIs](#App_Engine_APIs_that_use_namespaces).\n| This API is supported for first-generation runtimes and can be used when [upgrading to corresponding second-generation runtimes](/appengine/docs/standard/\n| python3\n|\n| /services/access). If you are updating to the App Engine Python 3 runtime, refer to the [migration guide](/appengine/migration-center/standard/migrate-to-second-gen/python-differences) to learn about your migration options for legacy bundled services.\n\nWhen you set a namespace in the namespace manager, these APIs get the current namespace and use it globally. You can explicitly declare a namespace locally, but you need to exercise caution when explicitly declaring namespaces, because you could inadvertently create data leaks and other bugs. Any App Engine request can access any namespace, leaving the application to enforce an access control policy across namespaces.\n\nYou can use the Namespaces API to build a wide range of applications. One of the most compelling uses of this API is for multitenant applications, as described below.\n\nAbout multitenancy\n------------------\n\n*Multitenancy* is the name given to a software architecture in which one instance of an application, running on a remote server, serves many client organizations (also known as *tenants*).\n\nUsing a multitenant architecture simplifies administration and provisioning of tenants. You can provide a more streamlined, customized user experience, and also aggregate different silos of data under a single database schema. As a result, your applications become more scalable as well as more cost-effective as you scale. Data becomes easier to segregate and analyze across tenants because all tenants share the same database schema. Different user groups see custom content wrapped within a more efficient application.\n\nBuilding a multitenant application with the Namespaces API\n----------------------------------------------------------\n\nUsing the Namespaces API, you can easily partition data across tenants simply by specifying a unique namespace string for each tenant. You simply [set the namespace](/appengine/docs/legacy/standard/python/multitenancy/multitenancy#Setting_the_current_namespace) for each tenant globally using the namespace manager (as opposed to setting it explicitly for a specific request). The [namespace-enabled APIs](#App_Engine_APIs_that_use_namespaces) always use this current namespace by default.\n\nThe Namespaces API is integrated with Google Workspace, allowing you to use your Google Workspace domain as the current namespace. Because Google Workspace lets you deploy your app to any domain that you own, you can easily [set unique namespaces](/appengine/docs/legacy/standard/python/multitenancy/multitenancy#Setting_the_current_namespace) for all domains linked to your Google Workspace account.\n\nWhen designing multitenant applications, you need to prevent data from leaking across namespaces. For more information, please see [Avoiding Data Leaks](/appengine/docs/legacy/standard/python/multitenancy/multitenancy#Avoiding_data_leaks).\n\nApp Engine APIs that use namespaces\n-----------------------------------\n\nApp Engine currently supports namespaces in the following APIs:\n\n- [Datastore](/appengine/docs/legacy/standard/python/multitenancy/multitenancy#Using_namespaces_with_the_Datastore)\n- [Memcache](/appengine/docs/legacy/standard/python/multitenancy/multitenancy#Using_namespaces_with_the_Memcache)\n- [Task Queue](/appengine/docs/legacy/standard/python/multitenancy/multitenancy#Using_namespaces_with_the_Task_Queue)\n- [Search](/appengine/docs/legacy/standard/python/multitenancy/multitenancy#Using_namespaces_with_Search)\n\nSample projects using namespaces\n--------------------------------\n\nTwo sample guestbook applications using namespaces are provided:\n\n- Python App Engine: [appengine-multitenancy](https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard/multitenancy) -- A namespace-aware sample guestbook application.\n- Java App Engine: [appengine-gwtguestbook-namespaces-java](https://github.com/GoogleCloudPlatform/appengine-gwtguestbook-namespaces-java) -- A namespace-aware sample guestbook application using GWT.\n\nOther uses for the Namespace API\n--------------------------------\n\nWhile the Namespaces API enables multitenancy on App Engine, it has a number of other uses, including:\n\n- Compartmentalizing user information\n- Separating admin data from application data\n- Creating separate datastore instances for testing and production\n- Running multiple apps on a single App Engine instance"]]