terça-feira, 18 de abril de 2006

O que é uma POOL ?

Tenho andado a fazer implementações de mecanismos de pooling em Java 2 Enterprise Edition.
Como me parece um conceito algo lato tentei a abordagem do dicionário. Alguns mostram que de facto a palavra é usada para muita coisa. A definição mais comum é "piscina".
A que mais me agradou foi o que descobri na wikipedia, onde pooling é apresentada como uma técnica para guardar qualquer coisa que já não é necessária em determinado sitio (a que se chama pool) com o objectivo de a usar quando necessário optimizando assim a utilização de recursos disponíveis.

Partindo para a computação, existem vários tipos de pools:
  • Thread Pool - Conjunto de threads livres que se vão adicionando a um fifo quando não necessárias e retirando quando se quiserem usar.
  • Memory Pool - Conjunto de blocos de memória, todos da mesma dimensão, que se alocam inicialmente e usam à medida que necessário garantindo que o tempo de alocação de memória é constante e a fragmentação minima.
  • Connection Pool - Conjunto de conexões livres a um recurso remoto que são usadas quando necessário. Evita consumir muito tempo a estabelecer conexões muitas vezes.
De todas as definições fico sem resolver o meu principal problema:
  • Todos os elementos numa pool são iguais ?
  • Dentro de uma pool podem existir elementos subconjuntos (ex: numa pool de conexões podem existir conjuntos de vários utilizadores diferentes sendo o pedido à pool efectuado por chave) ?