sábado, 5 de outubro de 2024

Explorando o Comando bc no Linux

 O comando bc (Basic Calculator) é uma ferramenta poderosa no Linux para realizar cálculos matemáticos com precisão arbitrária. Ele pode ser usado tanto de forma interativa quanto em scripts. Neste artigo, vamos explorar desde os exemplos mais básicos até os mais avançados.


Exemplos Básicos

1. Operações Aritméticas Simples

O bc pode ser usado para realizar operações aritméticas básicas como adição, subtração, multiplicação e divisão.


echo "12 + 5" | bc

# Saída: 17


echo "10 - 3" | bc

# Saída: 7


echo "4 * 7" | bc

# Saída: 28


echo "20 / 4" | bc

# Saída: 5


2. Uso de Variáveis

Você pode armazenar resultados em variáveis para uso posterior.


x=$(echo "12 + 5" | bc)

echo $x

# Saída: 17


3. Operações com Decimais

Para trabalhar com números decimais, você pode definir a escala (número de casas decimais).


echo "scale=2; 5 / 3" | bc

# Saída: 1.66


Exemplos Intermediários

1. Operadores de Incremento e Decremento

O bc suporta operadores de incremento (++var) e decremento (--var).


echo "var=10; ++var" | bc

# Saída: 11


echo "var=10; var++" | bc

# Saída: 10 (incrementa após a operação)


2. Operadores de Comparação

Você pode usar operadores de comparação para verificar condições.


echo "5 > 3" | bc

# Saída: 1 (verdadeiro)


echo "5 < 3" | bc

# Saída: 0 (falso)


3. Funções Matemáticas

O bc inclui várias funções matemáticas, como seno, cosseno e exponenciação.


echo "scale=4; s(1)" | bc -l

# Saída: 0.8415 (seno de 1 radiano)


echo "scale=4; e(1)" | bc -l

# Saída: 2.7182 (exponencial de 1)


Exemplos Avançados

1. Scripts com bc

Você pode criar scripts complexos usando bc para cálculos avançados.


echo "define f(x) { return x^3 + 2*x^2 + x + 1 } ; f(3)" | bc

# Saída: 49


2. Loops e Condicionais

O bc permite o uso de loops e condicionais para cálculos iterativos.


echo "for (i=0; i<5; i++) i^2" | bc

# Saída: 0 1 4 9 16


echo "if (5 > 3) 1 else 0" | bc

# Saída: 1


3. Conversão de Bases

Você pode converter números entre diferentes bases, como decimal para hexadecimal.


echo "obase=16; 255" | bc

# Saída: FF


echo "ibase=16; FF" | bc

# Saída: 255


Conclusão

O comando bc é uma ferramenta versátil e poderosa para cálculos matemáticos no Linux. Desde operações básicas até scripts complexos, ele oferece uma ampla gama de funcionalidades que podem ser extremamente úteis para desenvolvedores e administradores de sistemas. Experimente os exemplos acima e explore ainda mais as capacidades do bc!

sexta-feira, 4 de outubro de 2024

Raw Tables - Informix

Introdução

No mundo dos bancos de dados, a eficiência e a segurança dos dados são cruciais. O Informix, um sistema de gerenciamento de banco de dados da IBM, oferece diferentes tipos de tabelas para atender a diversas necessidades. Entre elas, as RAW TABLES se destacam por suas características específicas de não registro de operações. Neste artigo, exploraremos o que são RAW TABLES, suas vantagens, limitações e casos de uso.

O que são RAW TABLES?

As RAW TABLES são tabelas permanentes que não registram operações de inserção, atualização ou exclusão. Isso significa que as operações realizadas nessas tabelas não são registradas nos logs de transação do banco de dados. Essa característica as torna semelhantes às tabelas em um banco de dados sem registro.

Vantagens das RAW TABLES

  1. Desempenho Melhorado: Como as operações não são registradas, as RAW TABLES podem oferecer um desempenho superior em comparação com tabelas que registram todas as transações. Isso é particularmente útil durante a carga inicial de grandes volumes de dados.
  2. Simplicidade na Carga de Dados: As RAW TABLES são ideais para a carga e validação inicial de dados. Utilitários de carga, como dbexport, LOAD statement do DB-Access, ou o High-Performance Loader (HPL) em modo expresso, podem ser usados para carregar dados nessas tabelas.

Limitações das RAW TABLES

  1. Falta de Recuperabilidade: Como as operações não são registradas, não é possível recuperar dados de RAW TABLES em caso de falha, a menos que um backup de nível 0 tenha sido realizado após a última atualização.
  2. Restrições de Uso: Não é possível definir restrições de chave primária, chave única ou referencial em RAW TABLES. Além disso, essas tabelas não devem ser usadas dentro de transações.
  3. Incompatibilidade com Replicação: As RAW TABLES não são compatíveis com a replicação de dados e têm restrições em ambientes de cluster de alta disponibilidade.


Casos de Uso

As RAW TABLES são mais adequadas para cenários onde a carga inicial de dados é crítica e o desempenho é uma prioridade e também em procedures onde normalmente essas cargas são diarias. Após a carga e validação dos dados, é recomendável alterar a tabela para o tipo STANDARD e realizar um backup de nível 0 antes de usá-la em transações.

Exemplo de INSERT INTO em RAW TABLE

Vamos considerar um exemplo prático de como inserir dados em uma RAW TABLE. Suponha que temos uma PROCEDURE onde vamos atualizar essa RAW TABLE  constantemente  chamada raw_data com a seguinte estrutura:

  • Criar a tabela na PROC, onde ela será permanente.

CREATE RAW TABLE  IF NOT EXISTS raw_data (

id SERIAL,

name VARCHAR(50),

value INTEGER

);

  • Limpar os dados da tabela, toda vez que a PROC rodar:
TRUNCATE raw_data 

  • Para inserir dados nessa tabela, você pode usar o comando INSERT INTO da seguinte forma:

INSERT INTO raw_data (name, value) VALUES ('Exemplo', 123); ou

INSERT INTO raw_data (name, value)

SELECT name, value

FROM source_data; 

Este comando insere uma nova linha na tabela raw_data com os valores especificados para as colunas name e value.

Conclusão

As RAW TABLES no Informix oferecem uma solução eficiente para a carga inicial de dados, proporcionando um desempenho superior devido à ausência de registro de operações. No entanto, é importante estar ciente de suas limitações e usá-las adequadamente para garantir a integridade e a segurança dos dados.