Otimizações nas consultas ao banco de dados

Publicado por Eduardo Eugênio em 14 Ago 2008 | sob: JAVA

mysql - mysql

Quando notamos que o site está crescendo ou percebemos que número de visitas aumentou a solução mais eficiente é pensar na otimização das consultas.
A busca de um assunto específico em um livro é muito mais fácil e rápido quando feita pelo índice, essa definição é clássica. Por esta razão, neste artigo focaremos a criação de índices para otimizações nas consultas nos bancos de dados.

Em um banco de dados com o aumento de visitas ao site é necessário que a resposta seja o mais rápida possível, os índices são uma espécie de “turbo” para consultas ao banco quando utilizados corretamente.
De qualquer forma, a criação de índices deve ser cautelosa, pois o mesmo necessita de espaço na base de dados, não se deve criar índices em todos os campos, mas sim, nos que são utilizado em critérios de buscas (WHERE ou INNER JOIN).

O uso de índices é um dos aspectos mais importantes para otimizar bases de dados. Não importa se ela é simples, por exemplo: Uma pesquisa em uma tabela não indexada com 1.000.000 (um milhão) de registros nunca será rápida e leve.

Se sua aplicação faz várias vezes a mesma consulta que retornam uma quantidade considerável de registros, você pode utilizar o SQL_CACHE, por exemplo:

A cada acesso ao seu index.php ele executa a query: “SELECT id, nome FROM tabela WHERE id > 0;”
Ao invés de fazer o MySQL processar sempre esta query, use “SELECT SQL_CACHE id, nome FROM tabela WHERE id > 0;”, o MySQL buscará o resultado da query no cache ao invés de fazer sempre a mesma pesquisa, o servidor MySQL poderá responder até 90% mais rápida a sua solicitação, deixando o carregamento do seu site muito mais leve.

JBoss Road Show Brasil 2008

Publicado por Eduardo Eugênio em 14 Ago 2008 | sob: JAVA

Olá Amigos ,

Hoje foi realizada a ultima fase do evento JBoss Road Show Brasil 2008 em São Paulo . Grande iniciativa da Red Hat que divulgou para todo o Brasil as tecnologias de ponta em JBOSS. http://www.br.redhat.com/promo/roadshow2008/index.php
Meu destaque foi para a palestra do Edgar Silva http://jbossbrasil.ning.com/profile/edgar que falou claramente sobre a Ferramenta JON grande ferramenta de monitoração …. Vou ficar de olho nessa tecnologia que tem tudo a ver com meu naipe em Java.

Sun Microsystems compra MySQL por US$ 1 bilhão

Publicado por Eduardo Eugênio em 18 Jan 2008 | sob: JAVA

Java e mysql se conversam a anos , agora a Sum fez um negócio da China comprando o Mysql http://www1.folha.uol.com.br/folha/informatica/ult124u364272.shtml

Desenvolvedores aguardem que agora o Java vai conquistar o mundo …..

JNDI - Melhorando o acesso ao banco de dados

Publicado por Eduardo Eugênio em 06 Dez 2007 | sob: JAVA

O ponto crucial de uma aplicação cliente-servidor de hoje é a conexão com o banco de dados. Esta dica pode melhora muito este gargalo de sua aplicação Java.

O JNDI (Java Naming and Directory Interface) é um conjunto de APIs e ferramentas que permite acessar o banco de dados através de um serviços de nomes em aplicações Java. Com ele, você pode compartilhar o mesmo DataSource com outros aplicativos que acessam o mesmo banco de dados, melhorando o desempenho de conexões ao banco de dados. (MYSQL , POSTGRES, ORACLE ).

Esta configuração fica em um arquivo reservado onde configurado com as seguintes características :

Vamos descrevê-las abaixo :

Nome de referência que será utilizando na aplicação para acessar o banco de dados
name=”jdbc/LOGIN”

Informa ao Tomcat que o processo de abertura e fechamento das conexões.
auth=”Container”

Define o tipo de datasource utilizada na conexão
type=”javax.sql.DataSource”

Indica a classe necessário apara a criação da fábrica de conexões
factory=”org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory”

Usuário e senha do banco de dados
username=”USUARIO_BD”
password=”SENHA”

Driver que sera utilizado para conexão ao banco
driverClassName=”com.mysql.jdbc.Driver”

Caminho físico e porta do banco de dados no servidor veja que no final há um parâmetro (autoReconnect=true) que permite a reconexão caso a mesma seja fechada.
url=”jdbc:mysql://HOSTDOBANCO:3306/NOME_BD?autoReconnect=true”

Número máximo de conexões no pool ao mesmo tempo
maxActive=”5″

Número máximo das conexões inativas
maxIdle=”5″

Tempo máximo de espera por conexão ao banco de dados em milisegundos por padrão 15 segundos
maxWait=”15000″
Query SQL utilizada pelo pool para validar as conexões antes de retornar os valores para a aplicação
validationQuery=”select current_date”

Define o que fazer quando as conexões ficam inativas
removeAbandoned=”true”
removeAbandonedTimeout=”30″
logAbandoned=”true”

The Apache Tomcat 5.5 Servlet/JSP Container - JNDI Resources HOW-TO
http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html

Annotations JPA

Publicado por Eduardo Eugênio em 25 Out 2007 | sob: JAVA

E ai galera …

Hoje falaremos um pouquinho sobre annotations , uma das coisas mais legais que conheci em java nos últimos tempos.

Imaginem só , os desenvolvedores colocavam comentários nas aplicações , essas anotações na maioria das vezes seguiam um padrão …. pensa bem porque não acoplar as anotações na programação para simplificar a declaração das classes , métodos , arquivos e elementos do programa ??

Neste artigo vou colocar a descrição de algumas anotações utilizadas na conexão com o banco de dados utilizando JPA (Java Persistence API).

@Name - Registra o componente sob determinado nome único na aplicação que será utilizado pelo Seam
@Scope - Determina o escopo do componente assim , mesmo que o tipo não seja declarado o escopo será utilizado para que funcione.
@NotNull - Valida junto ao Hibernate validator , neste caso aceitar um valor nulo
@Length - Valida junto ao Hibernate o tamanho do campo.
Em breve falarei em outras anotações que estou estudando. Até Mais

Este link é bem legal mostra uma referência de anottations JPA

JPA Annotation Reference

Profile em JAVA - Como analisar o desempenho de minha aplicação ?

Publicado por Eduardo Eugênio em 23 Out 2007 | sob: TOMCAT

icone lambda

O dia-a-dia é tudo para um desenvolvedor e comigo não é diferente , um dia desses precisei de uma ferramenta de profile na web onde encontrar ??? No bom e velho amigo google é claro….. rsrsrsrs.

Se você não conhece esta ferramenta segue uma definição como sempre em inglês :

In software engineering, performance analysis, more commonly profiling, is the investigation of a program’s behavior using information gathered as the program runs (i.e. it is a form of dynamic program analysis, as opposed to static code analysis). The usual goal of performance analysis is to determine which parts of a program to optimize for speed or memory usage.

Em sintese programas de análise de desempenho de aplicações em java, através delas podemos analisar o comportamento , consumo de recursos , melhorias e etc .

Pesquisei muito e achei muitas .. muitas ferramentas para o ambiente desktop dentre elas : Profiler do Netbeans , JRAT entre outros .

Até que eu achei o “cara” um profile maravilhoso para monitoração de JBOSS e TOMCAT - “O Lambda Probe” este profile é indicado pelo Apache Group como a melhor ferramenta de verificação de desempenho para containers java e com um “grande” atrativo ; “GRÁTIS” . No site dos caras tem um link para donativos , vale a pena dar uma grana pros caras a ferramenta é muito legal .

Para conhecer a ferramenta acesse o link : LAMBDA Probe

Segue as características :

- > Forçar Garbage
- > Verificar as Threads
- > Gráficos de utilização dos recursos
- > Envio de deploy diretamente para a área de hospedagem
- > Deixar war em stand by
- > Monitoração de JBOSS

Espero que gostem desta ferramenta eu achei muito louca !!!! Até amanhã.

JBoss Seam - Introduction

Publicado por Eduardo Eugênio em 23 Out 2007 | sob: JBOSS

JBoss Seam is a powerful new application framework for building next generation Web 2.0 applications by unifying and integrating technologies such as Asynchronous JavaScript and XML (AJAX), Java Server Faces (JSF), Enterprise Java Beans (EJB3), Java Portlets and Business Process Management (BPM).

Esta definição dada pelo site do JBOSS http://www.jboss.com/products/seam define de forma bem clara a grande capacidade do JBOSS e ferramentas acopladas como JSF EJB3 portlets e BPM.

jboss

Nós próximos posts colocarei informações sobre um tema que estou estudando bastante que é o JSF - Java Server Faces , fui em um evento patrocinado pela Globalcode (http://www.globalcode.com.br/) o Developers Conference 2007 em que o Ed Burns (pai da Criança) mostrou muitas tendências dessa tecnologia em breve tem post não percam …

Acho que para introdução tá legal , tá muito tarde amanhã estou de volta.