Banco de dados SQL para dados de nuvem
Este tutorial pode incorrer em custos. Use o Estimador de custos para gerar uma estimativa do custo baseada em seu uso projetado.
Este tutorial mostra como provisionar um serviço de banco de dados SQL (relacional). Como administrador, você cria uma tabela e carrega um grande conjunto de dados (informações da cidade) no banco de dados. Em seguida, você implementa um aplicativo da web "worldcities" no IBM Cloud® Code Engine. O app permite que usuários regulares olhem para registros a partir do banco de dados em nuvem. O aplicativo é escrito em Python usando a estrutura Flask.
Objetivos
- Provisionar um banco de dados SQL
- Criar o esquema de banco de dados (tabela) e carregar dados
- Implementar um app de contenção pré-construído para Code Engine
- Conectar o serviço de app e de banco de dados (compartilhar credenciais)
- Monitor, Seguro, Backup e Recuperação de bancos de dados em nuvem
Antes de Iniciar
Este tutorial requer:
- IBM Cloud CLI com o plugin Code Engine,
gitpara clonar o repositório de código-fonte.
Para evitar a instalação dessas ferramentas, use o Cloud Shell no console IBM Cloud.
Você encontrará instruções para fazer download e instalar essas ferramentas para o seu ambiente operacional no guia Introdução aos tutoriais.
- Clone o repositório Github para este tutorial e mude em seu diretório. Em um terminal, execute as linhas a seguir:
git clone https://github.com/IBM-Cloud/cloud-sql-database.git cd cloud-sql-database - Acesse GeoNames e faça o download e extraia o arquivo cities1000.zip Ele contém informações sobre cidades com uma população de mais de 1000. Você vai usá-lo como conjunto de dados.
Provisionar o banco de dados SQL
Comece criando uma instância do serviço IBM Db2 Warehouse SaaS.
- Visite o console IBM Cloud®. Clique em Catálogo na barra de navegação superior.
- Clique em Bancos de dados na área de janela esquerda e selecione Db2 Warehouse.
- Escolha o plano Flex Um e mude o nome do serviço sugerido para sqldatabase (você usará esse nome posteriormente). Escolha um grupo de recursos e um local para a implementação do banco de dados.
- Clique em Criar. O fornecimento é iniciado.
- Na Lista de recursos, localize a nova instância em Bancos de dados e aguarde até que ela esteja disponível (às vezes, pode ser necessário atualizar a página). Clique na entrada para o seu serviço do IBM Db2 Warehouse SaaS.
- Clique em Abrir console para ativar o console do banco de dados.
Criar uma tabela
Você precisa de uma tabela para conter os dados de amostra. Crie-a usando o console.
- No console de IBM Db2 Warehouse SaaS, clique no ícone do menu superior esquerdo e, em seguida, em Run SQL na barra de navegação.
- Clique no símbolo + (Adicionar um novo script) ao lado da guia Untitled-1.
- Clique em Do arquivo e selecione o arquivo
cityschema.txtno repositório GitHub que foi clonado anteriormente para o seu diretório local e abra-o. - Clique em Executar todos para executar a instrução. Deverá ser mostrada uma mensagem de sucesso.
Carregar dados
Agora que a tabela "cidades" foi criada, você carregará dados nela. Isso pode ser feito de diferentes maneiras, por exemplo, a partir de sua máquina local ou do armazenamento de objetos na nuvem (COS) ou da interface Amazon S3. Para este tutorial, você fará upload de dados de sua máquina. Durante esse processo, você adaptará a estrutura de tabela e o formato de dados para corresponder totalmente ao conteúdo do arquivo.
-
No console para IBM Db2 Warehouse SaaS clique no ícone do menu superior esquerdo, em seguida, Dados na barra de navegação.
-
Como Origem, mantenha a seleção em Meu computador
-
Em Seleção de arquivo, clique em Arrastar um arquivo para cá ou procurar arquivos para localizar e escolher o arquivo cities1000.txt " que você baixou na primeira seção deste guia.
-
Clique em Avançar para obter a visão geral de Destino com uma seleção de Esquema Selecione o esquema BLUADMIN e, em seguida, a tabela CITIES. Clique em Avançar novamente.
Como a tabela está vazia, ela não faz diferença para anexar ou sobrescrever dados existentes.
-
Agora, customize como os dados do arquivo "cities1000.txt" são interpretados durante o processo de carregamento. Primeiro, desative Cabeçalho na primeira linha porque o arquivo contém apenas dados.
-
Em seguida, digite 0x09 como separador. Isso significa que os valores dentro do arquivo são delimitados por tabulação.
-
Por último, selecione "AAAA-MM-DD" como formato de data. Agora, tudo deve ser semelhante ao que é mostrado nesta captura de tela.
Captura de tela mostrando os dados de amostra -
Clique em Avançar e será oferecido a você para revisar as configurações de carregamento. Concorde e clique em Iniciar carregamento para iniciar o carregamento dos dados na tabela CITIES. O progresso é exibido. Quando os dados forem transferidos por upload, deverá levar somente alguns segundos até que o carregamento seja concluído e algumas estatísticas sejam apresentadas.
-
Clique em Visualizar tabela para procurar os dados. É possível rolar para baixo ou clicar em nomes de coluna para mudar a ordem de classificação.
Verificar dados carregados usando SQL
Os dados foram carregados no banco de dados relacional. Não houve nenhum erro, mas é necessário executar alguns testes rápidos de qualquer maneira. Use o editor de SQL integrado para digitar e executar algumas instruções SQL.
-
Na navegação à esquerda, clique em Run SQL para voltar ao editor SQL. Clique no símbolo + (Incluir novo script) e em Criar novo para criar uma nova guia do editor.
Em vez do editor de SQL integrado, é possível usar ferramentas SQL baseadas em nuvem e tradicionais em seu desktop ou máquina servidor com o IBM Db2 Warehouse SaaS. As informações de conexão podem ser encontradas no menu Administração na navegação esquerda.
-
No tipo de editor ou copie na consulta a seguir:
select count(*) from cities;Selecione o texto da consulta, então, em dropdown ao lado de Run All, escolha Run selecionada. Na seção de resultados, deve ser mostrado o mesmo número de linhas informado pelo processo de carregamento.
-
No "Editor de SQL", insira a instrução a seguir em uma nova linha:
select countrycode, count(name) from cities group by countrycode order by 2 desc;Marque o texto da instrução acima e clique no botão Executar selecionado. Somente essa instrução é executada, retornando algumas estatísticas por país na seção de resultados.
-
Por fim, execute a seguinte instrução similarmente para recuperar detalhes sobre San Francisco na Califórnia:
select * from cities where name='San Francisco' and countrycode='US';
Implementar o código do aplicativo
Mude de volta para o terminal. Agora você vai implantar o código do aplicativo, usando uma imagem de contêiner pré-construído. Você pode modificar o código do aplicativo e construir a imagem do contêiner por conta própria. Veja as instruções no repositório GitHub para obter detalhes.
-
Se você não estiver conectado, use
ibmcloud loginouibmcloud login --ssopara fazer login interativamente. Configure a região e o grupo de recursos para onde o banco de dados foi provisionado. Substitua RESOURCE_GROUP e REGION adequadamente.ibmcloud target -g RESOURCE_GROUP -r REGION -
Crie um projeto novo Code Engine denominado sqldatabase:
ibmcloud ce project create --name sqldatabaseSelecione o novo projeto como o ativo:
ibmcloud ce project select --name sqldatabase -
Em seguida, implemente o aplicativo, nomeando-o como worldcities.
ibmcloud ce app create --name worldcities --image icr.io/solution-tutorials/tutorial-cloud-sql-database:latest --min-scale 1 -
Por último, crie uma ligação de serviço entre o banco de dados existente IBM Db2 Warehouse SaaS e o app:
ibmcloud ce application bind --name worldcities --service-instance sqldatabaseUma vez que a ligação é criada, uma nova revisão do app é iniciada.
-
Agora você pode verificar os detalhes do aplicativo para saber o status e recuperar o URL:
ibmcloud ce app get --name worldcitiesNa saída, procure a linha que começa com URL. O URL mostrado deve ter um padrão como
https://worldcities.unique-subdomain.region.codeengine.appdomain.cloud. Clique no link para acessar o app. Outra opção para recuperar detalhes do aplicativo é visitar o console Code Engine.
Segurança, Backup & Recuperação, Monitoramento
O IBM Db2 Warehouse SaaS é um serviço gerenciado. A IBM cuida de proteger o ambiente, os backups diários e o monitoramento do sistema. Quando você estiver usando um dos planos corporativos existem várias opções para gerenciar o acesso e para configurar a criptografia avançada de dados.
Além das opções de administração tradicionais, o serviço IBM Db2 Warehouse SaaS também oferece uma API REST para monitoramento, gerenciamento de usuários, utilitários, carregamento, acesso de armazenamento e mais.
Testar o app
O app para exibir informações de cidade com base no conjunto de dados carregado é reduzido para um mínimo. Ele oferece um formulário de pesquisa para especificar um nome de cidade - os nomes fazem distinção entre maiúsculas e minúsculas - e
algumas cidades pré-configuradas. Eles são convertidos em /search?name=cityname (formulário de procura) ou /city/cityname (cidades especificadas diretamente). Ambas as solicitações são entregues por meio das mesmas
linhas de código em segundo plano. O endereço cityname é passado como valor para uma instrução SQL preparada usando um marcador de parâmetro por motivos de segurança. As linhas são buscadas do banco de dados e passadas para um
modelo HTML para renderização.
Limpeza
Para limpar os recursos usados pelo tutorial, siga estas etapas:
- Visite o IBM Cloud® Lista de Recursos.
- Na seção Code Engine localize o projeto sqldatabase. Clique nos três pontinhos e selecione Excluir para excluir o projeto e seu app.
- Localize o banco de dados
sqldatabasesob Bancos de Dados. Novamente, clique nos três pontinhos e selecione Excluir para excluir o banco de dados.
Dependendo do recurso, ele não é excluído imediatamente, mas retido (por padrão por 7 dias). É possível recuperar o recurso excluindo-o permanentemente ou restaurando-o dentro do período de retenção. Consulte este documento sobre como usar a recuperação de recurso.
Expandir o tutorial
Deseja ampliar esse app? Aqui estão algumas ideias:
- Ofereça uma procura de caracteres curinga nos nomes alternativos.
- Procure cidades de um país específico e somente dentro de um determinado valor de população.
- Mude o layout da página, substituindo os estilos CSS e ampliando os modelos.
- Permitir a criação de novas informações sobre a cidade com base em formulários ou permitir atualizações de dados existentes, por exemplo, população.