SQL Proficiente
SQL Proficiente
Recursos de manipula¸c˜ao de dados
Leonardo Cezar
DATAPREV - PostgreSQL Brasil
31 de maio de 2010
Leonardo Cezar SQL Proficiente
SQL Proficiente
Introdu¸c˜ao
Conte´udo
1 Introdu¸c˜ao
Objetivo
2 Padr˜ao SQL
Defini¸c˜ao
Organiza¸c˜ao do SQL:2008
Conformidade
3 Recursos do PostgreSQL
Gerenciamento de Dados Externos
Common Table Expression (CTEs)
Window Functions
Full Text Search
Mais recursos
Leonardo Cezar SQL Proficiente
SQL Proficiente
Introdu¸c˜ao
Objetivo
Objetivo
• Conhecer alguns recursos da linguagem para manipula¸c˜ao de
dados e otimizar o acesso a esses dados atrav´es do padr˜ao
ISO/IEC 9075 e das extens˜oes do PostgreSQL
Leonardo Cezar SQL Proficiente
SQL Proficiente
Introdu¸c˜ao
Objetivo
Desafios
• Reduzir a carga de processamento na aplica¸c˜ao
• Diminuir o tr´afego de rede
• Migrar algoritmos complexos para o servidor de banco de
dados
Leonardo Cezar SQL Proficiente
SQL Proficiente
Padr˜ao SQL
Conte´udo
1 Introdu¸c˜ao
Objetivo
2 Padr˜ao SQL
Defini¸c˜ao
Organiza¸c˜ao do SQL:2008
Conformidade
3 Recursos do PostgreSQL
Gerenciamento de Dados Externos
Common Table Expression (CTEs)
Window Functions
Full Text Search
Mais recursos
Leonardo Cezar SQL Proficiente
SQL Proficiente
Padr˜ao SQL
Defini¸c˜ao
Estrutura
• Criado nos anos 80 pelo ISO/IEC
• Comitˆe gestor JTC-1 (information technology)
• Especifica uma base para os dialetos SQL
• Define features opcionais e obrigat´orios
• Define packages de funcionalidades
• Dividido em 9 subse¸c˜oes
Leonardo Cezar SQL Proficiente
SQL Proficiente
Padr˜ao SQL
Organiza¸c˜ao do SQL:2008
Partes do ISO/IEC SQL:2008
• 9075-1: SQL/Framework (n´ucleo)
• Implementa o conceito sistem´atico da linguagem e
processadores de resultado
• 9075-2: SQL/Foundation (n´ucleo)
• Implementa a especifica¸c˜ao de manipuladores de dados
• 9075-3: SQL/CLI (externo - ODBC)
• Define camada de acesso externa (exceto java)
• 9075-4: SQL/PSM (externo - PL/pgPSM)
• Define a semˆantica de instru¸c˜oes de linguagens procedurais
Leonardo Cezar SQL Proficiente
SQL Proficiente
Padr˜ao SQL
Organiza¸c˜ao do SQL:2008
Partes do ISO/IEC SQL:2008
• 9075-9: SQL/MED (n´ucleo)
• Define extens˜oes para suportar gerenciamento de fonte de
dados externa atrav´es de datalink
• 9075-11: SQL/Schemata (n´ucleo)
• Implementa a cria¸c˜ao e acesso aos dados
• 9075-13: SQL/JRT (externo - PL/Java)
• Fun¸c˜oes e tipos utilizando Java
• 9075-14: SQL/XML (n´ucleo)
• Suporte XML
Leonardo Cezar SQL Proficiente
SQL Proficiente
Padr˜ao SQL
Organiza¸c˜ao do SQL:2008
E quanto as outras sequˆencias do ISO/IEC 9075?
• 9075-5: SQL/Bindings (n´ucleo)
• Migrado para 9075-2 em 2003
• 9075-6: SQL/Transaction (XA)
• Cancelado em 1999
• 9075-7: SQL/Temporal
• Cancelado
• 9075-10: SQL/OLB
• Especifica a s´ıntaxe para incorporar SQL na linguagem Java
atrav´es de amarra¸c˜oes.
• 9075-12: SQL/Replication (n´ucleo)
• Cancelado
Leonardo Cezar SQL Proficiente
SQL Proficiente
Padr˜ao SQL
Conformidade
Crit´erios de conformidade
• Conformidade m´ınima (Core SQL)
• SQL/Foundations e SQL/Schemata
• Conformidade em partes
• Implementar todas as features de uma parte (ex.: ISO/IEC
9075-9 SQL/MED)
• Conformidade com features
• Implementar a funcionalidade e suas subfuncionalidades em
sua totalidade
• Conformidade com Packages
• Agrupamento de features opcionais
• Implementar todas as features da Package
Leonardo Cezar SQL Proficiente
SQL Proficiente
Padr˜ao SQL
Conformidade
Consultando as features implementadas
A vis˜ao sql features
postgres=# d information_schema.sql_features
Table "information_schema.sql_features"
Column | Type | Modifiers
------------------+-----------------------------------+-----------
feature_id | information_schema.character_data |
feature_name | information_schema.character_data |
sub_feature_id | information_schema.character_data |
sub_feature_name | information_schema.character_data |
is_supported | information_schema.yes_or_no |
is_verified_by | information_schema.character_data |
comments | information_schema.character_data |
Leonardo Cezar SQL Proficiente
SQL Proficiente
Padr˜ao SQL
Conformidade
Consultando as Packages implementadas
A vis˜ao sql packages
postgres=# d information_schema.sql_packages
Table "information_schema.sql_packages"
Column | Type | Modifiers
----------------+-----------------------------------+-----------
feature_id | information_schema.character_data |
feature_name | information_schema.character_data |
is_supported | information_schema.yes_or_no |
is_verified_by | information_schema.character_data |
comments | information_schema.character_data |
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Conte´udo
1 Introdu¸c˜ao
Objetivo
2 Padr˜ao SQL
Defini¸c˜ao
Organiza¸c˜ao do SQL:2008
Conformidade
3 Recursos do PostgreSQL
Gerenciamento de Dados Externos
Common Table Expression (CTEs)
Window Functions
Full Text Search
Mais recursos
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Gerenciamento de Dados Externos
Dados Externos
• ISO/IEC 9075-9:2003 SQL/MED
• M´etodos de acess a dados armazenados em fontes externas
• SGBDs
• MS SQLServer
• MySQL
• Oracle
• Arquivos
• XML
• YAML
• CSV
• Outras instˆancias PostgreSQL
• Unificar acesso externo (DBI, dblink, PLProxy)
• Maior controle na administra¸c˜ao de links externos
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Gerenciamento de Dados Externos
Dados Externos
MED
postgres=# CREATE FOREIGN DATA
WRAPPER pgday VALIDATOR postgresql_fdw_validator;
postgres=# CREATE SERVER srvpgday FOREIGN DATA WRAPPER pgday
OPTIONS (host ’srv-pgday’, dbname ’pgday’, port ’5432’);
postgres=# CREATE USER MAPPING FOR lhcezar SERVER srvpgday
OPTIONS (user ’lhcezar’, password ’lhcezar’);
postgres=$ SELECT dblink_connect(’pgday_c’, ’srvpgday’);
postgres=$ SELECT * from dblink(’pgday_c’, ’SELECT * FROM pgday’) AS
(id int, palestra varchar);
id | palestra
----+-----------------
1 | SQL Proficiente
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Common Table Expression (CTEs)
WITH RECURSIVE
• ISO/IEC 9075-2:2003
• Permite reaproveitar express˜oes pr´eviamente definidas em uma
mesma instru¸c˜ao
• Semelhante a utiliza¸c˜ao de uma vis˜ao
• Permite gerar chamadas recursivas
• Utilizado para percorrer uma lista finita de valores em uma
express˜ao
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Common Table Expression (CTEs)
WITH RECURSIVE - s´erie de Fibonacci
WITH RECURSIVE t ( x , y ) AS (
VALUES(0 ,1)
UNION ALL
SELECT GREATEST( x , y ) , x + y AS a FROM t
WHERE y < 5
)
SELECT a AS f i b o n a c c i FROM t ;
+-----------+
| fibonacci |
+-----------+
| 0 |
| 1 |
| 1 |
| 2 |
| 3 |
+-----------+
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Common Table Expression (CTEs)
WITH RECURSIVE - sequˆencias vazias
postgres=# SELECT id, descricao FROM produtos;
+----+-----------+
| id | descricao |
+----+-----------+
| 1 | Televis~ao |
| 3 | Blue Ray |
| 4 | DVD |
| 10 | Bicileta |
+----+-----------+
(4 rows)
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Common Table Expression (CTEs)
WITH RECURSIVE - sequˆencias vazias
WITH RECURSIVE cte ( n ) AS
(
SELECT p r o d u t o s p a i . i d + 1
FROM produtos p r o d u t o s p a i
WHERE NOT EXISTS
(SELECT NULL
FROM produtos p r o d u t o s f i l h o
WHERE p r o d u t o s f i l h o . i d = p r o d u t o s p a i . i d +1)
AND p r o d u t o s p a i . i d < (SELECT MAX( i d ) FROM produtos )
UNION ALL
SELECT cte . n +1
FROM cte
WHERE NOT EXISTS
(SELECT NULL
FROM produtos r
WHERE r . i d = cte . n + 1)
)
SELECT n AS v a z i a s FROM cte ;
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Common Table Expression (CTEs)
WITH RECURSIVE - sequˆencias vazias
postgres=# i ~/Apresenta¸c~oes/SQLProficiente/cte.sql
+--------+
| vazias |
+--------+
| 2 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+--------+
(6 rows)
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Window Functions
Window functions
• ISO/IEC 9075-2
• Efetivar c´alculos para determinado agrupamento de linhas
• N˜ao limita a sa´ıda das tuplas com opera¸c˜oes GROUP BY
• Utiliza a cl´ausula OVER e PARTITION BY (SQL ANSI)
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Window Functions
OVER — PARTITION BY
SELECT nspname AS esquema ,
relname AS tabela ,
r e l t u p l e s AS l i n h a s ,
−− windows frame c r i a d o para cada grupo de esquemas
SUM( r e l t u p l e s )
OVER (PARTITION BY nspname ) AS t o t a l l i n h a s
FROM p g c l a s s r
JOIN pg namespace n
ON r . relnamespace = n . oid
WHERE r e l k i n d = ’ r ’
AND nspname
NOT IN( ’ pg catalog ’ , ’ information schema ’ ) ;
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Window Functions
Total de registros por esquema
+---------+------------------+--------+--------------+
| esquema | tabela | linhas | total_linhas |
+---------+------------------+--------+--------------+
| ator | address | 603 | 2111 |
| ator | city | 600 | 2111 |
| ator | country | 109 | 2111 |
| ator | customer | 599 | 2111 |
| ator | actor | 200 | 2111 |
| filme | payment | 0 | 4587 |
| filme | inventory | 4581 | 4587 |
| filme | language | 6 | 4587 |
| public | rental | 16044 | 39575 |
| public | film_category | 1000 | 39575 |
| public | film | 1000 | 39575 |
| public | store | 2 | 39575 |Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Full Text Search
FTS
• Busca atrav´es de similaridade
• Classificar resultados pela relevˆancia
• Consulta baseada em dicion´arios
• Defini¸c˜ao de stop words
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Full Text Search
FTS - Exemplo de consulta
SELECT t i t l e , t s h e a d l i n e ( d e s c r i p t i o n ,
t o t s q u e r y ( ’ f a t e&i n d i a ’ ))
FROM f i l m
WHERE f u l l t e x t @@ t o t s q u e r y ( ’ f a t e&i n d i a ’ ) ;
+--------------------+---------------------------------------------------------
| title | ts_headline
+--------------------+---------------------------------------------------------
| ANTITRUST TOMATOES | <b>Fateful</b> Yarn of a Womanizer in Ancient <b>India</
| EASY GLADIATOR | <b>Fateful</b> Story of a Monkey Ancient <b>India</b>
| SLEUTH ORIENT | <b>Fateful</b> Character Study of a <b>India</b>
+--------------------+---------------------------------------------------------
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Mais recursos
Outras ´areas a se explorar
• Particionamento
• XML
• Procedimentos Armazenados (CREATE FUNCTION)
• Fun¸c˜oes anˆonimas
• Dom´ınios (CREATE DOMAIN)
• Tipo (CREATE TYPE [...])
• Agrega¸c˜ao (CREATE AGGREGATE [...])
• Replica¸c˜ao (Streaming/Hot Standby)
• Contrib
Leonardo Cezar SQL Proficiente
SQL Proficiente
Recursos do PostgreSQL
Mais recursos
• D´uvidas?
• Sugest˜oes?
• Cr´ıticas?
Leonardo Cezar SQL Proficiente

Sql proficiente

  • 1.
    SQL Proficiente SQL Proficiente Recursosde manipula¸c˜ao de dados Leonardo Cezar DATAPREV - PostgreSQL Brasil 31 de maio de 2010 Leonardo Cezar SQL Proficiente
  • 2.
    SQL Proficiente Introdu¸c˜ao Conte´udo 1 Introdu¸c˜ao Objetivo 2Padr˜ao SQL Defini¸c˜ao Organiza¸c˜ao do SQL:2008 Conformidade 3 Recursos do PostgreSQL Gerenciamento de Dados Externos Common Table Expression (CTEs) Window Functions Full Text Search Mais recursos Leonardo Cezar SQL Proficiente
  • 3.
    SQL Proficiente Introdu¸c˜ao Objetivo Objetivo • Conheceralguns recursos da linguagem para manipula¸c˜ao de dados e otimizar o acesso a esses dados atrav´es do padr˜ao ISO/IEC 9075 e das extens˜oes do PostgreSQL Leonardo Cezar SQL Proficiente
  • 4.
    SQL Proficiente Introdu¸c˜ao Objetivo Desafios • Reduzira carga de processamento na aplica¸c˜ao • Diminuir o tr´afego de rede • Migrar algoritmos complexos para o servidor de banco de dados Leonardo Cezar SQL Proficiente
  • 5.
    SQL Proficiente Padr˜ao SQL Conte´udo 1Introdu¸c˜ao Objetivo 2 Padr˜ao SQL Defini¸c˜ao Organiza¸c˜ao do SQL:2008 Conformidade 3 Recursos do PostgreSQL Gerenciamento de Dados Externos Common Table Expression (CTEs) Window Functions Full Text Search Mais recursos Leonardo Cezar SQL Proficiente
  • 6.
    SQL Proficiente Padr˜ao SQL Defini¸c˜ao Estrutura •Criado nos anos 80 pelo ISO/IEC • Comitˆe gestor JTC-1 (information technology) • Especifica uma base para os dialetos SQL • Define features opcionais e obrigat´orios • Define packages de funcionalidades • Dividido em 9 subse¸c˜oes Leonardo Cezar SQL Proficiente
  • 7.
    SQL Proficiente Padr˜ao SQL Organiza¸c˜aodo SQL:2008 Partes do ISO/IEC SQL:2008 • 9075-1: SQL/Framework (n´ucleo) • Implementa o conceito sistem´atico da linguagem e processadores de resultado • 9075-2: SQL/Foundation (n´ucleo) • Implementa a especifica¸c˜ao de manipuladores de dados • 9075-3: SQL/CLI (externo - ODBC) • Define camada de acesso externa (exceto java) • 9075-4: SQL/PSM (externo - PL/pgPSM) • Define a semˆantica de instru¸c˜oes de linguagens procedurais Leonardo Cezar SQL Proficiente
  • 8.
    SQL Proficiente Padr˜ao SQL Organiza¸c˜aodo SQL:2008 Partes do ISO/IEC SQL:2008 • 9075-9: SQL/MED (n´ucleo) • Define extens˜oes para suportar gerenciamento de fonte de dados externa atrav´es de datalink • 9075-11: SQL/Schemata (n´ucleo) • Implementa a cria¸c˜ao e acesso aos dados • 9075-13: SQL/JRT (externo - PL/Java) • Fun¸c˜oes e tipos utilizando Java • 9075-14: SQL/XML (n´ucleo) • Suporte XML Leonardo Cezar SQL Proficiente
  • 9.
    SQL Proficiente Padr˜ao SQL Organiza¸c˜aodo SQL:2008 E quanto as outras sequˆencias do ISO/IEC 9075? • 9075-5: SQL/Bindings (n´ucleo) • Migrado para 9075-2 em 2003 • 9075-6: SQL/Transaction (XA) • Cancelado em 1999 • 9075-7: SQL/Temporal • Cancelado • 9075-10: SQL/OLB • Especifica a s´ıntaxe para incorporar SQL na linguagem Java atrav´es de amarra¸c˜oes. • 9075-12: SQL/Replication (n´ucleo) • Cancelado Leonardo Cezar SQL Proficiente
  • 10.
    SQL Proficiente Padr˜ao SQL Conformidade Crit´eriosde conformidade • Conformidade m´ınima (Core SQL) • SQL/Foundations e SQL/Schemata • Conformidade em partes • Implementar todas as features de uma parte (ex.: ISO/IEC 9075-9 SQL/MED) • Conformidade com features • Implementar a funcionalidade e suas subfuncionalidades em sua totalidade • Conformidade com Packages • Agrupamento de features opcionais • Implementar todas as features da Package Leonardo Cezar SQL Proficiente
  • 11.
    SQL Proficiente Padr˜ao SQL Conformidade Consultandoas features implementadas A vis˜ao sql features postgres=# d information_schema.sql_features Table "information_schema.sql_features" Column | Type | Modifiers ------------------+-----------------------------------+----------- feature_id | information_schema.character_data | feature_name | information_schema.character_data | sub_feature_id | information_schema.character_data | sub_feature_name | information_schema.character_data | is_supported | information_schema.yes_or_no | is_verified_by | information_schema.character_data | comments | information_schema.character_data | Leonardo Cezar SQL Proficiente
  • 12.
    SQL Proficiente Padr˜ao SQL Conformidade Consultandoas Packages implementadas A vis˜ao sql packages postgres=# d information_schema.sql_packages Table "information_schema.sql_packages" Column | Type | Modifiers ----------------+-----------------------------------+----------- feature_id | information_schema.character_data | feature_name | information_schema.character_data | is_supported | information_schema.yes_or_no | is_verified_by | information_schema.character_data | comments | information_schema.character_data | Leonardo Cezar SQL Proficiente
  • 13.
    SQL Proficiente Recursos doPostgreSQL Conte´udo 1 Introdu¸c˜ao Objetivo 2 Padr˜ao SQL Defini¸c˜ao Organiza¸c˜ao do SQL:2008 Conformidade 3 Recursos do PostgreSQL Gerenciamento de Dados Externos Common Table Expression (CTEs) Window Functions Full Text Search Mais recursos Leonardo Cezar SQL Proficiente
  • 14.
    SQL Proficiente Recursos doPostgreSQL Gerenciamento de Dados Externos Dados Externos • ISO/IEC 9075-9:2003 SQL/MED • M´etodos de acess a dados armazenados em fontes externas • SGBDs • MS SQLServer • MySQL • Oracle • Arquivos • XML • YAML • CSV • Outras instˆancias PostgreSQL • Unificar acesso externo (DBI, dblink, PLProxy) • Maior controle na administra¸c˜ao de links externos Leonardo Cezar SQL Proficiente
  • 15.
    SQL Proficiente Recursos doPostgreSQL Gerenciamento de Dados Externos Dados Externos MED postgres=# CREATE FOREIGN DATA WRAPPER pgday VALIDATOR postgresql_fdw_validator; postgres=# CREATE SERVER srvpgday FOREIGN DATA WRAPPER pgday OPTIONS (host ’srv-pgday’, dbname ’pgday’, port ’5432’); postgres=# CREATE USER MAPPING FOR lhcezar SERVER srvpgday OPTIONS (user ’lhcezar’, password ’lhcezar’); postgres=$ SELECT dblink_connect(’pgday_c’, ’srvpgday’); postgres=$ SELECT * from dblink(’pgday_c’, ’SELECT * FROM pgday’) AS (id int, palestra varchar); id | palestra ----+----------------- 1 | SQL Proficiente Leonardo Cezar SQL Proficiente
  • 16.
    SQL Proficiente Recursos doPostgreSQL Common Table Expression (CTEs) WITH RECURSIVE • ISO/IEC 9075-2:2003 • Permite reaproveitar express˜oes pr´eviamente definidas em uma mesma instru¸c˜ao • Semelhante a utiliza¸c˜ao de uma vis˜ao • Permite gerar chamadas recursivas • Utilizado para percorrer uma lista finita de valores em uma express˜ao Leonardo Cezar SQL Proficiente
  • 17.
    SQL Proficiente Recursos doPostgreSQL Common Table Expression (CTEs) WITH RECURSIVE - s´erie de Fibonacci WITH RECURSIVE t ( x , y ) AS ( VALUES(0 ,1) UNION ALL SELECT GREATEST( x , y ) , x + y AS a FROM t WHERE y < 5 ) SELECT a AS f i b o n a c c i FROM t ; +-----------+ | fibonacci | +-----------+ | 0 | | 1 | | 1 | | 2 | | 3 | +-----------+ Leonardo Cezar SQL Proficiente
  • 18.
    SQL Proficiente Recursos doPostgreSQL Common Table Expression (CTEs) WITH RECURSIVE - sequˆencias vazias postgres=# SELECT id, descricao FROM produtos; +----+-----------+ | id | descricao | +----+-----------+ | 1 | Televis~ao | | 3 | Blue Ray | | 4 | DVD | | 10 | Bicileta | +----+-----------+ (4 rows) Leonardo Cezar SQL Proficiente
  • 19.
    SQL Proficiente Recursos doPostgreSQL Common Table Expression (CTEs) WITH RECURSIVE - sequˆencias vazias WITH RECURSIVE cte ( n ) AS ( SELECT p r o d u t o s p a i . i d + 1 FROM produtos p r o d u t o s p a i WHERE NOT EXISTS (SELECT NULL FROM produtos p r o d u t o s f i l h o WHERE p r o d u t o s f i l h o . i d = p r o d u t o s p a i . i d +1) AND p r o d u t o s p a i . i d < (SELECT MAX( i d ) FROM produtos ) UNION ALL SELECT cte . n +1 FROM cte WHERE NOT EXISTS (SELECT NULL FROM produtos r WHERE r . i d = cte . n + 1) ) SELECT n AS v a z i a s FROM cte ; Leonardo Cezar SQL Proficiente
  • 20.
    SQL Proficiente Recursos doPostgreSQL Common Table Expression (CTEs) WITH RECURSIVE - sequˆencias vazias postgres=# i ~/Apresenta¸c~oes/SQLProficiente/cte.sql +--------+ | vazias | +--------+ | 2 | | 5 | | 6 | | 7 | | 8 | | 9 | +--------+ (6 rows) Leonardo Cezar SQL Proficiente
  • 21.
    SQL Proficiente Recursos doPostgreSQL Window Functions Window functions • ISO/IEC 9075-2 • Efetivar c´alculos para determinado agrupamento de linhas • N˜ao limita a sa´ıda das tuplas com opera¸c˜oes GROUP BY • Utiliza a cl´ausula OVER e PARTITION BY (SQL ANSI) Leonardo Cezar SQL Proficiente
  • 22.
    SQL Proficiente Recursos doPostgreSQL Window Functions OVER — PARTITION BY SELECT nspname AS esquema , relname AS tabela , r e l t u p l e s AS l i n h a s , −− windows frame c r i a d o para cada grupo de esquemas SUM( r e l t u p l e s ) OVER (PARTITION BY nspname ) AS t o t a l l i n h a s FROM p g c l a s s r JOIN pg namespace n ON r . relnamespace = n . oid WHERE r e l k i n d = ’ r ’ AND nspname NOT IN( ’ pg catalog ’ , ’ information schema ’ ) ; Leonardo Cezar SQL Proficiente
  • 23.
    SQL Proficiente Recursos doPostgreSQL Window Functions Total de registros por esquema +---------+------------------+--------+--------------+ | esquema | tabela | linhas | total_linhas | +---------+------------------+--------+--------------+ | ator | address | 603 | 2111 | | ator | city | 600 | 2111 | | ator | country | 109 | 2111 | | ator | customer | 599 | 2111 | | ator | actor | 200 | 2111 | | filme | payment | 0 | 4587 | | filme | inventory | 4581 | 4587 | | filme | language | 6 | 4587 | | public | rental | 16044 | 39575 | | public | film_category | 1000 | 39575 | | public | film | 1000 | 39575 | | public | store | 2 | 39575 |Leonardo Cezar SQL Proficiente
  • 24.
    SQL Proficiente Recursos doPostgreSQL Full Text Search FTS • Busca atrav´es de similaridade • Classificar resultados pela relevˆancia • Consulta baseada em dicion´arios • Defini¸c˜ao de stop words Leonardo Cezar SQL Proficiente
  • 25.
    SQL Proficiente Recursos doPostgreSQL Full Text Search FTS - Exemplo de consulta SELECT t i t l e , t s h e a d l i n e ( d e s c r i p t i o n , t o t s q u e r y ( ’ f a t e&i n d i a ’ )) FROM f i l m WHERE f u l l t e x t @@ t o t s q u e r y ( ’ f a t e&i n d i a ’ ) ; +--------------------+--------------------------------------------------------- | title | ts_headline +--------------------+--------------------------------------------------------- | ANTITRUST TOMATOES | <b>Fateful</b> Yarn of a Womanizer in Ancient <b>India</ | EASY GLADIATOR | <b>Fateful</b> Story of a Monkey Ancient <b>India</b> | SLEUTH ORIENT | <b>Fateful</b> Character Study of a <b>India</b> +--------------------+--------------------------------------------------------- Leonardo Cezar SQL Proficiente
  • 26.
    SQL Proficiente Recursos doPostgreSQL Mais recursos Outras ´areas a se explorar • Particionamento • XML • Procedimentos Armazenados (CREATE FUNCTION) • Fun¸c˜oes anˆonimas • Dom´ınios (CREATE DOMAIN) • Tipo (CREATE TYPE [...]) • Agrega¸c˜ao (CREATE AGGREGATE [...]) • Replica¸c˜ao (Streaming/Hot Standby) • Contrib Leonardo Cezar SQL Proficiente
  • 27.
    SQL Proficiente Recursos doPostgreSQL Mais recursos • D´uvidas? • Sugest˜oes? • Cr´ıticas? Leonardo Cezar SQL Proficiente