Carregando...

Categoria: Banco de Dados

Fazendo FOREIGN KEYS, fazendo JOINs e árvores no CouchDB

O jeito mais completo de se fazer o equivalente a JOINs no CouchDB é usando uma técnica chamada “view collation”. Basicamente consiste em você criar uma view que faça o “emit” da chave da referência na chave. O exemplo abaixo precisa ser melhorado. Crie os seguintes 3 documentos: Crie uma view/índice com o seguinte: E agora, quando você for visualizar a view, use include_docs=true: O segredo está em enviar um objeto com “_id”: “id_do_objeto” no campo VALUE da chamada de Continuação…

Replicando e Escalando o PostgreSQL

Ferramentas de replicação: Bucardo Londiste PostgreSQL Logical Replication Streaming Replication Log Shipping PgLogical Slony I Slony II PostgresBDR – 2nd Quadrant PgShard Referências Wiki do PostgreSQLhttps://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling Cheatsheet de replicação no PostgreSQL (desatualizado)https://thebuild.com/blog/2018/01/02/a-replication-cheat-sheat/

Descobrindo tamanho de tabelas e índices no PostgreSQL

Referências Listando tamanho de tabelas e indiceshttps://dataedo.com/kb/query/postgresql/list-of-tables-by-the-size-of-data-and-indexes Documentação do pg_indexeshttps://www.postgresql.org/docs/current/view-pg-indexes.html Descobrindo espaço consumido – PostgreSQL Tutorialhttps://www.postgresqltutorial.com/postgresql-database-indexes-table-size/

Onde o PostgreSQL armazena as senhas dos usuários?

Ao abrir uma conexão com o PostgreSQL, geralmente você informará uma senha para se autenticar e obter acesso ao banco. Mas onde essas senhas ficam salvas? Elas são salvas de forma segura? Depende! Essas senhas são salvas na tabela pg_authid do schema pg_catalog. Essa tabela só é acessível se você estiver logado com um usuário SUPERUSER. Apenas o hash das senhas é salvo. O hash é calculado pelos algoritmos MD5 (sem sal) ou Scram-SHA-256. É sabido que o MD5 sem Continuação…

VIEWS no PostgreSQL

As VIEWs são basicamente uma forma de armazenar um SELECT dentro do banco de dados, dando a ele um nome e permitindo que ele seja acessado e consultado como se fosse uma tabela a partir do seu nome. Imagine que temos a seguinte tabela: E inserimos nela vários dados: Queremos criar uma VIEW em que tenhamos apenas partition = 2 Assim podemos chamar teste_2 como se fosse uma tabela Ao darmos EXPLAIN ANALYZE nessa consulta, percebemos que o índice é Continuação…

Hikari Connection Pool e por que você DEVE usá-lo

É a melhor biblioteca para fazer connection pools de drivers de banco de dados que usam o JDBC. ATENÇÃO! Se estiver usando PgPool ou PgBouncer entre seu software e o PostgreSQL, você não precisará do Hikari 😛 Pra que serve um Connection Pool? Se você precisa ter performance e estabilidade ao acessar o banco de dados em um software, você precisa de uma biblioteca de connection pool além da sua biblioteca de driver de conexão sql. Por quê? O padrão Continuação…

Criando funções de agregação (aggregation functions) customizadas no PostgreSQL

As funções de agregação padrão do PostgreSQL não são suficientes para resolver seu problema? Você pode criar a sua própria! Referências Artigo da Cybertec https://www.cybertec-postgresql.com/en/writing-your-own-aggregation-functions/ Documentação Oficial do PostgreSQL https://www.postgresql.org/docs/current/xaggr.html Passando mais de um parâmetro em uma aggregation functionhttps://stackoverflow.com/a/46412594/2789895

Cursor no PostgreSQL

Ao fazer um SELECT no PostgreSQL, você recebe sempre uma lista estática de linhas com suas respectivas colunas. Mas e se você precisasse fazer algum tipo de processamento linha-a-linha de forma eficiente? Se você precisasse percorrer cada linha de um retorno de um SELECT e executar uma função e ir atualizando uma variável dentro de uma stored procedure? (Em outras palavras, como é que podemos fazer um loop de for dentro do PostgreSQL?) O CURSOR te permite fazer isso! Imagine Continuação…