Documents

Uso de Imagens No PostgreSQL

Description
Uso de imagens no PostgreSQL Olá pessoal. Depois de algum tempo inativa, estou assumindo a coluna PostgreSQL iMasters, antigamente comandada por Juliano S. Inácio, que por sinal representou muito bem a comunidade PostgreSql no tempo em que esteve a frente. Antes de iniciarmos o assunto que pretendo tratar hoje, quero explicar como será a organização dos meus artigos. O assunto principal, logicamente, será o PostgreSql, mas ocorrerão vezes em que trataremos junto alguns conceitos de banco de dado
Categories
Published
of 2
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Transcript
  Uso de imagens no PostgreSQL Olá pessoal. Depois de algum tempo inativa, estou assumindo a coluna PostgreSQL iMasters, antigamentecomandada por Juliano S. Inácio, que por sinal representou muito bem a comunidade PostgreSql no tempoem que esteve a frente.Antes de iniciarmos o assunto que pretendo tratar hoje, quero explicar como será a organização dos meusartigos. O assunto principal, logicamente, será o PostgreSql, mas ocorrerão vezes em que trataremos juntoalguns conceitos de banco de dados, que acredito que sejam essenciais para a melhor compreensão do que ecomo o PostgreSql trabalha. Também haverá vezes em que irei montar algumas pequenas aplicaçõesbaseadas em Java ou em PHP e que tenham como armazenamento de informações o PostgreSql. O porquede usar Java e PHP é o fato de possuir mais conhecimentos nestas linguagens do que em outras.Um assunto que sempre gera muita polêmica é o de armazenar imagens no banco de dados. Existem aspessoas que defendem que o melhor é armazenar a imagem em diretórios do sistema operacional e registrarno banco de dados o local em que está armazenada a imagem. Também existem aqueles que defendem que omelhor mesmo é armazenar a imagem dentro do banco de dados, sem necessidade do caminho da imagem.O ponto de visão que será apresentada por mim, com certeza terá muitas críticas, pois há muitasparticularidades em relação a isto. Para alguns é mais conveniente a primeira opção e para outros a segundaopção tende a melhor adequar-se.As imagens vem sendo alvo de vários estudos relacionados a sua captura dentro de um banco de dados. Porexemplo, encontrar num banco com 100.000 imagens aquelas que possuam um círculo vermelho, ouencontrar as que possuam alguma pessoa com o olho azul. Também vendo sendo muito estudado ospossíveis melhores algoritmos para se indexar imagens. Vantagens de se armazenar em banco as imagens:. Organização: as imagens ficam armazenadas dentro do banco, não ficam espalhadas por diretórios. . Excluindo um registro você exclui a imagem também, não precisando encontrar a imagem nos diretórios eexcluí-la manualmente. Essa vantagem é relativa, pois também se pode criar um trigger em C, pl/Python,pl/Perl ou outra linguagem que exclua a imagem ao deletar um registro. . O backup fica mais fácil de ser feito, não precisa ficar procurando nos diretórios as imagens para seremincluídas no backup. Muitos argumentam que imagens no banco tornam o backup gigantesco, mas dequalquer forma terão que ser feitas cópias das imagens. Dentro ou fora do banco, o backup ficará grande. . Rapidez: o desempenho é melhor com imagens dentro do banco. . Segurança: armazenar imagens nos diretórios do sistema operacional pode trazer insegurança einconsistências, principalmente se várias pessoas tenham acesso ao servidor. Com as imagens guardadas nobanco é mais fácil restringir a um determinado usuário o acesso às imagens. Vantagens de se armazenar em diretórios as imagens:. Em alguns casos que as imagens são poucas, é mais fácil trabalhar com elas fora do banco. . O vacuum pode tornar-se um pouco mais rápido. . Não são todas as linguagens que tem funções prontas para capturar e mostrar a imagem que está no bancode dados. Linguagens como PHP, por exemplo, você tem que extrair a imagem, jogar numa pasta temporáriae depois mostra-la.  Imagens no PostgreSql  No PostgreSql existem dois tipos usados para se armazenar imagens: o oid e o bytea. O tipo oid cria umobjeto, que é a imagem nesse caso, e coloca na tabela um identificador para tal objeto. Comumente éencontrado em sites pela internet o tipo lo (large object) para uso de imagens, mas na realidade é o mesmooid, apenas é criado um domínio (tipo derivado) com o seguinte comando:create domain lo as oid; *Vamos criar uma tabela em que há um campo para o nome da figura e outro para a figura propriamente dita:CREATE TABLE imagem( nome varchar(30) NOT NULL,figura lo,PRIMARY KEY (nome) )Para inserir a imagem utilizamos a função lo_import() para capturarmos a figura:INSERT INTO imagem (nome, figura) VALUES (‘figura1.jpg',lo_import(‘c:/figuras/figura.jpg')); Para extrair a figura, você terá que criar uma cópia desta figura em alguma pasta temporária utilizando afunção lo_export():SELECT lo_export(figura, ‘c:/temp/figura1.jpg') FROM imagem WHERE nome = ‘figura1.jpg';O tipo bytea é o tipo para armazenar cadeias binárias. A cadeia binária é uma seqüência de octetos (oubytes). As cadeias binárias se diferenciam das cadeias de caracteres por duas características: Em primeirolugar as cadeias binárias permitem o armazenamento de octetos com o valor zero, além de outros octetos não imprimíveis . Em segundo lugar, as operações nas cadeias binárias processam os bytes armazenados,enquanto o processo de codificação das cadeias de caracteres depende das configurações regionais.Dependendo do programa cliente do PostgreSQL utilizado, pode haver trabalho adicional a ser realizado emrelação aos escapes das cadeias de caracteres bytea . Por exemplo, pode ser necessário colocar escapes paraos caracteres de nova-linha e retorno-de-carro se a interface realizar a tradução automática destes caracteres.Do mesmo modo pode ser necessário duplicar as contrabarras se o analisador utilizado também trata acontrabarra como caractere de escape. Para o tipo bytea não pode-se usar as funções lo_import() elo_export().  
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks
SAVE OUR EARTH

We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

More details...

Sign Now!

We are very appreciated for your Prompt Action!

x