PostgreSQL Como Funciona Una Base De Datos Por Dentro

Transcription

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/997003957PostgreSQLComo funciona unaBase de Datospor dentroErnesto Quiñones Azcárateernesto@eqsoft.net

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/997003957Agenda1. Una corta introducción2. Una DBMS por dentro3. Almacenamiento y organización de los datos4. Los índices5. Como se procesa un Query6. Concurrencia : Transacciones y bloqueos

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039571. Una corta introducciónLas bases de datos como concepto nacen en los 1960. La primera vez que se uso el termino fue en un proyecto del ejercitonorteamericano en una fecha no determinada entre los 1950 y principios de los1960. Las bases de datos libres y las privativas tienen casi el mismo tiempo deexistencia (http://tinyurl.com/l5fern). Existen diversos tipos de bases de datos: Planas Relacionales Objeto-relaciones Orientadas a objetos XML Orientadas a data “sin forma”, ejemplo: La web Datos gráficos, espaciales, etc. .muchas otras por venir

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039571. Una corta introducción Actualmente se genera mas información de la que se puede almacenar (http://tinyurl.com/lwuvzd) La mayoría de esta data “no tiene forma”, son fotos, videos, web, etc. Sin embargo aún necesitamos guardar este tipo de datos: Y para ella existe este tipo de base de datos.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039571. Una corta introducciónPostgreSQL es una base de datos con unatrayectoria mucho mas antigua de la queaparenta, pionera en la implementación devarios nuevas características en lasDBMRS.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039572. Una DBMS por dentroPostgreSQL tiene una arquitectura que involucra muchos estilos, ensu nivel mas alto es un esquema clásico cliente-servidor, mientrasque el acceso a la data es un esquema en capas.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039572. Una DBMS por dentroEl Libpq es el responsable de manipular las comunicacionesentre la aplicación cliente y el postmaster (servicio delPostgreSQL en el servidor). El server esta compuesto por 2 grandes subsistemas, el“Postmaster” que es el responsable de aceptar lascomunicaciones con el cliente y autentificar y dar acceso. El“Postgre” se encarga de la administración de los querys ycomandos enviados por el cliente. PostgreSQL trabaja bajo elconcepto de “process per user”, eso significa un soloprocesos cliente por conexión. Tanto el Postmaster como elPostgre deben estar junto en el mismo servidor siempre. El Storage Manager es responsable de la administracióngeneral de almacenamiento de los datos, controla todos lostrabajos del back-end incluido la administración del buffer,archivos, bloqueos y control de la consistencia de lainformación.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039573. Almacenamiento y organización de datosLa data siempre se va a guardar en “disco” (esto puede no serliteralmente un HD).Esto genera un intenso trabajo de I/O, cuando leemos la data lasacamos del “disco” para pasarla a la RAM, cuando escribimos labajamos de la RAM al “disco”.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039573. Almacenamiento y Organización de los Datos

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039573. Almacenamiento y organización de datosLa data en cualquier DBMS se almacena en pequeños bloques dedisco llamadas “páginas”.Estás “páginas” se guardan en un disco en diferentes posicionesfísicas, mucha dispersión creará una baja performance en la dbms,en sistemas de almacenamiento como los HD (osea casi el 99%)esto es un gran problema.Disk headAfortunadamente ahora existenSoluciones basadas en Discos deEstado Solido que ayudan conEste g/wiki/Unidad de estado s%C3%B3lidoArm movementArm assemblyPlatters

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039573. Almacenamiento y organización de datosEl tamaño de una página en PostgreSQL puede ser tan pequeño como 8k (pordefecto) hasta un máximo de 32k y no se permite que un tupla pueda ser mas grandeque una página de tamaño.Cuando se necesita guardar data muy grande (un video por ejemplo) la data escomprimida y partida en pequeñas “filas” que se guardan en una tabla paralela, estoes transparente para el usuario orage-toast.html).Las páginas contienen “items” los cuales apuntan a tuplas o entradas de índicesjunto con metadata.Para el caso de PostgreSQL las operaciones de R/W primero se consulta al BufferManager (memoria RAM) si contiene la página.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039573. Almacenamiento y organización de datosPostgreSQL posee un solo “Storage Manager” (MySql tiene 5o más por ejemplo), este esta compuesto por varios módulosque proveen administración de las transacciones y acceso alos objetos de la base de datos.Los módulos se programaron bajo 3 lineamientos bienclaros: Manejar transacciones sin necesidad de escribir códigocomplejo de recuperación en caso de caídas.Mantener versiones históricas de la data bajo el concepto de“graba una vez, lee muchas veces”.Tomar las ventajas que ofrece el hardware especializadocomo multiprocesadores, memoria no volátil, etc.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039573. Almacenamiento y organización de datosLos módulos que componen el Storage Manager son:Transaction System Relational Storage Time Management Concurrency Control y Timestamp Management Record Acces PostgreSQL siempre esta añadiendo data, la data modificadao borrada realmente no se modifica o se borra, las páginasdonde ellas están almacenadas se marca como “no visible” yse inserta un nuevo registro completo con un clon de toda ladata (como se maneja esto en detalle se explica masadelante).Esto hace que la base de datos ocupe mucho espacio y afectael “tiempo de acceso” a la data.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039573. Almacenamiento y organización de datosEjemplode unVacuumFullExiste un “tiempo de acceso” para llegar a la data (sea read o write) quedepende de: Tiempo de búsqueda del OS en mover los brazos del disco duro. Tiempo de rotación de los discos para que el brazo encuentre la posiciónfísica donde esta la data. Tiempo de transferencia de R/W de la data del disco a la memoria.Hay que buscar que reducir este tiempo para que el acceso a la data seamas rápido.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039573. Almacenamiento y organización de datosEjemplode unLazyVacuumLa operación de Vacuum es importante porque nos ayuda a mejorar laperformance del acceso a la data y la optimización del uso de espacio endisco.El método del Lazy Vacuum es más usado que el Vacuum Full.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039574. Los índicesCada tipo de búsqueda tienen un tipo de índice adecuado paratrabajarla, básicamente un índice es un “archivo” donde estaparte de la data y estructura de una tabla con las “search key”de búsqueda.En simple como es un índice:Page 1Page 2Index FilekNk1 k2Page 3Page NData File

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039574. Los índicesLa forma clásica es buscar por extremos y medios (búsquedabinaria), pero esto hace que sea altamente costosa labúsqueda, entonces es preferible organizar los índices enestructuras mas eficientes como los árboles.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039574. Los índicesLa cantidad de elementos en un nodoes delimitado por una constantepredefinida, exactamente no debenhaber mas de 2 veces elementos quela constante.Los nuevos elementos son insertadosen el nodo que le corresponda segúnsu valor, en caso de que el nodo hayacopado su capacidad máxima deelementos entonces el nodo se divideen 2 partes iguales y se crea una“hoja” superior con los índicesapropiados.(ejemplo se inserta el elemento 47)

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039574. Los índicesPara borrar un elemento serealiza la búsqueda del mismo,al llegar al nodo que locontiene se bloquea.El nodo se trabaja en“memoria” sacando elelemento a borrar y sereescribe totalmente el nodo,ocasionalmente el nodo quedacon menos elementos lacantidad de la constantedefinida de elementosmáximos.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039574. Los índicesCaracterísticas de los índices:Según la estructura de ordenamiento del mismo: Tree-based (Btree, Rtree), hash-based, other (Tsearch2) Según el ordenamiento físico de la data Clustered vs. Unclustered Indexes Según la asociación con la data : primary vs. secondary indexes, manejo de duplicados Según la cantidad de columnas que incorpore en la “searchkey” Multi-part key “Composite Indexes”

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039574. Los índicesLa estructura de ordenamiento del índice nos dice que tipo deselección soporta, en el caso de PostgreSQL tenemos lossiguientes :B-tree ( , , , , y modificadores) Hash ( y sin soporte de NULL data) GiST ( , & , & , , , & , & , , @ , @, , &&; estosson operadores para datos geométricos) GIN ( @, @ , , &&; estos son operadores para datos tipoarray y para “Full Text Searching” dentro de documentos através de lexemas http://es.wikipedia.org/wiki/Lexema) Rtree fue descontinuado a favor de GiST.Las búsquedas Like e iLike solo usan B-tree si la búsqueda o el patrón en es fijo alinicio, osea lo usa si es Campo like 'pat%' pero no lo usa si es Campo like '%pat'.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039574. Los índicesLos índices “clusterizados” o “no clusterizados”.Un índice clusterizado es aquel donde la data esta ordenada ocercanamente ordenada físicamente con las entradas de ladata del índiceUna tabla solo puede estar clusterizada solo por un índice, nomás.Son altamente apreciados en búsquedas por rangos, pero sucosto de mantenimiento es alto debido al reordenamiento quesiempre tiene que hacerse a la data.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039574. Los índicesLos índices “clusterizados” o “no clusterizados”.UNCLUSTEREDCLUSTEREDData entriesData RecordsData entriesData Records

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryUna consulta simple:select firstnamefrom friendwhere age 33;¿Como hace la base de datospara interpretar esto?

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un Query

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryEsta parte es sencilla:“El cliente postgresql” secomunica con el servicio del“postmaster” para pasarleuna cadena de texto con elquery.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryAquí es donde empieza la acción

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryEl parser transforma el pequeño query en unaserie de instrucciones que la base de datos puedainterpretar, por eso es importante escribir querysinteligentes.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryLuego pasa por : Un identificador de reglas de que lo escrito sea sintácticamenteentendible, que los dígitos y los números sean reconocibles. Luego se descompone “palabra” a “palabra” el query para pasar ala estructura que le corresponde según el query, en este caso a laestructura de un “select”, esto se ve así:

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryEL Traffic Cop contiene al controlador principaldel proceso del PostgreSQL, además se encargade las comunicaciones entre el Parser,Optimizer, Executor y /commands functions.Los querys complejos pasan al Rewriter (select,insert, etc.), lo que no, se pasa al UtilityCommands, generalmente querys simples (alter,create,vacuum, etc.)

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryEl “planner” es el encargado de generar el “plande ejecución”, esto es estimar la mejor vía pararesolver el query, maneja mediante formulasmatemáticas avanzadas la forma de búsqueda dedatos y la forma de resolver las relaciones entretablas.Luego que el planner a calculado el costo detodas las posibles vías de obtener la data escogecual es el mejor y se lo pasa al “Executor”.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryMétodos de búsquedaSecuencialIndexada

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryMétodos para relacionar tablasNested loop joinConsume mas recursos dememoria pero la cantidadde búsquedas a realizar esmenor.http://en.wikipedia.org/wiki/Nested loop join

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryMétodos para relacionar tablasMerge joinRequiere que la data esteordenada para ubicar lasrelaciones, el costo estajustamente en mantener ladata ordenada.http://en.wikipedia.org/wiki/Merge join

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryMétodos para relacionar tablasHash joinAparentemente sería laforma mas rápida deacceder a data gracias a lacreación de tablasindexadas, pero limitada auna búsqueda de igualdad.http://en.wikipedia.org/wiki/Hash join

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un QueryEl “Executor” toma el plan de ejecución que el“planner” le entrega e inicia el procesamiento,ejecuta un “plan tree”.Este “plan tree” tiene varios nodos de ejecuciónque se van ejecutando uno a uno y de cada unode ellos se obtiene un set de datos (tuplas).Los nodos tienen subnodos y otros a su vezotros subnodos, tantos como sea necesario.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039575. Como se procesa un Query

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039576. Concurrencia : Transacciones y BloqueosEl control de concurrencia es el que asegura que muchosusuarios puedan acceder a la data al mismo tiempo.Sin embargo al mismo tiempo se producen muchasoperaciones de R/W, estas operaciones se conocen comotransacciones.Ninguna transacción debe ver el resultado de otrastransacciones inconclusas, si esto no fuera así estaríamosleyendo datos inconsistentes.Una transacción puede incluir dentro de si muchasoperaciones en la base de datos.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039576. Concurrencia : Transacciones y BloqueosLas transacciones deben cumplir el criterio ACID.C onsistency:la transacción solo termina si la dataes consistente.I solation: la transacción es independiente de otrastransacciones.A tomicity: todas las acciones en la transacción secumplen o no se cumple ninguna.D urability: cuando la transacción termina elresultado de la misma es perdurable.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039576. Concurrencia : Transacciones y BloqueosPostgreSQL implementa el modelo MVCC (Multiversion ConcurrencyControl) desde la 8.3. Bajo MVCC las transacciones ven una imagen de la data al momento deiniciarla (para ello la data se versiona con un timestamp), esto protege latransacción de inconsistencia de data cuando llegan 2 operaciones de R/W sobre la misma. En simple el MVCC nunca modifica ó elimina la data, nuevas filas deinformación de van añadiendo conforme se crea o actualiza la data y semarca la anterior como “no visible”, cuando se desea eliminar un datoigualmente se añade una fila de data y se marca como “no visible” almismo tiempo. La data nunca es “visible” por otros usuarios hasta que no sea“commiteada”. La principal ventaja es que las operaciones de R nunca bloquean a las deW, y viceversa, podemos obtener backups en caliente sin bloquear la db. Como desventaja: consumimos mas disco duro.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039576. Concurrencia : Transacciones y Bloqueos

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039576. Concurrencia : Transacciones y Bloqueos

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039576. Concurrencia : Transacciones y Bloqueos

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039576. Concurrencia : Transacciones y BloqueosCuando 2 transacciones trabajan sobre el mismo objeto y almenos uno de ellos incluye operaciones de escritura entoncesse produce un “conflicto”.Cuando 2 transacciones hacen exactamente lo mismo puedeque sean “serializadas” para optimizar el acceso a la data.Antes de que una transacción pueda ejecutar un R/W sobre unobjeto en la db debe obtener un “bloqueo”.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039576. Concurrencia : Transacciones y BloqueosEste bloqueo puede ser Compartido (Share) o Exclusivo(Exclusive), estos son administrador por un “Lock Manager”.Existen varios tipos de bloqueos :

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: (51)(1)-5645424/997244926/9970039576. Concurrencia : Transacciones y BloqueosSi un bloqueo toma mucho tiempo en ejecutarse entonces seproduce un Deadlock, el sistema lo muestra como un Timeout.Un bloqueo puede darse a una tupla, una página o una tablacompleta.Existe una tabla de locks, antes de ejecutar uno nuevo seconsulta esta tabla.

http://www.eqsoft.netCorreo: informes@eqsoft.netTeléfonos: : Alvaro Herrera, desarrollador del proyecto PostgreSQLpor las correcciones a este trabajo.Para leer más, todas las referenciasbibliográficas bajo las que se hizoestas diapositivas están aquí:http://tinyurl.com/y9who7mGracias por su tiempo.

2. Una DBMS por dentro El Libpq es el responsable de manipular las comunicaciones entre la aplicación cliente y el postmaster (servicio del PostgreSQL en el servidor). El server esta compuesto por 2 grandes subsistemas, el "Postmaster" que es el responsable de aceptar las