Carregando...

Categoria: PostgreSQL

Como o Hasura armazena as permissões de acesso das roles às tabelas?

Uma das partes mais importantes do Hasura é o controle de acesso que ele faz nas tabelas, e esse controle é feito usando o conceito de roles (papéis). Um usuário pode ter várias roles diferentes. O Hasura usa basicamente uma tabela para fazer esse controle, ela é a hdb_catalog.hdb_permission Um exemplo da tabela (extraida do Hasura v 1.3.3): table_schema [PK] name table_name [PK] name role_name [PK] text perm_type [PK] text perm_def jsonb comment text is_system_defined boolean public tenant admin insert 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…

Tuning PostgreSQL

WORK_MEM WORK_MEM é a quantidade máxima de memória RAM que o PostgreSQL dá as consultas para agilizar certas operações. Uma delas é o ORDER BY (caso você não tenha índices nas colunas desejadas). Ao aumentar o WORK_MEM, seus ORDER BYs podem ficar bem mais rápidos já que a ordenação dos dados será feita na memória RAM. Referências PostgreSQL Tuner, um programa em Perl que analisa seu Postgre e dá sugestões de melhoriashttps://github.com/jfcoz/postgresqltuner Tuning PostgreSQL – Wiki oficial do PostgreSQLhttps://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server Como Continuação…