Início rápido: criar um banco de dados do Azure para PostgreSQL-Citus (hiperescala) no portal do AzureQuickstart: Create an Azure Database for PostgreSQL - Hyperscale (Citus) in the Azure portal

A Base de Dados do Azure para o PostgreSQL é um serviço gerido com o qual pode executar, gerir e dimensionar as bases de dados de elevada disponibilidade do PostgreSQL na cloud.Azure Database for PostgreSQL is a managed service that you use to run, manage, and scale highly available PostgreSQL databases in the cloud. Este guia de início rápido mostra como criar um grupo de servidores do banco de dados do Azure para PostgreSQL-Citus (hiperescala) usando o portal do Azure.This Quickstart shows you how to create an Azure Database for PostgreSQL - Hyperscale (Citus) server group using the Azure portal. Você explorará dados distribuídos: fragmentando tabelas entre nós, ingerindo dados de exemplo e executando consultas que são executadas em vários nós.You'll explore distributed data: sharding tables across nodes, ingesting sample data, and running queries that execute on multiple nodes.

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Iniciar sessão no portal do AzureSign in to the Azure portal

Inicie sessão no portal do Azure.Sign in to the Azure portal.

Criar um banco de dados do Azure para PostgreSQL-Citus (hiperescala)Create an Azure Database for PostgreSQL - Hyperscale (Citus)

Siga estes passos para criar uma Base de Dados do Azure para o servidor PostgreSQL:Follow these steps to create an Azure Database for PostgreSQL server:

  1. Clique em Criar um recurso, no canto superior esquerdo do portal do Azure.Click Create a resource in the upper left-hand corner of the Azure portal.

  2. Selecione Bases de Dados, na página Nova, e selecione Base de Dados do Azure para o PostgreSQL, na página Bases de Dados.Select Databases from the New page, and select Azure Database for PostgreSQL from the Databases page.

  3. Para a opção de implantação, clique no botão criar em hiperescala (Citus) grupo de servidores-visualização.For the deployment option, click the Create button under Hyperscale (Citus) server group - PREVIEW.

  4. Preencha o formulário com os detalhes do novo servidor com as seguintes informações:Fill out the new server details form with the following information:

    • Grupo de recursos: clique no link criar novo abaixo da caixa de texto deste campo.Resource group: click the Create new link below the text box for this field. Insira um nome como myresourceattribute.Enter a name such as myresourcegroup.
    • Nome do grupo de servidores: Insira um nome exclusivo para o novo grupo de servidores, que também será usado para um subdomínio de servidor.Server group name: enter a unique name for the new server group, which will also be used for a server subdomain.
    • Nome de usuário do administrador: atualmente, ele precisa ser o valor cituse não pode ser alterado.Admin username: currently required to be the value citus, and can't be changed.
    • Senha: deve ter pelo menos oito caracteres e conter caracteres de três das categorias a seguir – letras maiúsculas em inglês, letras minúsculas, números (0-9) e caracteres não alfanuméricos (!, $, #,% e assim por diante).Password: must be at least eight characters long and contain characters from three of the following categories – English uppercase letters, English lowercase letters, numbers (0-9), and non-alphanumeric characters (!, $, #, %, and so on.)
    • Local: Use o local mais próximo de seus usuários para dar a eles o acesso mais rápido aos dados.Location: use the location that is closest to your users to give them the fastest access to the data.

    Importante

    A senha de administrador do servidor que você especificar aqui é necessária para fazer logon no servidor e em seus bancos de dados.The server admin password that you specify here is required to log in to the server and its databases. Lembre-se ou grave estas informações para utilização posterior.Remember or record this information for later use.

  5. Clique em Configurar grupo de servidores.Click Configure server group. Deixe as configurações dessa seção inalteradas e clique em salvar.Leave the settings in that section unchanged and click Save.

  6. Clique em Seguinte: Rede > na parte inferior da tela.Click Next : Networking > at the bottom of the screen.

  7. Na guia rede , clique no botão de opção ponto de extremidade público .In the Networking tab, click the Public endpoint radio button. Ponto de extremidade público selecionadoPublic endpoint selected

  8. Clique no link + Adicionar endereço IP do cliente atual.Click the link + Add current client IP address. IP do cliente adicionadoAdded client IP

    Nota

    O servidor PostgreSQL do Azure comunica através da porta 5432.Azure PostgreSQL server communicates over port 5432. Se estiver a tentar ligar a partir de uma rede empresarial, o tráfego de saída através da porta 5432 poderá não ser permitido pela firewall da rede.If you are trying to connect from within a corporate network, outbound traffic over port 5432 may not be allowed by your network's firewall. Se assim for, não poderá ligar ao servidor da Base de Dados SQL do Azure, a menos que o departamento de TI abra a porta 5432.If so, you cannot connect to your Azure SQL Database server unless your IT department opens port 5432.

  9. Clique em revisar + criar e em criar para provisionar o servidor.Click Review + create and then Create to provision the server. O aprovisionamento demora alguns minutos.Provisioning takes a few minutes.

  10. A página será redirecionada para monitorar a implantação.The page will redirect to monitor deployment. Quando o status ao vivo for alterado de sua implantação estiver em andamento para a implantação ser concluída, clique no item de menu saídas à esquerda da página.When the live status changes from Your deployment is underway to Your deployment is complete, click the Outputs menu item on the left of the page.

  11. A página de saídas conterá um nome de host de coordenador com um botão ao lado dele para copiar o valor para a área de transferência.The outputs page will contain a coordinator hostname with a button next to it to copy the value to the clipboard. Registre essas informações para uso posterior.Record this information for later use.

Conectar-se ao banco de dados usando psqlConnect to the database using psql

Quando você cria o banco de dados do Azure para o servidor PostgreSQL, um banco de dados padrão chamado citus é criado.When you create your Azure Database for PostgreSQL server, a default database named citus is created. Para se conectar ao servidor de banco de dados, você precisa de uma cadeia de conexão e da senha de administrador.To connect to your database server, you need a connection string and the admin password.

  1. Obtenha a cadeia de conexão.Obtain the connection string. Na página grupo de servidores, clique no item de menu cadeias de conexão .In the server group page click the Connection strings menu item. (Está em configurações.) Localize a cadeia de caracteres marcada C++ (libpq) .(It's under Settings.) Find the string marked C++ (libpq). Ele estará no formato:It will be of the form:

    host=hostname.postgres.database.azure.com port=5432 dbname=citus user=citus password={your_password} sslmode=require
    

    Copie a cadeia de caracteres.Copy the string. Será necessário substituir "{Your_password}" pela senha administrativa que você escolheu anteriormente.You will need to replace "{your_password}" with the administrative password you chose earlier. O sistema não armazena sua senha de texto não criptografado e, portanto, não pode exibi-la para você na cadeia de conexão.The system doesn't store your plaintext password and so can't display it for you in the connection string.

  2. Abra uma janela de terminal no computador local.Open a terminal window on your local computer.

  3. No prompt, conecte-se ao banco de dados do Azure para o servidor PostgreSQL com o utilitário psql .At the prompt, connect to your Azure Database for PostgreSQL server with the psql utility. Passe sua cadeia de conexão entre aspas, certificando-se de que ela contém sua senha:Pass your connection string in quotes, being sure it contains your password:

    psql "{connection_string}"
    

    Por exemplo, o comando a seguir se conecta ao nó de coordenador do grupo de servidores mydemoserver:For example, the following command connects to the coordinator node of the server group mydemoserver:

    psql "host=mydemoserver-c.postgres.database.azure.com port=5432 dbname=citus user=citus password={your_password} sslmode=require"
    

Criar e distribuir tabelasCreate and distribute tables

Uma vez conectado ao nó de coordenador de hiperescala usando psql, você pode concluir algumas tarefas básicas.Once connected to the hyperscale coordinator node using psql, you can complete some basic tasks.

Em servidores de hiperescala, há três tipos de tabelas:Within Hyperscale servers there are three types of tables:

  • Tabelas distribuídas ou fragmentadas (distribuídas para ajudar a dimensionar o desempenho e a paralelização)Distributed or sharded tables (spread out to help scaling for performance and parallelization)
  • Tabelas de referência (várias cópias mantidas)Reference tables (multiple copies maintained)
  • Tabelas locais (geralmente usadas para tabelas de administração internas)Local tables (often used for internal admin tables)

Neste guia de início rápido, nos concentraremos principalmente nas tabelas distribuídas e nos familiarizaremos com elas.In this quickstart, we'll primarily focus on distributed tables and getting familiar with them.

O modelo de dados com o qual vamos trabalhar é simples: dados de usuário e evento do GitHub.The data model we're going to work with is simple: user and event data from GitHub. Os eventos incluem criação de bifurcação, confirmações git relacionadas a uma organização e muito mais.Events include fork creation, git commits related to an organization, and more.

Depois de se conectar via psql, vamos criar nossas tabelas.Once you've connected via psql, let's create our tables. Na execução do console do psql:In the psql console run:

CREATE TABLE github_events
(
    event_id bigint,
    event_type text,
    event_public boolean,
    repo_id bigint,
    payload jsonb,
    repo jsonb,
    user_id bigint,
    org jsonb,
    created_at timestamp
);

CREATE TABLE github_users
(
    user_id bigint,
    url text,
    login text,
    avatar_url text,
    gravatar_id text,
    display_login text
);

O campo payload de github_events tem um tipo de dados JSONB.The payload field of github_events has a JSONB datatype. JSONB é o tipo de dados JSON em formato binário em Postgres.JSONB is the JSON datatype in binary form in Postgres. O tipo de dados torna mais fácil armazenar um esquema flexível em uma única coluna.The datatype makes it easy to store a flexible schema in a single column.

Postgres pode criar um índice de GIN nesse tipo, que indexará cada chave e valor dentro dele.Postgres can create a GIN index on this type, which will index every key and value within it. Com um índice, torna-se rápido e fácil consultar a carga com várias condições.With an index, it becomes fast and easy to query the payload with various conditions. Vamos continuar e criar alguns índices antes de carregarmos nossos dados.Let's go ahead and create a couple of indexes before we load our data. Em psql:In psql:

CREATE INDEX event_type_index ON github_events (event_type);
CREATE INDEX payload_index ON github_events USING GIN (payload jsonb_path_ops);

Em seguida, pegaremos essas tabelas postgres no nó de coordenador e dizem para a subescala para fragmentá-las entre os trabalhadores.Next we’ll take those Postgres tables on the coordinator node and tell Hyperscale to shard them across the workers. Para fazer isso, executaremos uma consulta para cada tabela especificando a chave para fragmentá-la.To do so, we’ll run a query for each table specifying the key to shard it on. No exemplo atual, nós fragmentaremos a tabela de eventos e de usuários em user_id:In the current example we’ll shard both the events and users table on user_id:

SELECT create_distributed_table('github_events', 'user_id');
SELECT create_distributed_table('github_users', 'user_id');

Estamos prontos para carregar dados.We're ready to load data. No psql ainda, saia do Shell para baixar os arquivos:In psql still, shell out to download the files:

\! curl -O https://examples.citusdata.com/users.csv
\! curl -O https://examples.citusdata.com/events.csv

Em seguida, carregue os dados dos arquivos nas tabelas distribuídas:Next, load the data from the files into the distributed tables:

SET CLIENT_ENCODING TO 'utf8';

\copy github_events from 'events.csv' WITH CSV
\copy github_users from 'users.csv' WITH CSV

Executar consultasRun queries

Agora é hora da parte divertida, realmente executando algumas consultas.Now it's time for the fun part, actually running some queries. Vamos começar com um count (*) simples para ver a quantidade de dados que carregamos:Let's start with a simple count (*) to see how much data we loaded:

SELECT count(*) from github_events;

Isso funcionou bem.That worked nicely. Voltaremos a esse tipo de agregação em um pouco, mas, por enquanto, vamos dar uma olhada em algumas outras consultas.We'll come back to that sort of aggregation in a bit, but for now let’s look at a few other queries. Na coluna JSONB payload, há uma boa quantidade de dados, mas varia de acordo com o tipo de evento.Within the JSONB payload column there's a good bit of data, but it varies based on event type. PushEvent eventos contêm um tamanho que inclui o número de confirmações distintas para o envio por push.PushEvent events contain a size that includes the number of distinct commits for the push. Podemos usá-lo para encontrar o número total de confirmações por hora:We can use it to find the total number of commits per hour:

SELECT date_trunc('hour', created_at) AS hour,
       sum((payload->>'distinct_size')::int) AS num_commits
FROM github_events
WHERE event_type = 'PushEvent'
GROUP BY hour
ORDER BY hour;

Até agora, as consultas envolveram o GitHub_eventos exclusivamente, mas podemos combinar essas informações com os usuários do GitHub_.So far the queries have involved the github_events exclusively, but we can combine this information with github_users. Como nós Fragmentamos os usuários e os eventos no mesmo identificador (user_id), as linhas de ambas as tabelas com IDs de usuário correspondentes serão colocalizadas nos mesmos nós de banco de dados e poderão ser facilmente Unidas.Since we sharded both users and events on the same identifier (user_id), the rows of both tables with matching user IDs will be colocated on the same database nodes and can easily be joined.

Se entrarmos em user_id, a hiperescala poderá enviar por push a execução de junção para dentro de fragmentos para execução em paralelo em nós de trabalho.If we join on user_id, Hyperscale can push the join execution down into shards for execution in parallel on worker nodes. Por exemplo, vamos encontrar os usuários que criaram o maior número de repositórios:For example, let's find the users who created the greatest number of repositories:

SELECT gu.login, count(*)
  FROM github_events ge
  JOIN github_users gu
    ON ge.user_id = gu.user_id
 WHERE ge.event_type = 'CreateEvent'
   AND ge.payload @> '{"ref_type": "repository"}'
 GROUP BY gu.login
 ORDER BY count(*) DESC;

Limpar recursosClean up resources

Nas etapas anteriores, você criou recursos do Azure em um grupo de servidores.In the preceding steps, you created Azure resources in a server group. Se você não espera precisar desses recursos no futuro, exclua o grupo de servidores.If you don't expect to need these resources in the future, delete the server group. Pressione o botão excluir na página visão geral do seu grupo de servidores.Press the Delete button in the Overview page for your server group. Quando solicitado em uma página pop-up, confirme o nome do grupo de servidores e clique no botão excluir final.When prompted on a pop-up page, confirm the name of the server group and click the final Delete button.

Passos seguintesNext steps

Neste guia de início rápido, você aprendeu a provisionar um grupo de servidores de hiperescala (Citus).In this quickstart, you learned how to provision a Hyperscale (Citus) server group. Você se conectou a ele com psql, criou um esquema e distribuiu dados.You connected to it with psql, created a schema, and distributed data.

Em seguida, siga um tutorial para criar aplicativos multilocatário escalonáveis.Next, follow a tutorial to build scalable multi-tenant applications.