Avalados por :

Como gerar grandes conjuntos de dados para o SAP HANA de forma eficiente.

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Cargando...

Introdução


Recentemente executei um cenário no banco de dados SAP HANA para o qual precisava de um grande conjunto de dados inicial para uma tabela específica, e outro grande conjunto de dados delta que consistia em exclusões, atualizações e inserções no conjunto de dados inicial. Procurei no Google por algo como "gerador de dados para HANA", mas não encontrei o que procurava. Portanto, escrevi um procedimento de banco de dados para preencher minha tabela com os dados necessários. Como outros podem achar útil o script, expandi o script para facilitar sua reutilização. O resultado pode ser encontrado neste blog.

O procedimento insere, atualiza ou exclui dados de uma única tabela, utilizando principalmente operações baseadas em conjuntos para um alto desempenho. As inserções e atualizações são baseadas na definição dos campos da tabela fornecida e contêm dados aleatórios. Por exemplo, para um campo inteiro, é inserido um valor inteiro aleatório, e para um campo baseado em caracteres, é inserida uma string aleatória de caracteres. O procedimento utiliza as tabelas de metadados do HANA para recuperar a definição da tabela. As atualizações ou exclusões de registros são feitas aleatoriamente com base na primeira coluna da chave primária.

Em meu pequeno sistema de testes, consegui uma velocidade de inserção de 9 milhões de registros por minuto para uma tabela com apenas alguns campos. Isso foi muito mais rápido do que a primeira versão do script, que não era baseada em conjuntos.

Como executar o procedimento gerador de dados


Siga os seguintes passos para gerar dados para sua tabela

  1. Baixe o código neste repositório do Git e copie-o no console SQL

  2. Crie uma sequência com a seguinte declaração: "CREATE SEQUENCE GENERATEDATASEQ1". Uma sequência com esse nome é usada no procedimento.

  3. Chame o procedimento usando a seguinte declaração:


CALL "GenerateData" (
  IP_SCHEMA_NAME => '<NOME_ESQUEMA>',
  IP_TABLE_NAME => '<NOME_TABELA>',
  IP_INSERT_NUM_RECORDS => <Número de registros a serem inseridos>,
  IP_MAX_STRING_SIZE => <Tamanho máximo da string inserida. As strings são automaticamente limitadas no comprimento do campo>,                
  IP_DELETE_NUM_RECORDS => <Número de registros a serem excluídos>,
  IP_UPDATE_NUM_RECORDS => <Número de registros a serem atualizados>
);

Limitações


Tenha em mente as seguintes limitações, ou ajuste o código para contorná-las:

  • Apenas suporta tabelas com uma chave primária. A chave primária deve conter pelo menos uma coluna que possa conter valores inteiros. Os tipos de dados binários não são suportados de forma alguma.

  • Criado com HANA 2, SPS04, não garantido que funcione com pacotes de serviços mais antigos.

  • Os valores gerados aleatoriamente dificultam a compressão. Portanto, é provável que você veja uma compressão mínima que não pode ser comparada com casos de uso reais.


Exemplo


Como exemplo, é criada uma tabela com a seguinte declaração:
CREATE SCHEMA GENERATEDATA;
SET SCHEMA GENERATEDATA;
CREATE    
            
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?