Usando Quartz com Hibernate

Olá, pessoal! No artigo de hoje eu vou apresentar a API Quartz. O objetivo é mostrar como o Quartz é simples de usar. E para contextualizar, decidi que criaremos um job que terá como trabalho popular um banco a cada X time. Nesse caso, vamos usar o Hibernate para fazer o job. O Quartz nada mais é que um scheduler de jobs, que podem ser executados em determinados momentos. No decorrer do artigo veremos como ele funciona na prática.

Para usar o Quartz, basta fazer o download do jars(quartz-all.x.jar) e adicionar ao projeto. Adicione as libs do Hibernate e banco de dados (aqui usaremos o MySQL) ao projeto também.

Desenvolvimento

Para usar o Quartz, vamos criar um package br.com.camilolopes.scheduler. Nele teremos uma classe responsável por executar os jobs programados. No package br.com.camilolopes.job é onde está a classe que tem um trabalho a ser feito, que no nosso caso é persistir no banco de dados.Já o …

[Leia mais]
InnoDB e os Logs de Transação

Um dos desafios mais interessantes no MySQL atualmente é conseguir aplicar ao servidor de bancos de dados, o mysqld, uma boa configuração relacionada com o InnoDB Plugin. Digo uma configuração, pois, atingir um nível de melhoria de performance não é lá tão fácil, mesmo sabendo o significado e os possíveis valores de cada uma daquelas […]

Atualização do MySQL Cluster traz melhoria de desempenho

A Oracle liberou a versão 7.2 do MySQL Cluster, que aumenta consideravelmente a velocidade do banco de dados em rede. Segundo a empresa, a funcionalidade "Adaptive Query Localisation" permite que o cluster responda a consultas mais de 70 vezes mais rápido.

A ideia por trás dessa funcionalidade é que, em vez de deixar todo o processamento de consultas para o servidor central, os nós de dados individuais agora possuem inteligência suficiente para responder a partes das consultas. Isso reduz a quantidade de dados que é enviada para o servidor. A tecnologia é voltada para aumentar a velocidade de consultas que combinam várias tabelas usando JOIN.

Além disso, a memcached API também foi adicionada à nova versão. Isso permite que bancos de dados sejam endereçados como tabelas relacionais através do SQL e como dados key/value no …

[Leia mais]
HeidiSQL ganha atualização e agora funciona com Microsoft SQL Server

Uma atualização do HeidiSQL (a 7), o cliente baseado em Windows para MySQL e MariaDB foi anunciada. Ela traz suporte básico para funcionar com sistemas Microsoft SQL Server na aplicação de gerenciamento de banco de dados. O suporte para SQL Server inclui a habilidade de executar queries, editar datas grid e exportar apenas dados.

O HeidiSQL permite que administradores se conectem com múltiplos servidores de bancos de dados e criem e editem tabelas, visualizações, procedimentos de armazenamento e triggers, criem “bons” exports do SQL, transfiram diretamente de um servidor para outro, gerenciem privilégios de usuários, edição em massa de tabelas, entre outras coisas.

O novo HeidiSQL 7 adiciona suporte para configurações SSL, estima limites de recursos e sugere senhas aleatórias para seu gerenciador de usuário. Além disso, a …

[Leia mais]
MySQL server has gone away

Esta é uma mensagem de erro que acontece em muitos dos servidores de bancos de dados MySQL instalados aí pelo mundo e muitos dos usuários se vêem em uma situação que talvez não tenha solução. Há bastante tempo eu tenho respondido à fóruns de discussão que tratam do tema que é simples de resolver. A […]

Oracle Database Firewall amplia suporte ao MySQL

A Oracle lançou seu Firewall Database, que apresenta o suporte para MySQL Enterprise Edition. O objetivo é ajudar as organizações a prevenir ataques que possam alcançar os bancos de dados das empresas.

Para lidar com ameaças, como injeções SQL, o Oracle Database Firewall estabelece um centro defensivo em torno de bases de dados durante o monitoramento e aplicação do comportamento normal do aplicativo em tempo real. Isso ajuda a prevenir ataques de injeção SQL, bem como tentativas não autorizadas de acessar informações confidenciais.

O Oracle Database Firewall agora protege bancos de dados MySQL contra violações de dados sem a necessidade de quaisquer alterações a aplicações existentes, infraestrutura de banco de dados ou o sistema operativo já existente do banco de dados alvo. Para aumentar a geração de relatórios, o firewall apresenta uma nova infraestrutura de informação para a execução, e …

[Leia mais]
Particionando InnoDB Buffer Pool

O título deste artigo é bastante sugestivo do ponto de vista de performance em bancos de dados. Geralmente, independente do tipo de particionamento, horizontal ou vertical, ele servirá para eliminar overheads e operações adicionais na escrita e/ou recuperação de dados.

Com o InnoDB Buffer Pool a parti da versão 5.5 não é diferente, pois poderemos utilizar uma nova variável, aplicada somente ao InnoDB Plugin que nos possibilita dividir o Buffer Pool (área de memória que armazena índices e dados de tabelas InnoDB) em várias instâncias, sendo que cada uma das instâncias deverá ter no mínimo 1GB de espaço. Então, neste cenário, caso tenhamos um innodb_buffer_pool_size igual à 2GB, poderemos ter a variável innodb_buffer_pool_instances=2.

As principais vantagens de se ter um Buffer Pool particionado é a possibilidade de cada uma das instâncias poder controlar sua própria lista, que é baseada …

[Leia mais]
Particionando o InnoDB Buffer Pool

O título deste artigo é bastante sugestivo do ponto de vista de performance em bancos de dados. Geralmente, independente do tipo de particionamento, horizontal ou vertical, ele servirá para eliminar overheads em operações adicionais na escrita e/ou recuperação de dados. Com o InnoDB Buffer Pool, a partir da versão 5.5 não é diferente, pois, poderemos […]

Uma tabela de relacionamento de muitos para muitos – resolvendo o problema de relação de exclusão

Começarei definindo o relacionamento de Muitos para Muitos MySQL (Experts podem pular para o próximo parágrafo).

O que é um relacionamento de Muitos para Muitos MySQL

Um relacionamento de Muitos para Muitos MySQL é um relacionamento que é multi-valorizado em ambas as direções.

Esse tipo de relacionamento é auxiliado pelo uso de uma tabela de ligação. Por exemplo, uma Pergunta (Question) pode ter mais de uma Categoria (Categorie), e uma Categoria pode ter mais de uma Pergunta. 

CREATE TABLE link (
Question_id int unsigned NOT NULL,
Category varchar(20),
PRIMARY KEY (`Question_id `,` Category`),
KEY `category_question` (`Category`,`Question_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

+-------------+---------------+
| Question_id | Category |
+-------------+---------------+
| 1 | Animals |
| 1 | …
[Leia mais]
Problemas de escala de usuários com o MySQL

Essa semana tive um problema grave em um cliente que precisava escalar o números de conexões simultâneas no MySQL de forma que estas conexões superassem o número de 2000. Vários problemas foram analisados, desde pontos básicos como configurações do próprio servidor de bancos de dados MySQL como alguns pontos relacionados ao Kernel. Somente para situar o leitor […]