KEMBAR78
SQL Document | PDF | Sql | Computer Science
0% found this document useful (0 votes)
41 views77 pages

SQL Document

The document provides an overview of SQL including its history, core components like SELECT statements, JOINs, WHERE clauses and more. It discusses concepts like distributed databases, data fragmentation, replication and query distribution across regions. Window functions and their use in analytics are also covered. The future of SQL and challenges of joins across data shards are mentioned.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views77 pages

SQL Document

The document provides an overview of SQL including its history, core components like SELECT statements, JOINs, WHERE clauses and more. It discusses concepts like distributed databases, data fragmentation, replication and query distribution across regions. Window functions and their use in analytics are also covered. The future of SQL and challenges of joins across data shards are mentioned.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 77

Curso

Bagde
del curso Práctico de SQL

Israel Vázquez
Breve historia de SQL
Bases

Espacio para imagen


Modelo y álgebra
relacional de Codd
IBM

Fue creada en los años 70.


Originalmente llamada
SEQUEL. Espacio para imagen

● System/38 (1979)
● SQL/DS (1981)
● DB2 (1983)
Relational
company

Espacio para imagen


Creó el software
Oracle V2 en 1979
ANSI / ISO

1989, 1992, 1996,


1999, 2003, 2006,
2008, 2011 and 2016
Álgebra relacional
Proyección
Select
SELECT *;
SELECT field AS alias;

SELECT COUNT(id), SUM(quantity),


AVG(age);

SELECT MIN(date), MAX(quantity);


SELECT IF(500<1000, "YES", "NO");

SELECT OrderID, Quantity,


CASE
WHEN Quantity > 30 THEN "Over 30"
WHEN Quantity = 30 THEN "Equal 30"
ELSE "Under 30"
END AS QuantityText
Origen
From
SELECT *
FROM tabla_diaria;
SELECT *
FROM tabla_diaria AS td
JOIN tabla_mensual AS tm
ON td.pk = tm.fk;
SELECT *
FROM dblink('
dbname=somedb
port=5432 host=someserver
user=someuser
password=somepwd',
'SELECT gid, area, perimeter,
state, county,
tract, blockgroup,
block, the_geom
FROM massgis.cens2000blocks')
AS blockgroups
Productos cartesianos
Join
SELECT *
FROM tabla_diaria AS td
JOIN tabla_mensual AS tm
ON td.pk = tm.fk;
Left Join

A B
Right Join

A B
Exclusive Left Join

A B
Exclusive Right Join

A B
Full Outer Join

A B
Exclusive Full Outer Join

A B
Inner Join

A B
Selección
Where
SELECT *
FROM tabla_diaria
WHERE id = 1;

SELECT *
FROM tabla_diaria
WHERE cantidad > 10;

SELECT *
FROM tabla_diaria
WHERE cantidad < 100;
SELECT *
FROM tabla_diaria
WHERE cantidad > 10
AND cantidad < 100;

SELECT *
FROM tabla_diaria
WHERE cantidad BETWEEN 10
AND 100;
SELECT *
FROM users
WHERE name = "Israel"
AND (
lastname = "Vázquez"
OR
lastname = "López"
);

SELECT *
FROM users
WHERE name = "Israel"
AND lastname = "Vázquez"
OR lastname = "López";
SELECT *
FROM users
WHERE name LIKE "Is%";

SELECT *
FROM users
WHERE name LIKE "Is_ael";

SELECT *
FROM users
WHERE name NOT LIKE "Is_ael";
SELECT *
FROM users
WHERE name IS NULL;

SELECT *
FROM users
WHERE name IS NOT NULL;

SELECT *
FROM users
WHERE name IN ('Israel','Laura',
'Luis');
Ordenamiento
Order By
SELECT *
FROM tabla_diaria
ORDER BY fecha;

SELECT *
FROM tabla_diaria
ORDER BY fecha ASC;

SELECT *
FROM tabla_diaria
ORDER BY fecha DESC;
Índices

Excelentes para
búsquedas y Espacio para imagen
ordenamientos.

Cuidar para alta


transaccionalidad.
Agregación
Group By
SELECT *
FROM tabla_diaria
GROUP BY marca;

SELECT *
FROM tabla_diaria
GROUP BY marca, modelo;
Limitantes
Limit
SELECT *
FROM tabla_diaria
LIMIT 1500;

SELECT *
FROM tabla_diaria
OFFSET 1500
LIMIT 1500;
El primero
El segundo más alto
Seleccionar de un set
de opciones
En mis tiempos
Seleccionar por año
Double trouble
Selectores de rango
Eres lo máximo
Egoísta (Selfish)
Resolviendo
diferencias
Todas las uniones
Triangulando
Generando rangos
Regularizando
expresiones
Bases de datos
distribuidas
¿Qué es?

Es una colección
de múltiples bases Espacio para imagen
de datos separadas
físicamente que se
comunican mediante
una red informática.
Ventajas

● Desarrollo modular.
● Incrementa la Espacio para imagen
confiabilidad.
● Mejora el
rendimiento.
● Mayor disponibilidad.
● Rapidez de respuesta.
Desventajas

● Manejo de seguridad.
● Complejidad de Espacio para imagen

procesamiento.
● Integridad de datos
más compleja.
● Costo.
Homogéneas
y heterogéneas

● OS Espacio para imagen


● Sistema de base
de datos
● Modelos de datos
Arquitecturas

● Cliente - servidor. Espacio para imagen


● Par a par
(Peer 2 Peer).
● Multi manejador
de base de datos.
Estrategias
de diseño

Espacio para imagen


● Top down
● Bottom up
Almacenamiento
distribuido

Espacio para imagen


● Fragmentación
● Replicación
● Distribución
Fragmentación

Espacio para imagen


● Horizontal
● Vertical
● Mixta
Replicación

Espacio para imagen


● Completa
● Parcial
● Sin replicación
Distribución de
los datos

Espacio para imagen


● Centralizada
● Particionada
● Replicada
Queries distribuidos
Proveedores(P) P# Ciudad 10,000 Región A

Repuestos (R) R# Color 100,000 Región B

Prov-Rep(PR) P# R# 1,000,000 Región A

● Cada tupla tiene 25B (200b).


● El query será: obtener los números de proveedor
de Bogotá que tienen repuestos de color rojo.
● P >< PR >< R.
Proveedores(P) P# Ciudad 10,000 Región A

Repuestos (R) R# Color 100,000 Región B

Prov-Rep(PR) P# R# 1,000,000 Región A

● Suposiciones ● Suposiciones
de cardinalidad: de comunicación:
- Repuestos rojos: 10. - Tasa de transferencia:
- Número de pedidos 50,000 bits por segundo.
hechos por proveedores - Latencia de acceso: 0.1s.
de Bogotá: 100,000.
Proveedores(P) P# Ciudad 10,000 Región A

Repuestos (R) R# Color 100,000 Región B

Prov-Rep(PR) P# R# 1,000,000 Región A

● Retraso total en la comunicación = (retraso total de


acceso) + (volumen total de datos/tasa de transferencia).

● Retraso total en la comunicación = (número


de mensajes/10) + (número de bits/50,000).
1 Mover R a Región A (0.1) + 6.67 min
(100,000*200)/50,000=400s=6.67min

2 Mover P y PR a (0.2) + 1.12 h


Región B ((10,000+1,000,000)*200)/50,000 =
4,040s = 1.12h

3 Revisar repuestos Join de P y PR en A filtrar los 5.56 h


rojos para cada proveedores de Bogotá y hacer un join
proveedor de Bogotá con R en B

4 Por cada repuesto Filtrar R en B y por los 10 resultados 2s


rojo revisar si hay un hacer un join remoto con PR en A
proveedor en Bogotá

5 Mover los pedidos 0.1 + (100,000*200)/50,000 = 400s = 6.67 min


de Bogotá a B 6.67min

6 Mover los repuestos 0.1 + (10*200)/50,000 = 0.10s 0.10 s


rojos a A
Sharding
Problemas

● Joins entre shards. Espacio para imagen

● Baja elasticidad

● Reemplaza PK
Window Functions
¿Qué son?

Espacio para imagen


Realizan cálculos en
algunas tuplas que se
encuentran relacionadas
con la tupla actual.
¿Para qué sirven?

Evitan el uso de self Espacio para imagen


joins y reduce la
complejidad alrededor
de la analítica,
agregaciones y uso de
cursores.
Window Functions:
Particiones y
agregación
El futuro de SQL

You might also like