quinta-feira, 10 de setembro de 2026

Análise de performance – AWS RDS (MySQL, MariaDB, PostgreSQL) e DynamoDB

 


Os testes foram executados em uma instância AWS db.t4g.micro (2 vCPU ARM Graviton, 1 GB RAM) com SSD GP2, utilizando commits em lote de 10.000 registros. O principal indicador é o tempo total de inserção (em segundos).




Observações:

  • MariaDB apresentou a melhor escalabilidade.

  • MySQL também escalou linearmente, porém cerca de 75% mais lento.

  • PostgreSQL manteve crescimento linear, mas com latência muito superior.

  • DynamoDB teve comportamento consistente, porém limitado pela capacidade de gravação.

Ganho relativo entre os bancos

Considerando o teste de 1 milhão de registros:




Quanto maior a barra, maior o aproveitamento da infraestrutura.

Interpretação técnica

1. MariaDB (PyMySQL) — Melhor desempenho

Tempo: 22,64 s

Motivos prováveis:

  • Engine InnoDB muito eficiente para cargas de escrita em lote.

  • Commit a cada 10.000 registros reduz drasticamente o custo de sincronização em disco.

  • Menor overhead de protocolo em relação ao PostgreSQL.

  • Excelente aproveitamento da memória limitada (1 GB).

Conclusão: melhor opção para workloads de ETL, IoT e importação massiva.

2. MySQL (PyMySQL)

Tempo: 39,72 s

Embora utilize praticamente a mesma arquitetura do MariaDB, ficou cerca de 1,75× mais lento.

Possíveis causas:

  • Diferenças de otimização entre versões do MySQL e MariaDB.

  • Configuração padrão do RDS (flush, buffer pool e parâmetros de redo log).

  • Implementação do driver PyMySQL.

Ainda assim, o desempenho é muito bom para aplicações transacionais.

3. PostgreSQL (psycopg2)

Tempo: 2.307 s (38,5 minutos)

O resultado é bastante inferior.

Tecnicamente, isso pode ocorrer devido a:

  • WAL (Write Ahead Log) gerando maior volume de escrita.

  • Sincronização (fsync) a cada commit.

  • Checkpoints frequentes em instância com apenas 1 GB RAM.

  • Inserções individuais em vez de COPY, execute_values ou COPY FROM.

Importante: esse resultado não significa que PostgreSQL seja lento. Ele indica que o método de inserção utilizado não foi o mais eficiente para esse banco.

Com COPY, o desempenho normalmente aumenta em dezenas de vezes.

4. DynamoDB

O comportamento foi curioso.

Método

1 milhão

Padrão

1224 s

Otimizado

1254 s

O modo “otimizado para gravação (40.000)” praticamente não trouxe ganho.

Isso sugere que o gargalo não estava na capacidade provisionada, mas em outro fator, como:

  • Latência de rede.

  • BatchWriteItem limitado a 25 itens.

  • Overhead do cliente Python.

  • Particionamento (hot partition).

Considerações sobre a infraestrutura

Instância utilizada

Recurso

Valor

Tipo

db.t4g.micro

vCPU

2

RAM

1 GB

Armazenamento

GP2 SSD

Essa é uma instância de entrada. Mesmo assim, MariaDB ultrapassou 44 mil inserções por segundo, demonstrando que o gargalo não foi o SSD GP2, mas principalmente o mecanismo de persistência de cada banco.

Conclusão

Melhor desempenho: MariaDB

22,64 s para 1 milhão de registros, cerca de 44 mil registros/s.

MySQL foi competitivo

Entregou cerca de 25 mil registros/s, suficiente para muitas aplicações OLTP.

PostgreSQL precisa de outra estratégia

Para cargas massivas, o correto seria testar COPY FROM ou execute_values; o método atual penaliza fortemente o banco.

DynamoDB não é indicado para carga massiva sequencial

Ele é excelente para baixa latência e escalabilidade distribuída, mas não para importar milhões de registros via cliente Python nesse formato.









terça-feira, 15 de outubro de 2024

Iniciando instâncias EC2 na AWS com Python(boto3) - Starting instances at AWS with Python

 




Infraestrutura como Código (IaC) é uma prática em que a infraestrutura de TI, como servidores, redes e armazenamento, é provisionada e gerenciada por meio de arquivos de configuração em vez de processos manuais. Com o IaC, toda a infraestrutura é descrita em código, permitindo que ela seja versionada, auditada e replicada de forma automatizada e consistente. Essa abordagem melhora a eficiência, a escalabilidade e a confiabilidade da gestão de infraestruturas complexas, principalmente em ambientes de nuvem.

Passos:

Criar um usuário no AWS IAM com Access Keys

  • Acesse o console da AWS.
  • Navegue até o serviço IAM (Identity and Access Management).
  • Crie um novo usuário com as permissões necessárias (no mínimo a política AmazonEC2FullAccess para o uso do EC2).
  • No processo de criação, selecione a opção para gerar Access Key e Secret Key.
Salve essas chaves em local seguro (você precisará delas para configurar o boto3).




Configurar boto3 com as Access Keys
  • Instale o boto3 se ainda não tiver instalado:
                    pip install boto3



Criar um código Python para iniciar instâncias EC2
  • A seguir está o código que usa o boto3 para iniciar uma instância EC2.

import boto3

# Definir as credenciais de acesso (access key e secret key)
ACCESS_KEY = 'sua_access_key_aqui'
SECRET_KEY = 'sua_secret_key_aqui'
REGION = 'us-east-1'  # Região em que você deseja iniciar a instância

# Criar uma sessão no boto3 com as credenciais e região configurada
ec2_client = boto3.client(
    'ec2',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    region_name=REGION
)

# Parâmetros para iniciar a instância
instance_params = {
    'ImageId': 'ami-0c55b159cbfafe1f0',  # AMI ID da instância (Ubuntu, Amazon Linux, etc.)
    'InstanceType': 't2.micro',           # Tipo da instância
    'MinCount': 1,                        # Número mínimo de instâncias
    'MaxCount': 1,                        # Número máximo de instâncias
    'KeyName': 'nome-da-sua-keypair',     # Nome do par de chaves (já criado no EC2)
    'TagSpecifications': [
        {
            'ResourceType': 'instance',
            'Tags': [
                {'Key': 'Name', 'Value': 'MinhaInstanciaEC2'}
            ]
        }
    ]
}

# Iniciar a instância EC2
response = ec2_client.run_instances(**instance_params)

# Obter o ID da instância criada
instance_id = response['Instances'][0]['InstanceId']
print(f'Instância {instance_id} foi iniciada com sucesso.')


Dica importante, você pode postar usar esse código no Google Colab e fazer toda a operação por lá, sem a necessidade de Python ser instalado na sua máquina local.

Até mais pessoal

Fonte : aws.com


terça-feira, 21 de julho de 2020

Analisando gastos do Governo Federal utilizando Python




quarta-feira, 8 de julho de 2020

Jogo em Python utilizando a biblioteca Game2dBoard


Segue um jogo desenvolvido em Python utilizando a biblioteca Game2DBoard

O jogo consistem em acertar a bolinha com o clique do mouse, a bolinha inicia na parte superior e vai descendo para a parte inferior,  cada acerto gera um ponto, um erro e o jogo termina. Cada acerto a bolinha inicia novamente na parte superior, por[em agora com uma velocidade maior.


Biblioteca Game2dBoard para jogos simples




sexta-feira, 19 de junho de 2020

Beneficiários do Auxílio Emergencial por Cidade









Portal da Transparência

Todos os dados contidos no link acima foram retirados do Portal da Transparência, a contraprova pode ser feita lá. 

Como denunciar ?

Muitos foram os beneficiários e também, muitos receberam valores sem necessidade. Se você souber de algum caso, pode denunciar no Portal da Transparência neste link, basta apenas alterar a Busca Livre por sobrenome e mudar o município e o mês de consulta. A consulta é lenta. 




Sobre o portal 

É de conhecimento de todos que o Portal da Transparência veio para mostrar onde e como o dinheiro público é gasto. A consulta pública pode ser realizada por qualquer cidadão, porém, como já disse acima, a consulta é lenta,  os dados abertos podem ser baixados e acessados diretamente no Portal.

Desenvolvedor 

Utilizando alguma linguagem de programação, é possível separar as informações por cidade, e isso foi feito utilizando a linguagem Python.

Os dados abertos pode ser obtidos aqui em formato CSV.



Se você quer o código Python para separação por cidades, também pode estar fazendo download aqui


quarta-feira, 13 de maio de 2020

Maven x Netbeans - Erro de repositório

Olá pessoal


Há muito tempo venho tentando  utilizar Maven nos projetos em Netbeans, e sempre havia um erro na tentativa de download dos arquivos do repositório http://repo.maven.apache.org



Por muitas vezes pensei que era erro no sistema operacional, na minha rede, no firewall, no antivírus ou sei lá o que mais.

Pois bem, tentei resolver e aqui vai a resposta, pode parecer simples, mas isso é o resultado depois de uma hora de tentativas frustradas.

Qual a causa.
O repositório central utilizado pelo Maven era

http://repo.maven.apache.org/    e parece que a URL mudou para
https://repo.maven.apache.org/maven2/
 (foi adiciona um s no http, camada adicional de segurança SSL/TLS).

Abaixo seguem os passos rápidos para realizar essa mudança no Netbeans e ser feliz, ou seja adicionando apenas o repositório com SSL 


Passo 1
Acesse este arquivo na sua máquina Windows

   C:\Program Files\NetBeans 8.2 RC\java\maven\conf\settings.xml

Passo 2
    Copie e cole o conteúdo abaixo no arquivo citado no passo 1.


<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><pluginGroups></pluginGroups><proxies></proxies><servers></servers><mirrors><mirror><id>internal-repository</id><name>Maven Repository Manager running on https://repo1.maven.org/maven2</name><url>
https://repo.maven.apache.org/maven2/</url><mirrorOf>*</mirrorOf></mirror></mirrors><profiles></profiles></settings>

Passo 3
    Crie o projeto Maven e visualize as dependências sendo baixadas tranquilamente.

quarta-feira, 6 de maio de 2020

JSON e Arduino


No post de hoje iremos falar sobre interoperabilidade de sistemas. O termo pode parecer estranho, mas grande parte dos serviços da Web funciona neste formato, onde algum sistema envia informações para outro. E aqui vem a pergunta, como enviar informações quando os sistemas são desenvolvidos em linguagens diferentes ??





Tempos atrás tínhamos os arquivos XML que eram enviados de um sistema para outro. Exemplo disso é a maneira como os dados de Nota Fiscal Eletrônica ainda são enviados para a Receita Federal.

 
Exemplo de NFe enviada a Receita Federal





Outro maneira de enviar informações entre sistemas é o formato Json, bastante difundido na maioria das linguagens. A plataforma Arduino não poderia ficar de fora e também tem a biblioteca para realizar o envio e recebimento deste tipo de dados.

Dentre todas as bibliotecas que testei essa é a melhor Arduinojson. Abra o gerenciador de bibliotecas da IDE Arduino e faça a instalação da última versão. Neste momento a 6.15.1

Gerenciador de bibliotecas Arduino




terça-feira, 5 de maio de 2020

Python, Pandas e Gráfico


Segue um pequeno código utilizando Python com bibliotecas matplolib e Pandas 1.0.1 (tive problemas usando a versão 1.0.3)

A ideia apenas é carregar  uma matriz de valores(pilotos e qtde de pódios cada um), e assim mostrar um gráfico em barras horizontais. Existe também um filtro para apenas exibir pilotos que possuem pódio maior que zero.










import pandas as pd
import matplotlib.pyplot as plot

data = {
    "Piloto": ['A.Senna', 'Prost', 'Piquet', 'Mansell', 'Boutsen',
        'R.Patrese', 'Berger', 'Aguri Suzuki', 'Éric Bernard', 'Derek Warwick',
        'Modena', 'Nicola Larini', 'Jean Alesi', 'Satoru Nakajima', 'Pierluigi Martini',
        'Andrea de Cesaris', 'Philippe Alliot', 'Nannini', 'Capelli', 'Emanuele Pirro',
        'Michele Alboreto', 'Martin Donnelly', 'Alex Caffi', 'Maurício Gugelmin', 'Olivier Grouillard',
        'Paolo Barilla', 'David Brabham', 'Gregor Foitek', 'Moreno', 'Yannick Dalmas',
        'Jyrki Järvilehto', 'Tarquini', 'Gianni Morbidelli', 'Johnny Herbert', 'Bernd Schneider'
    ],
    "Pódio": [11, 9, 4, 5, 3,
        1, 7, 1, 0, 0,
        0, 0, 2, 0, 0,
        0, 0, 3, 1, 0,
        0, 0, 0, 0, 0,
        0, 0, 0, 1, 0,
        0, 0, 0, 0, 0
    ]
};

dataframe = pd.DataFrame(data = data);
dataframe1 = dataframe[dataframe['Pódio'] > 0]
dataframe1.plot.barh(x = "Piloto", y = "Pódio", rot = 70, title = "Pódios por piloto");
plot.show(block = True);














quinta-feira, 29 de novembro de 2018

Jogo em JavaScript


Jogar em sala de aula ??




Exatamente, jogar em sala de aula pode ser algo que incomoda muitos professores, e acredite, muitos pedagogos dizem que esse é o caminho que pode tornar a aprendizagem mais interessante

Pensando nisso, na disciplina de Conceitos de Programação (os conceitos eles já viram, vamos para a parte violenta) , decidi implantar o desenvolvimento de um jogo em JavaScript. O jogo em si vai ser o mesmo para todos, um objeto pulando ao clique do mouse, parecido com o jogo do Chrome,

Resultado de imagem para dinossauro chrome
 porém, os alunos podem editar o background, mudar a figura dos personagens, adicionar os sons que cada um gosta, entre outras coisas.

Pensando nisso, decidi encontrar algo pronto para não perder. Pesquisando na internet, apostei nas aulas do Youtube, de um rapaz chamado Filipe Alves, ele possui um canal onde você pode acompanhar esse jogo e outros vídeos sobre computação. Os vídeos são muito bem aplicados e prendem a atenção dos alunos,realmente recomendo.

Chega de lenga lenga e vamos aos códigos, abaixo você pode ver a tela inicial do jogo




Pra quem desejar você pode realizar o download dos arquivos de código fonte aqui e sair jogando.



Abraços e até mais

segunda-feira, 19 de novembro de 2018

Protótipo de Urna Eletrônica desenvolvida em Java






Graças a Deus, caro eleitor, a eleição desse ano acabou. Muitos foram os boatos por fraudes nas urnas brasileiras, mas acredito que todo o processo desenvolvimento do software e da urna é auditado tanto pelo governo federal e também pelo partidos políticos. Mas não vamos falar mais disso.


Todo ano na instituição que trabalho, os alunos devem desenvolver projetos voltados para as disciplinas que os mesmos aprendem. Várias foram as disciplinas estudadas, Bancos de dados, Programação, HTML e CSS, entre outras.


terça-feira, 28 de agosto de 2018

Instalando Python no Netbeans 8.2








 Para você que assim como eu precisa desenvolver alguns exemplos utilizando Python 3.7.0 e Netbeans 8.2 , segue a instalação.

Primeiramente baixe a versão Python 3.7.0 para sua arquitetura de processador, nesse link


Após o download realize a instalação, na sequência, instale a versão 8.1 do plugin Python para o Netbeans aqui

segunda-feira, 20 de agosto de 2018

TCC sobre Automação Industrial com redes AS-I


Segue TCC sobre Automação envolvendo redes AS-I, CLP e controle via celular ou PC.


Autores : Marcelo Cenci e Uberdam Cavaletti

Link para download aqui

terça-feira, 21 de novembro de 2017

segunda-feira, 9 de outubro de 2017

Painel de Carro e Arduíno


Painel de Carro e Arduíno



Desenvolvimento de painel analisando dados emitidos pelo jogo Live for Speed. O jogo envia dados via pacotes UDP, foi utilizada biblioteca que recebe os dados do game via pacotes UDP. Arduino recebe esses dados, realiza funções ou tratamento e transfere para o painel. 

O painel conta com marcador de combustível, indicador de marchas, ponto de troca de marcha, velocidade, RPM. Foram utilizados leds, servo motores, placa de rede ethernet, bibliotecas de tramamento de dados.

quarta-feira, 31 de maio de 2017

Codificando Batalha Naval em VisualG








Algoritmo "BatalhaNaval"


Var
  MinhaMatriz: Vetor[1..10,1..10] de Caracter
  coluna,linha,navio,boia,lancha,JogadaLinha,JogadaColuna,submarino:inteiro;
  TerminarJogo:Logico;
  
  
procedimento LimparMatriz
inicio
   PARA linha DE 1 ATÉ 10 FAÇA
      PARA coluna DE 1 ATÉ 10 FAÇA
         MinhaMatriz[linha,coluna] := "A"
      FIMPARA
   FIMPARA
fimprocedimento

quinta-feira, 2 de fevereiro de 2017

Codificando 2048 para Android



https://upload.wikimedia.org/wikipedia/commons/6/64/2048_Screenshot.png 

Bom dia pessoal. Lá por volta de 2014 um estudante de computação da Itália (Gabriele Cirulli), desenvolveu este jogo, 2048. O objetivo do jogo é chegar ao valor de 2048 em um desses quadros coloridos.

Este game ficou muito conhecido e jogá-lo é viciante. A codificação do mesmo é simples e você pode obter mais informações do jogo aqui e sobre o autor aqui.

Até aquele momento em 2014, não se tinha um versão para Android, IOS, atualmente existem muitas. Naquela oportunidade desenvolvi quase que por completo a codificação para Android, mas não tive mais tempo de tocar o código fonte adiante.

Irei compartilhar esse fontes aqui e agora para quem quiser. O projeto foi codificado no Eclipse

Link dos fontes aqui

Curta o blog Tixplicando no Facebook clicando aqui


terça-feira, 18 de outubro de 2016

Quantas pessoas com seu nome existem no Brasil ??



 


Isso mesmo. Você já se perguntou quantos nomes iguais ao seu existem no Brasil, Estado ou seu Município ?

O IBGE com base nessas informações lançou a um tempo atrás esse site onde você pode pesquisar a frequência com que seu nome é utilizado no país, estado ou município,ranking do nome  e além disso oferece um gráfico mostrando em que década seu nome foi mais utilizado.

Abaixo podemos ver o gráfico do jogador Romário, que teve um crescimento elevado na década de 90 pelo fato do mesmo estar em evidência.

Aproveite e diverta-se




quarta-feira, 5 de outubro de 2016

Automação Residencial



Não caro leitor, por incrível que pareça o título desse post e a imagem acima tem tudo a ver. Você que tem menos que 25 provavelmente não vai lembrar desse desenho animado que retratava uma família futurística cercada de invenções tecnológicas.

Segue um vídeo


É claro que muitas dessas tecnologias poderão nem existir, mas muitas delas podem ser facilmente criadas hoje utilizando programação, placas eletrônicas (Arduíno, Raspberry, Rumba). interfaces, (HTML, Android), componentes eletrônicos e elétricos.

Pois vem vamos lá, irei demonstrar aqui um dos projetos que foi desenvolvido no Mundo Senai Xanxerê, evento este que tem como finalidade demonstrar aos alunos oque se pode fazer com as mais variadas áreas do conhecimento.


A ideia

A ideia era automatizar uma sala de aula, iluminação, ventiladores, cortina, som.

Componentes utilizados

Arduino Mega
Relés

Como controlar a sala
Decidimos montar uma aplicação utilizando HTML, JavaScript e AJAX, dessa maneira se vários celulares ou tablets estivessem conectados, todos iriam receber o estado da iluminação,som (ligado, desligado), cortinas (abertas,fechadas),


A página do usuário