PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Configuração e uso do pgmemcache

Pré-carregar ou armazenar em cache a tabela no PostgreSQL é uma tarefa difícil, porque o PostgreSQL não oferece um único gerenciamento de memória em nível de sincronização grande. Todas as memórias são independentes. O armazenamento em cache é possível com ferramentas de terceiros como o memcached.

O pgmemcache é um conjunto de funções definidas pelo usuário do PostgreSQL (APIs) que fornecem uma interface para o memcached. pgmemcache, pré-requisitos recomenda ter o libmemcached, porém também é recomendado instalar o memcached junto com ele. Minha apresentação consiste em instalação/cache/monitoramento usando APIs pgmemcache. Como não sou o Desenvolvedor ou Hacker :), então minha forma de implementação é no método bem simples.

Pontos:
  • Armazena o valor em cache com base nos meios de chave/valor, recomenda-se manter a tabela com chave primária/chave única.
  • Sem redundância de dados – se o memcached ficar inativo ou ficar sem espaço, novos registros e atualizações serão perdidos.
  • Suporta todos os comandos do memcached (set/get(single/multi)/delete/replace/incr/stats)
  • Depois de manter os dados no memcached e se você remover a tabela do back-end, o memcached não gerará nenhum erro. É todo o seu gerenciamento como você o mantém.
  • Não há capacidade de iterar dados ou determinar quais chaves foram armazenadas.
  • Você nunca pode desativar um servidor memcached ou adicionar um novo ao pool enquanto as pessoas estão jogando ou conectadas.
  • Se o processo de atualização em segundo plano for interrompido por qualquer motivo, as atualizações não ocorrerão e há a possibilidade de o servidor memcached ficar cheio.
  • Todo back-end do PostgreSQL precisa se vincular à porta do memcached antes de acessar os dados.
  • O Memcached é executado na porta padrão 11211

Pré-requisitos:
  1. PostgreSQL 8.4. ou superior
  2. libevent
  3. memcached
  4. libmemcached
  5. pgmemcache
  6. Monitoring-Tools (monitoring-tools,damemtop,etc.,)

Instalação:
Passo 1. (libevent)

A API Libevent é importante na configuração do pgmemcache, prefiro ter bibliotecas como primeira etapa da instalação. Então vamos começar com a configuração da biblioteca libevent no local padrão.
Link para download do libevent:
http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
tar -xvf libevent-2.0.12-stable .tar.gz
cd libevent-2.0.12-stable
./configure
make
make install

Etapa 2 (memcached)

Instale o memcached ativando o arquivo libevent.
Link para download do memcached:
http://memcached.googlecode.com/files/memcached-1.4.6.tar.gz
cd /usr/local/src/memcached-1.4.6
------ em 32 bits
exportar LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
./configure --prefix=/opt /PostgreSQL/9.0/bin/ --with-libevent=/usr/lib
------em 64 bits
exportar LD_LIBRARY_PATH=/usr/lib64:/opt/PostgreSQL/9.0/ lib:$LD_LIBRARY_PATH
./configure --prefix=/opt/PostgreSQL/9.0/bin/ --with-libevent=/usr/lib64
make
make install

Etapa 3. (libmemcached)

O pgmemcache é construído sobre o libmemcached. O Libmemcached procura a localização do binário do memcache, portanto, defina o caminho para os binários do memcache antes de prosseguir.
export PATH=/opt/PostgreSQL/9.0/bin/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
Link para download:
http://launchpad.net/libmemcached/1.0/0.50/+download/libmemcached-0.50.tar.gz
cd libmemcached-0.50
./configure
make
faça a instalação

Etapa 4 (pgmemcache)

A API pgmemcache ajudará, interagindo com o memcached como armazenamento em cache/recuperação de dados.
Link para download:
http://pgfoundry.org/frs/download.php/3018/pgmemcache_2.0.6.tar.bz2
cd pgmemcache
PATH=/opt/PostgreSQL/ 9.0/bin:$PATH fazer USE_PGXS=1 instalar
ou
fazer
fazer instalar

A instalação criará o arquivo pgmemcache.sql com todas as APIs para interagir com o memcache no local de contribuição do PG. Para criar APIs pgmemcache, basta executar o arquivo pgmemcache.sql em todo o banco de dados.
psql -p PGPORT -d PGDATABASE -f /opt/PostgreSQL/9.0/share/postgresql/contrib/pgmemcache.sql

lista da API pgmemcache:

Observação: Ao executar o arquivo .sql, você pode enfrentar erros como “ISTFATAL:não foi possível carregar a biblioteca “/opt/PostgreSQL/9.0/lib/postgresql/pgmemcache.so”:libmemcached.so.8:não é possível abrir o arquivo de objeto compartilhado:Nenhum arquivo ou diretório". Significa que a instância PG não foi carregada com a biblioteca recém-criada. Resolução, defina o PATH e LD_LIBRARY_PATH e reinicie a instância para reconhecer as bibliotecas.
Ex:-
export PATH=/opt/PostgreSQL/9.0/bin/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
$pg_ctl -D $PGDATA reiniciar

Se você deseja carregar o pgmemcache como padrão para sua instância PG, edite o arquivo postgresql.conf e altere os seguintes parâmetros e reinicie o cluster.
shared_preload_libraries='pgmemcache'
custom_variable_classes='pgmemcache'

Configuração:
Passo 1.

Para armazenar dados em cache, primeiro você precisa inicializar a memória, uma vez que a memória é alocada, posteriormente o PG tem a responsabilidade de vincular e enviar os dados para o cache. Aqui, eu iniciei meu memcache no host local com 512 MB na porta padrão 11211. -d significa iniciar o daemon. Todo o meu exercício está no localhost.
$./memcached -d -m 512 -u postgres -l localhost -p 11211

Observação:para recuperar dados do cache, todo back-end do PostgreSQL deve primeiro vincular e recuperar os dados.

Passo 2.

Vincule a instância à porta do memcache em execução. Após a vinculação, verifique as estatísticas do memcached.

Etapa 3.

Agora, é hora de armazenar dados em cache no memcached, o Memcached usa chaves/valor para residir os dados em sua memória, portanto, certifique-se de que sua tabela tenha uma chave primária/única para que a recuperação seja fácil. Como mencionado, existem APIs muito boas para brincar de manter o valor e acessá-los, no meu exemplo, eu uso memcache_set() para manter o valor e memcache_get() para recuperar dados.

Uma vez que o valor é definido no memcached, agora é sua responsabilidade vincular seu backend ao memcached e com a ajuda das APIs do pgmemcache você pode acessar os dados. Cada backend do Postgres deve ser vinculado antes de acessar. Por favor, encontre o exemplo abaixo.

Obtendo dados do cache

Monitoramento

Se você é muito bom em linux, pode extrair o máximo de informações sobre a memória do memcached, no entanto, existem poucas ferramentas que acompanham o pacote de origem do memcached, como ferramentas de monitoramento, damemtop etc.,. Estou usando o utilitário de ferramentas de monitoramento para monitorar o memcache.
uso:-
exibição do localhost da ferramenta memcached
despejo do localhost da ferramenta memcached
estatísticas do localhost da ferramenta memcached | bytes grep

Exemplo:

Um pequeno esforço do meu lado para configurar o pgmemcache e entender o básico. Espero que tenha sido útil. Continue postando seus comentários ou sugestões que são muito apreciadas.