Aumentar horizontalmente com a Base de Dados SQL do AzureScaling out with Azure SQL Database

Pode ampliar facilmente bases de dados SQL do Azure utilizando o bases de dados elásticas ferramentas.You can easily scale out Azure SQL databases using the Elastic Database tools. Estas ferramentas e funcionalidades permitem-lhe utilizar os recursos de base de dados de SQL Database do Azure para criar soluções para cargas de trabalho transacionais e especialmente Software como aplicações de serviço (SaaS).These tools and features let you use the database resources of Azure SQL Database to create solutions for transactional workloads, and especially Software as a Service (SaaS) applications. Funcionalidades de base de dados elásticas são compostas pelo:Elastic Database features are composed of the:

O gráfico seguinte mostra uma arquitetura que inclui o funcionalidades da base de dados elástica em relação a uma coleção de bases de dados.The following graphic shows an architecture that includes the Elastic Database features in relation to a collection of databases.

Este gráfico, cores da base de dados representam o esquemas.In this graphic, colors of the database represent schemas. Bases de dados com o mesmo cor partilham o mesmo esquema.Databases with the same color share the same schema.

  1. Um conjunto de bases de dados SQL do Azure estão alojados no Azure através de arquitetura de fragmentação.A set of Azure SQL databases are hosted on Azure using sharding architecture.
  2. O biblioteca de clientes de base de dados elástica é utilizado para gerir um conjunto de partições horizontais.The Elastic Database client library is used to manage a shard set.
  3. Um subconjunto das bases de dados são colocados um conjunto elástico.A subset of the databases are put into an elastic pool. (Consulte o que é um agrupamento?).(See What is a pool?).
  4. Um tarefa da base de dados elástica é executada ad hoc ou agendadas scripts T-SQL relativamente a todas as bases de dados.An Elastic Database job runs scheduled or ad hoc T-SQL scripts against all databases.
  5. O ferramenta de intercalação de divisão é utilizada para mover dados de um ID de partição horizontal para outro.The split-merge tool is used to move data from one shard to another.
  6. O consulta de base de dados elástica permite-lhe escrever uma consulta que abrange todas as bases de dados no conjunto de partições horizontais.The Elastic Database query allows you to write a query that spans all databases in the shard set.
  7. Transações elásticas permitem a execução de transações que abrangem várias bases de dados.Elastic transactions allow you to run transactions that span several databases.

Ferramentas de Bases de Dados Elásticas

Porquê utilizar as ferramentas?Why use the tools?

Alcançar a elasticidade e escala para aplicações em nuvem foi simples para as VMs e armazenamento de BLOBs - simplesmente adicionar ou subtrair unidades ou aumentar a energia.Achieving elasticity and scale for cloud applications has been straightforward for VMs and blob storage - simply add or subtract units, or increase power. Mas permaneceu um desafio de monitorização de estado de processamento de dados nas bases de dados relacionais.But it has remained a challenge for stateful data processing in relational databases. Desafios emerged nos seguintes cenários:Challenges emerged in these scenarios:

  • A crescer e reduzir a capacidade para a parte da base de dados relacional da sua carga de trabalho.Growing and shrinking capacity for the relational database part of your workload.
  • Gestão de hotspots que podem surgir que afetam um subconjunto específico de dados - por exemplo, um fim-cliente ocupado (inquilino).Managing hotspots that may arise affecting a specific subset of data - such as a busy end-customer (tenant).

Tradicionalmente, cenários nestes tem sido resolvidos investindo em servidores de base de dados de grande escala para suportar a aplicação.Traditionally, scenarios like these have been addressed by investing in larger-scale database servers to support the application. No entanto, esta opção é limitada na nuvem em que todo o processamento ocorre no hardware do produto predefinidas.However, this option is limited in the cloud where all processing happens on predefined commodity hardware. Em vez disso, a distribuição de dados e processamento em muitas bases de dados de forma idêntica structured (um padrão de escalamento horizontal conhecido como "fragmentação") fornece uma alternativa à tradicionais vertical abordagens, tanto em termos de custo e a elasticidade.Instead, distributing data and processing across many identically structured databases (a scale-out pattern known as "sharding") provides an alternative to traditional scale-up approaches both in terms of cost and elasticity.

Dimensionamento horizontal e verticalHorizontal and vertical scaling

A figura seguinte mostra as dimensões horizontais e verticais do dimensionamento, que são as formas básicas que podem ser escalados para as bases de dados elásticas.The following figure shows the horizontal and vertical dimensions of scaling, which are the basic ways the elastic databases can be scaled.

Horizontal versus de escalamento horizontal vertical.

Dimensionamento horizontal refere-se à adição ou remoção de bases de dados para ajustar o desempenho de capacidade ou geral.Horizontal scaling refers to adding or removing databases in order to adjust capacity or overall performance. Isto também é denominado "dimensionamento" out.This is also called “scaling out”. Fragmentação, na qual os dados estão particionados através de uma coleção de bases de dados de forma idêntica structured, é uma forma comum para implementar o dimensionamento horizontal.Sharding, in which data is partitioned across a collection of identically structured databases, is a common way to implement horizontal scaling.

Dimensionamento vertical refere-se para aumentar ou diminuir o nível de desempenho de uma base de dados individuais — Isto também é conhecido como "como aumentar verticalmente."Vertical scaling refers to increasing or decreasing the performance level of an individual database—this is also known as “scaling up.”

A maioria das aplicações de base de dados de escala da nuvem utilizam uma combinação destes dois estratégias.Most cloud-scale database applications use a combination of these two strategies. Por exemplo, um Software como uma aplicação de serviço pode utilizar para aprovisionar novos clientes de fim de dimensionamento horizontal e vertical de dimensionamento para permitir que a base de dados de cada fim-cliente aumentar ou diminuir os recursos conforme necessário, a carga de trabalho.For example, a Software as a Service application may use horizontal scaling to provision new end-customers and vertical scaling to allow each end-customer’s database to grow or shrink resources as needed by the workload.

  • Dimensionamento horizontal gerido utilizando o biblioteca de clientes de base de dados elástica.Horizontal scaling is managed using the Elastic Database client library.
  • Dimensionamento vertical é realizada através de cmdlets do Azure PowerShell para alterar o escalão de serviço, ou colocando a bases de dados num agrupamento elástico.Vertical scaling is accomplished using Azure PowerShell cmdlets to change the service tier, or by placing databases in an elastic pool.

FragmentaçãoSharding

Fragmentação é uma técnica para distribuir grandes quantidades de dados de forma idêntica estruturados através de um número de bases de dados independentes.Sharding is a technique to distribute large amounts of identically structured data across a number of independent databases. É especialmente popular com os programadores de nuvem criar Software como um ofertas de serviço (SAAS) para clientes finais ou as empresas.It is especially popular with cloud developers creating Software as a Service (SAAS) offerings for end customers or businesses. Estes clientes finais são, muitas vezes, referidos como "inquilinos".These end customers are often referred to as “tenants”. Fragmentação poderão ser necessária para diversas razões:Sharding may be required for any number of reasons:

  • A quantidade total de dados é demasiado grande para caber nas restrições de uma base de dadosThe total amount of data is too large to fit within the constraints of a single database
  • O débito de transação da carga de trabalho geral excede as capacidades de uma base de dadosThe transaction throughput of the overall workload exceeds the capabilities of a single database
  • Os inquilinos podem requerem isolamento de físico uns dos outros, pelo que são necessários bases de dados separadas para cada inquilinoTenants may require physical isolation from each other, so separate databases are needed for each tenant
  • Secções diferentes de uma base de dados poderão ter de residir em diversas localizações geográficas para compatibilidade, desempenho ou motivos geopolíticos.Different sections of a database may need to reside in different geographies for compliance, performance, or geopolitical reasons.

Outros cenários, como a ingestão de dados dos dispositivos distribuídos, a fragmentação pode ser utilizada para preencher um conjunto de bases de dados que se encontram organizados temporariamente.In other scenarios, such as ingestion of data from distributed devices, sharding can be used to fill a set of databases that are organized temporally. Por exemplo, uma base de dados individual pode ser dedicado para cada dia ou de uma semana.For example, a separate database can be dedicated to each day or week. Nesse caso, a chave de fragmentação pode ser um número inteiro que representa a data (presente em todas as linhas das tabelas em partição horizontal) e consultas de obtenção de informações para um intervalo de datas devem ser encaminhadas através da aplicação para o subconjunto de bases de dados que abrangem o intervalo em questão.In that case, the sharding key can be an integer representing the date (present in all rows of the sharded tables) and queries retrieving information for a date range must be routed by the application to the subset of databases covering the range in question.

Fragmentação funciona melhor quando todas as transações de uma aplicação podem ser restringida a um valor único de uma chave de fragmentação.Sharding works best when every transaction in an application can be restricted to a single value of a sharding key. Que assegura que todas as transações são locais para uma base de dados específica.That ensures that all transactions are local to a specific database.

Multi-inquilino e de inquilino únicoMulti-tenant and single-tenant

Algumas aplicações usam a abordagem mais simples de criação de uma base de dados separada para cada inquilino.Some applications use the simplest approach of creating a separate database for each tenant. Este é o padrão de fragmentação de inquilino único que fornece isolamento, capacidade de cópia de segurança/restauro, recursos e dimensionamento granularidade do inquilino.This is the single tenant sharding pattern that provides isolation, backup/restore ability, and resource scaling at the granularity of the tenant. Com a fragmentação de inquilino único, cada base de dados está associado a um valor de ID de inquilino específico (ou valor de chave de cliente), mas essa chave não tem sempre de ser presente em dados propriamente ditos.With single tenant sharding, each database is associated with a specific tenant ID value (or customer key value), but that key need not always be present in the data itself. Responsabilidade da aplicação para encaminhar cada pedido para a base de dados adequada - e a biblioteca de clientes pode simplificar isto.It is the application’s responsibility to route each request to the appropriate database - and the client library can simplify this.

Inquilino único versus multi-inquilino

Outros cenários do pacote de vários inquilinos em conjunto para bases de dados, em vez de isolá-las em bases de dados separadas.Others scenarios pack multiple tenants together into databases, rather than isolating them into separate databases. Este é típica padrão de fragmentação do multi-inquilino - e pode ser controlada pelo facto da que uma aplicação gere grande número de inquilinos pequenos.This is a typical multi-tenant sharding pattern - and it may be driven by the fact that an application manages large numbers of small tenants. No fragmentação do multi-inquilino, as linhas nas tabelas de base de dados todos os concebidas para executar uma chave que identifica o ID do inquilino ou chave de fragmentação.In multi-tenant sharding, the rows in the database tables are all designed to carry a key identifying the tenant ID or sharding key. Novamente, a camada de aplicação é responsável por encaminhamento de pedido de um inquilino na base de dados adequada e isto pode ser suportado pela biblioteca de clientes de base de dados elásticas.Again, the application tier is responsible for routing a tenant’s request to the appropriate database, and this can be supported by the elastic database client library. Além disso, a segurança ao nível da linha pode ser utilizado para filtrar as linhas que pode aceder a cada inquilino - para obter detalhes, consulte aplicações de multi-inquilinos com segurança ao nível da linha e ferramentas de base de dados elástica.In addition, row-level security can be used to filter which rows each tenant can access - for details, see Multi-tenant applications with elastic database tools and row-level security. Redistribuir dados entre bases de dados pode ser necessária, com o padrão de fragmentação do multi-inquilino e este processo é facilitado pela ferramenta de intercalação de divisão de bases de dados elásticas.Redistributing data among databases may be needed with the multi-tenant sharding pattern, and this is facilitated by the elastic database split-merge tool. Para saber mais sobre os padrões de estrutura de aplicações SaaS que utilizam conjuntos elásticos, consulte o artigo Padrões de Estrutura de Aplicações SaaS Multi-inquilino com a Base de Dados SQL do Azure.To learn more about design patterns for SaaS applications using elastic pools, see Design Patterns for Multi-tenant SaaS Applications with Azure SQL Database.

Mover dados a partir de vários inquilinos único bases de dadosMove data from multiple to single-tenancy databases

Ao criar uma aplicação SaaS, é normal para oferecer potenciais clientes que uma versão de avaliação do software.When creating a SaaS application, it is typical to offer prospective customers a trial version of the software. Neste caso, é económica para utilizar uma base de dados do multi-inquilino de dados.In this case, it is cost-effective to use a multi-tenant database for the data. No entanto, quando um prospect torna-se um cliente, uma base de dados único inquilino é melhor uma vez que fornece um melhor desempenho.However, when a prospect becomes a customer, a single-tenant database is better since it provides better performance. Se o cliente tinha criado dados durante o período de avaliação, utilize o ferramenta de intercalação de divisão para mover os dados de multi-inquilino para a nova base de dados único inquilino.If the customer had created data during the trial period, use the split-merge tool to move the data from the multi-tenant to the new single-tenant database.

Passos seguintesNext steps

Para uma aplicação de exemplo que demonstra a biblioteca de clientes, consulte começar a utilizar as ferramentas de base de dados elástica.For a sample app that demonstrates the client library, see Get started with Elastic Database tools.

Para converter as bases de dados existentes para utilizar as ferramentas, consulte Migrar bases de dados existentes para aumentar horizontalmente.To convert existing databases to use the tools, see Migrate existing databases to scale out.

Para ver as especificações do conjunto elástico, consulte considerações sobre preço e desempenho de um conjunto elástico, ou criar um novo conjunto com conjuntos elásticos.To see the specifics of the elastic pool, see Price and performance considerations for an elastic pool, or create a new pool with elastic pools.

Recursos adicionaisAdditional resources

Não utilizar ferramentas de base de dados elástica ainda?Not using elastic database tools yet? Consulte a nossa guia de introdução.Check out our Getting Started Guide. Para perguntas sobre, contacte-no fórum de base de dados SQL e para pedidos de funcionalidades, adicioná-los para o fórum de comentários da base de dados SQL.For questions, please reach out to us on the SQL Database forum and for feature requests, please add them to the SQL Database feedback forum.