Ámbito del DBA / SQL. WTF Webcast Introducción

Documentos relacionados
Introducción a Postgresql

SQL Los fundamentos del lenguaje

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Bases de Datos: Structured Query Language (SQL)

PostgreSQL. Capacitación Nivel 1 Día 1

PROGRAMANDO BASES DE DATOS PostgreSQL INTRODUCCIÓN INTRODUCCIÓN A LAS BASES DE DATOS (L1)

A.1. Definiciones de datos en SQL

SQL (Structured Query Language)

Tema 33. El lenguaje SQL

Bases de Datos Relacionales

8 SQL SERVER 2008 RA-MA

ÍNDICE INTRODUCCIÓN...13

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Base de datos relacional

Bases de datos: Sistemas de bases de datos:

ADMINISTRACIÓN DE BASE DE DATOS

Temario. Índices simples Árboles B Hashing

Ernesto Quiñones A.

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

Bases de Datos 2. Teórico

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 2014-II SÍLABO

Unidad. Lenguaje SQL. (Structured Query Language)

PostgreSQL Una Alternativa de DBMS Open Source. Humberto Espinoza Gerente de Soporte

PROGRAMANDO UNA BASE DE DATOS PostgreSQL ADMINISTRACIÓN INTRODUCCIÓN (L32)

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Diseño Lógico. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Sistemas de Datos. Rendimiento de la Base de datos. Procesamiento de consultas y administración del rendimiento

Como manejador de base de datos elegimos utilizar Absolute Database, que es un

Introducción a las bases de datos.

ÍNDICE PRIMERA PARTE... 17

Introducción a los Sistemas de Gestión de Bases de Datos

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

ADMINISTRACION DE BASES DE DATOS EN ORACLE

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DDL. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

CAPACITACIÓN Y CONSULTORÍA

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

ST31_Querying Microsoft SQL Server

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

DESCRIPCIÓN ESPECÍFICA NÚCLEO: Núcleo Sector Comercio y Servicios.

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Referencia SQL en la versión de HUGOSQL White Paper por: HUGOSQL 2012

CONCEPTOS DE PROCESAMIENTO DE TRANSACCIONES

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

Nociones de performance

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

HOJA DE ASIGNATURA CON DESGLOSE DE UNIDADES TEMÁTICAS

Consultas con combinaciones

6- Combinación de tablas

EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES)

ESPECIALISTA EN BASE DE DATOS

Laboratorio Informix. Stored Procedures Triggers

Nuevas Características de la Versión 9.1 de PostgreSQL. Alcides Rivera Posso

Revista Electrónica Granma Ciencia. Vol.10, No.2, Mayo - Agosto de 2006 ISSN X

Temario Curso Bases de Datos


Crear BD en. Isis Bonet Cruz, PhD

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA

GRID GRIDS. ING. DE INFORMACION II Ing. Alfredo Ramos

[CASI v.0110] Pág. 1

SQL. Orígenes y Evolución

Seguridad de la Información Permisos. Sistemas de Bases de Datos II - ITS EMT - CETP

CURSO DE SQL SERVER 2005

1.1.- Objetivos de los sistemas de bases de datos Administración de los datos y administración de bases de datos Niveles de Arquitectura

- Bases de Datos - - Diseño Físico - Luis D. García

SQL. (...la guía básica de supervivencia de dmi) Universidad de los Andes Demián Gutierrez Enero

CARACTERISTICAS BASICAS DE LOS SMBD ORACLE

Descriptor del curso. Nombre del curso: Haciendo consultas en SQL Server Descripción:

Bases de Datos SQL - Ejemplos

Acceso a bases de datos MySQL con PHP

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

Este tipo de software se utiliza para manejar de forma clara y sencilla nuestras bases de datos.

Ernesto Quiñones A.

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

Funciones y TriggersIntroducción, Ejemplos

Motores MySQL. José Manuel Gómez. Departamento de Lenguajes y Sistemas Informáticos

Bases de datos relacionales y el modelo entidad-relación

2.5.- El lenguaje estándar SQL

Bases de Datos: Teoría General y Aplicaciones

Carrera: SCS Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

UNA MIRADA AL AFINAMIENTO DE POSTGRESQL

Bases de Datos. Sistemas de Gestión de Bases de Datos

INDICE Primera Parte. Panorámica general de SQL 2. Rápido repaso de SQL 3. SQL en Perspectiva

Diseño de bases de datos

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

EXPLOTACIÓN DE BASES DE DATOS CON ACCESS

Qué es una base de datos. Laboratorio de Informix. Sistemas de archivos convencionales. Base de datos relacionales

Laboratorio de Informix. Octubre 2004

Entendiendo y Optimizando MySQL

EL ENTORNO DE TRABAJO SQL ORACLE

Transcripción:

Ámbito del DBA / SQL WTF Webcast Introducción

Agenda DBA World :) Introducción a Modelos Introducción a la Arquitectura Cliente/Servidor. Breves comparaciones. Introducción a PostgreSQL. Arquitectura SQL en general. ANSI

DBA World!

El ámbito del DBA App Desarrollo DBA Middleware Database Arq. Datos o Desarrollo OS Sysadmin Hardware

Presencia del DBA en las capas Queries, transanctions Drivers, Connections, Caching App Middleware Schema, Config Database Filesystem, Kernel OS Storage, RAM, CPU, Network Hardware

Donde está el DBA? Es el encargado de mantener la base bien configurada y andando. Mejorar la performance del SBBDD. Administrar las conexiones, replicaciones. Asegurarse la disponibilidad de la base. Proponer mejoras en la Arq. De datos de acuerdo al motor utilizado. Medir y prevenir posibles bounds en el CPU o I/O del servidor. todo esto tratando de no desaparecer...

Inside the DBA :) Muchas escrituras? Solo lecturas? Cabe en memoria? Podemos tener un HW RAID? Podemos tener un SW RAID? Tenemos una cantidad inmensa de datos como para tener un SAN/NAS? Que tipo de HW RAID deberíamos tener de acuerdo a las escrituras?

Introducción a los modelos

Porqué Bases de datos? Los SGBD nacieron con el propósito de solventar los siguientes problemas de los antiguos sistemas: Redundancia e inconsistencia de Datos. Dificultad en el acceso concurrente. Aislamiento de datos. Problemas de integridad. Problemas de atomicidad. Anomalías en el acceso concurrente. Problemas de Seguridad.

Visión de Datos Nivel físico. Es como se guardan los datos en disco. Solo es importante conocerlos si es DBA o desarrollador del motor. Nivel Lógico. Es el nivel en el cual trabaja el DBA y el Arquitecto de datos. Nivel de vistas. Es el nivel en el cual trabaja el desarrollador de la aplicación final y el cual verá el usuario de la misma.

Independecia Física Físico Disposición de elementos del motor sobre los sistemas de almacenamiento. Ayuda a mejorar la performance. Lógico Disposición de los objetos dentro de la base. Ayuda a mejorar la comprensión. Característica que puede adicionar seguridad a nivel de gestor.

Modelos Lógicos Modelo Entidad Relación (DER) Modelo Orientado a Objetos. Modelo de datos semántico. Modelo de datos funcional. Indican el diseño lógico de datos, No indican datos reales o ya implementados i

Modelos lógicos basados en registros Ojeto-Relacional. Postgresql, Oracle Modelo relacional Mysql, DB2, SQLServer El modelo de red El modelo jerárquico Sistemas de Archivos (pueden ser considerados Bases de Datos). Orientado a Objetos DB4O

Arquitecturas Backend Cliente Cliente... Proceso Archivo/s Backend Servidor Servidor / Cluster de servidores Datos Derby BerkeleyDB Mysql Postgresql - Firebird Oracle DB2 - Greenplum

El punto de vista de Stonebraker Capacidades De búsqueda /soporte multiusuario Mayor velocidad SGBD relacional Sistemas De archivos Mysql Derby SGBD O-R SGBD OO Postgresql DB4O Complejidad de los datos y ampliabilidad Menor velocidad

Tipos de BBDD W O D Web Apps. Generalmente caben en memoria. Querys simples No siempre ACID. Pueden ser BASE OLTP Apps Generalmente más grandes que lo disponible en memoria. Mayor cantidad de escritura DatawareHouse Applications Dbs grandes (e/100gb -100TB) Consultas complejas

De acuerdo al Storage In-memory Single Storage (un disco o un RAID) SAN/NAS o Varios RAID Una sola base, distribuida en varios Storage. Varias bases de un cluster distribuidas en varios storages. Distribuidas Bases de datos distribuidas (varios servidores)

Principios de la integridad de datos Atomicidad Consistencia Aislamiento (Isolation) Durabilidad NOTA: PostgreSQL es ACID

Otros principios BASE (Basically Available, Soft state, Eventually consistent) Muy común para aplicaciones de juegos online.

Transacciones Colección de operaciones (sucesión de acciones) que forman una unidad lógica de trabajo, y que posiblemente actualice varios elementos de datos. Transacción 1 Commit Transacción 2 Commit Base de Datos Log de transacciones

Estados transaccionales Activa Parcialmente comprometida Fallida Abortada Comprometida (COMMIT) Rollback (No se aborta, se vuelve a un determinado punto o inicio de transacción)

Introducción a Postgresql

Historia 1977-1985 Michael Stonebraker Inicia postgresql como Ingres en la Universidad de Berkeley, California. 1986, comprado por Computer Associates. 1989, Liberada la primera versión como Postgres. 1994-95 dos estudiantes graduados de Berkeley Jolly Chen y Andrew Yu añaden SQL a Postgres y lo llaman Postgres95. 1996, (1000 colaboradores) Se decidió quitar el 95 al nombre para liberarse de la cronología y nace PostgreSQL. Ultima version al momento 8.4 y 8.5 en desarrollo. http://archives.postgresql.org/pgsql-advocacy/2004-12/msg00033.php

Su hermandad con Informix Stonebraker empezó Ingres (1977). Luego de varias empresas, desembarcó en Illustra. Después (1995) unos estudiantes tomaron POSTGRES y lo siguieron desarrollando, le pusieron Postgres95 y después se pasó a llamar PostgreSQL. En 1996 la empresa que hacía Informix compró Illustra y dejaron de lado la base de datos Illustra, y en cambio usaron los ingenieros y la tecnología para avanzar un poco más con Informix. En el 2001 la empresa Informix se dividió en dos y la parte que tenía que ver con la base de datos fue a parar a IBM.

Postgresql, descripción Es el SGBD Open Source mas potente del mercado. Posee casi 30 años de desarrollo. Licencia BSD de Berkeley. Esta en la vanguardia de la investigacion en al tecnología transaccional. Es ACID. Es segura. Tiene alternativas comerciales de muchísima calidad. Ej: EnterpriseDB, CyberTech(Alemania), etc. Tiene otras alernativas (forks) FastDB, Bizgres, etc.

Postgresql, descripción (2) Es un motor Objeto-Relacional [*]. Cliente/servidor Extensible Multiples conectores desde lenguajes de programación. Lenguaje procedimental propio (PL/pgsql) y extendido (PL/PERL, PL/PYTHONu, PL/JAVA, PL/RUBY, PL/R, C, C++...)

SQL:2003 El estandar SQL:2003 define las siguientes características que se peuden implementar en las bases Objeto relacionales: Rowtype Tipos definidos y rutinas por usuario. Poliformismo Herencia Tipos de referencia e identidad de objetos (el OID es uno de ellos) Tipos de colección (ARRAY, MULTISET, SET, LIST) Ampliación del SQL para hacerlo computacionalmente completo. Soporte para objetos de gran tamaño (BLOB y CLOB) Recursión.

Carácterísticas El modelo es de cliente/servidor (hoy en día el más común, pero no el único). Su lenguaje procedimental es muy similar al PL de Oracle, logrando una migración mas amena. Se adapta a los standares SQL:2003. Posee MVCC (Multi-Version Concurrency Control). Fue una de las pioneras (la primera fue InterBase) Posee WAL (Write Ahead LOG). Herencia de tablas. Puntos de recuperacion avanzados (savepoints, replicacion asincronica) Optimizador de consultas. Juegos de caracteres UNICODE e internacionalización.

Características (2) Tipos de datos accesorios: Números de presición arbitraria (creando numeros más complejos) Text de largo ilimitado. Figuras geometricas, con funciones asociadas. (Cube, contrib) IpV4 y 6. Mac Address. Arrays (Nuevas funciones en 8.4) Postgis (necesita un capítulo aparte). Citext (insensitive case text type - 8.4)

Características - Límites Maximo de la BD: ilimitado. De Tablas: 32 TB. De tupla: 1.6 TB. De campo: 1 GB Tuplas x tabla: ilimitado. Índices por tabla: ilimitado. Bloque: 8k

Características - Índices Pueden ser definidos por el usuario: Btree (por defecto y el más común), Hash, GIN (Generalized Inverted, ex RTree) y Gist (Generalized Index Storage). Basados en expresiones. Parciales Bitmaps. Gin es más lento para inserciones pero más rápido para búsqueda de texto (se usa para Full Text Search). Gist es bueno para datos complejos o raros (figuras geométricas, tsvector, etc)

Características - Avanzadas Restricciones Referential Integrity Constraints. Evita eliminaciones accidentales. Transacciones BEGIN END- SAVEPOINTS. Anidación de consultas avanzadas. Conexiones encriptadas vía SSL. Dominios, clustering, tablespaces, schemas y otros objetos de agrupación. TOAST (atributos comprimidos largos, transparente al usuario). Soporte de funciones de ventana y recursivas.

Como postgres promete ACID?

Soluciones para ACID [A]tomicidad (transacciones indivisibles) [C]onsistencia [I]solation,aislamiento (no se pueden ver entre transacciones) [D]urabilidad: éxito de una transaccion que perdura.

Solución para [A] Sentencias de BEGIN, END, ROLLBACK, COMMIT y SAVEPOINT.

Solución para [C] A partir de 7.*, gestor de integridad: not null check unique primary key fk -match full y partial

Solución para [I] MVCC Multi Versión Concurrency Control Impide el bloqueo de la tabla

Solución para [D] WAL (write Ahead Log) /var/pg_xlog Acelera los tiempos de commit y de insercion y update. En caso de caída, las transacciónes cmprometidas pero que no llegaron a la base, permanecen en la WAL.

SQL [Solo Quiero Licuado]

Álgebra Relacional Operaciones de conjunto aplicadas a relaciones: unión( ), intersección( ) y diferencia(-) Operaciones que eliminan una parte de las relaciones: selección(σ) y proyección(π) Operaciones que combinan las tuplas de dos relaciones: producto cartesiano(x), combinación natural (><) y theta Operación que cambia el nombre de los atributos ó relación: renombre(ρ)

Gráfico http://www.codeproject.com/kb/database/visual_sql_joins.aspx

Lenguajes DDL DML Control de transacciones Control de permisos

Sentencias básicas DML SELECT INSERT UPDATE TRUNCATE

SELECT SELECT [ ALL DISTINCT [ ON ( expression [,...] ) ] ] * expression [ AS output_name ] [,...] [ FROM from_item [,...] ] [ WHERE condition ] [ GROUP BY expression [,...] ] [ HAVING condition [,...] ] Fuentes Predicado [ { UNION INTERSECT EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC DESC USING operator ] [ NULLS { FIRST LAST } ] [,...] ] [ LIMIT { count ALL } ] [ OFFSET start ] [ FOR { UPDATE SHARE } [ OF table_name [,...] ] [ NOWAIT ] [...] ] Condición Agrupación Conjunción Ordenación Filtro Bloqueos where from_item can be one of: [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [,...] ) ] ] ( select ) [ AS ] alias [ ( column_alias [,...] ) ] function_name ( [ argument [,...] ] ) [ AS ] alias [ ( column_alias [,...] column_definition [,...] ) ] function_name ( [ argument [,...] ] ) AS ( column_definition [,...] ) from_item [ NATURAL ] join_type from_item [ ON join_condition USING ( join_column [,...] ) ]

INSERT INSERT INTO table [ ( column [,...] ) ] { DEFAULT VALUES VALUES ( { expression DEFAULT } [,...] ) [,...] query } [ RETURNING * output_expression [ AS output_name ] [,...] ]

UPDATE UPDATE [ ONLY ] table [ [ AS ] alias ] SET { column = { expression DEFAULT } ( column [,...] ) = ( { expression DEFAULT } [,...] ) } [,...] [ FROM fromlist ] [ WHERE condition WHERE CURRENT OF cursor_name ] [ RETURNING * output_expression [ AS output_name ] [,...] ]

DELETE - TRUNCATE DELETE FROM [ ONLY ] table [ [ AS ] alias ] [ USING usinglist ] [ WHERE condition WHERE CURRENT OF cursor_name ] [ RETURNING * output_expression [ AS output_name ] [,...] ] TRUNCATE [ TABLE ] name [,...] [ CASCADE RESTRICT ]

DELETE ejemplo (solo postgres)

Condicionales de SQL CASE COALESCE NULLIF GREATEST AND LEAST

Subquerys - SemiJoins Operadores: NOT IN, IN (list) or (query), EXIST, NOT EXIST, ANY, SOME, ALL

Ejemplos SELECT col_a, col_b FROM relacion_r; (Proyección) SELECT * FROM relacion_r WHERE col = 1; (Selección) SELECT * FROM relacion_r UNION SELECT * FROM relacion_s; (Union) SELECT * FROM relacion, relacion2; (Producto Cartesiano)- CROSS JOIN SELECT * FROM relacion_r INTERSECT SELECT * FROM relacion_s; (Interseccion) SELECT * FROM relacion_r EXCEPT SELECT * FROM relacion_s; (Exepción) SELECT * FROM relacion_r AS r INNER JOIN relacion_s AS s ON (r.c = s.c); (Equi-join) SELECT * from relacion_r NATURAL JOIN relacion_s; (sin repetir columnas del Equi-join)

Funciones Funciones que devuelven conjunto de datos generate_series(), etc. Agregación Sum, count, avg De Ventana rank() OVER (partition by campo) De resultado Now(), to_number(), etc...

Ejemplos con funciones Window Functions SELECT row_number() OVER (PARTITION BY cp), * FROM (SELECT * FROM anses2 LIMIT 10) s; SELECT * FROM (SELECT * FROM anses2 WINDOW w as (PARTITION BY cp) LIMIT 10) s; Agregación SELECT sum(col) as total FROM tabla; Resultado SELECT now(); SRF (retornan conjunto) SELECT * FROM generate_series(1,10);

Sentencias básicas DDL CREATE ALTER DROP

DDL create table varios( state char(2), name varchar(30), children integer, distance float, budget numeric(19,2), born date, checkin time, started timestamp default CURRENT_TIMESTAMP ); comment on table varios IS 'ejemplo de tabla con varios datos y un default'; CREATE TABLE statename ( code CHAR(2) PRIMARY KEY, name CHAR(30) ); COMMENT ON statename IS 'tabla de paises'; create table customer ( customer_id integer, name char(30), telephone char(20), state char(2) references statename ); COMMENT ON customer IS 'ingresar un state que este en statename'; create table employee ( employee_id integer primary key, name varchar(20), weight float ); create table llaves_compuestas( col1 integer, col2 integer, primary key(col1,col2) );

...DDL (cont) create table llaves_foraneas_compuestas( col3 integer, col4 integer, foreign key (col3, col4) references llaves_compuestas ); create table t_con_check( nombre varchar(20) CHECK (length(trim(nombre)) > 1), sexo char(1) CHECK(sexo IN ('M','F')), fecha_pasada date CHECK(fecha_pasada BETWEEN '1990-01-01' AND CURRENT_DATE), CHECK (upper(trim(nombre))!= 'EMA') --check de tabla );

ALTER ejemplos prueba=# alter table customer add primary key(customer_id); NOTICE: ALTER TABLE / ADD PRIMARY KEY creará el índice implícito «customer_pkey» para la tabla «customer» ALTER TABLE prueba=# create table coches( customer integer references customer, modelo varchar(4) ); CREATE TABLE prueba=# create index ix_btree_customer on customer USING btree(customer_id) TABLESPACE prueba; Prueba=# create index ix_h_cutomer on customer USING hash(customer_id) TABLESPACE prueba;

Vistas simples Con la vista se puede hacer una simulacion del sinonym de Oracle (Permite dar un alias a una tabla). De esta forma: CREATE VIEW tablaalias AS 'Select * from tabla'; -- No confundir con las vistas materializadas!!! De la misma forma podemos crear una funcion para que retorne un record set... CREATE OR REPLACE FUNCTION simula(integer) IMMUTABLE LANGUAGE SQL AS 'Select * from tabla where columna = $1';

Control transaccional BEGIN END SAVEPOINT COMMIT ROLLBACK PREPARE TRANSACTION ROLLBACK PREPARED

Ejemplo básico

Control permisos GRANT REVOKE

</DBA Webcast>