Mostrando postagens com marcador PostgreSQL. Mostrar todas as postagens
Mostrando postagens com marcador PostgreSQL. Mostrar todas as postagens

domingo, 3 de fevereiro de 2008

Otimizando o tamanho de bancos de dados PostgreSQL

Neste artigo escrito para a LinuxInsight são apresentadas as técnicas para otimizar o tamanho ocupado pelos banco de dados em PostgreSQL, bem como uma explicação de cada um dos procedimentos.

É interessante notar o quanto pode-se recuperar de espaço em disco após alguns procedimentos de DBA serem executados.

Conforme o autor demonstra, um banco de dados que ocupava quase 6 GB, após os procedimentos listados, caiu para aproximadamente 1,7 GB.

Não preciso nem falar sobre o ganho de velocidade para a aplicação que utiliza o banco.

quarta-feira, 23 de janeiro de 2008

Bancos de dados livres e ferramentas comerciais.

O Fabio Telles Rodrigues do Savepoint, publicou um artigo muito bem escrito mostrando os principais motivos aos quais os produtores de softwares comerciais preferirem bancos de dados comerciais aos livres (no caso o PostgreSQL) . Leitura recomendada.

quinta-feira, 17 de janeiro de 2008

Restringindo seus usuários a um único login por vez.

Quantas vezes você precisou criar uma aplicação ou até mesmo um site onde o usuário só possa estar logado num único lugar por vez evitando o compartilhamento de usuário/senha?

Este tipo de situação pode ocorrer facilmente quando você está desenvolvendo uma aplicação.

Após este tipo de dificuldade ter aparecido, resolvi criar uma classe em PHP para resolver este problema.

Nesta classe, considerei as seguintes hipóteses:
  1. O usuário efetua o login e fecha o navegador sem efetuar o logout.
  2. O usuário efetua o login em uma máquina e repassa seus dados de conexão para terceiros que o utilizam no momento em que ele está logado e usando o sistema.
  3. Evitar roubo de sessão.
As respostas a cada uma dessas hipóteses, foram dadas da seguinte forma:
  • Quando o usuário efetuar um novo login, este irá desconectar todas as sessões existentes (ítens 1 e 2 acima). Afinal uma pessoa não pode estar em dois lugares ao mesmo tempo.
  • Criar um token de sessão que possa ser verificado com base em alguns dados fixos (por exemplo o id de usuário no sistema ou o seu nome), dinâmicos (id de sessão, endereço ip) e variáveis (como a senha do usuário).
  • Geração do id de sessão de tempos em tempos.
  • Duração da sessão com tempo fixo.
  • Garbage collection para as sessões.
Tendo isto tudo em mente, arquitetei a solução baseada em banco de dados para armazenar todos os dados referentes ao gerenciamento das sessões.

E, para um reaproveitamento de código e interdependência de banco de dados, utilizei o AdoDB. Assim, a mesma classe pode ser utilizada tanto com MySQL quanto PostgreSQL ou qualquer outro banco suportado pela AdoDB.

Após isto tudo, codifiquei minha classe. Em cada página instanciei-a e chamo apenas um método que faz todas as verificações. Caso uma delas não seja satisfeita, o usuário pode ser redirecionado para uma página de login, por exemplo, indicando o motivo pelo qual o login está sendo requisitado.

Em sua aplicação, como você tem feito para controlar múltiplos logins de um mesmo usuário?

quarta-feira, 9 de janeiro de 2008

Cursores em PostgreSQL

Daniel Matte Freitas publicou em seu blog um artigo mostrando como utilizar cursores PostgreSQL juntamente com a linguagem C. Independente da linguagem utilizada, pode-se utilizar a teoria e aplicá-la juntamente com store procedures ou até mesmo outras linguagens.

Para quem conhece um pouco de PHP, o código em C será de fácil entendimento, uma vez que a sintaxe é muito parecida. Leitura recomendada.

sexta-feira, 4 de janeiro de 2008

Tutoriais sobre pl/pgsql.

O Ivo Nascimento disponibilizou em seu blog, o início de uma série de tutoriais para quem deseja aprender pl/pgsql. Sua intenção é lançar dois artigos por semana. Os artigos podem ser lidos aqui e aqui. Boa leitura a todos.