Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Postgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por Dentro
"95
Agenda
1. Una corta introduccin 2. Una DBMS or dentro !. A"#acena#iento $ organizacin de "os datos %. &os 'ndices (. )o#o se rocesa un Quer$ *. )oncurrencia + ,ransacciones $ -"oqueos
7"anas 8e"aciona"es 9-1eto:re"aciones 9rientadas a o-1etos ;M& 9rientadas a data <sin for#a=> e1e# "o+ &a ?e Datos grficos> es acia"es> etc. ...#uc2as otras or 0enir
Actua"#ente se genera #as infor#acin de "a que se uede a"#acenar 4 2tt +55tin$ur".co#5"?u0zd6 &a #a$or'a de esta data <no tiene for#a=> son fotos> 0ideos> ?e-> etc. Sin e#-argo a@n necesita#os guardar este ti o de datos+
#ost$re%&' es (n* 0*se ,e ,*tos )on (n* tr*1e)tori* m()ho m*s *nti$(* ,e l* q(e *p*rent*2 pioner* en l* implement*)i/n ,e 3*rios n(e3*s )*r*)ter4sti)*s en l*s -+56%.
2. .n* -+5% por ,entro #ost$re%&' tiene (n* *rq(ite)t(r* q(e in3ol()r* m()hos estilos2 en s( ni3el m*s *lto es (n esq(em* )l7si)o )liente-ser3i,or2 mientr*s q(e el *))eso * l* ,*t* es (n esq(em* en )*p*s.
8l 'i0pq es el respons*0le ,e m*nip(l*r l*s )om(ni)*)iones entre l* *pli)*)i/n )liente 1 el postm*ster (ser3i)io ,el #ost$re%&' en el ser3i,or). 8l ser3er est* )omp(esto por 2 $r*n,es s(0sistem*s2 el 9#ostm*ster: q(e es el respons*0le ,e *)ept*r l*s )om(ni)*)iones )on el )liente 1 *(tentifi)*r 1 ,*r *))eso. 8l 9#ost$re: se en)*r$* ,e l* *,ministr*)i/n ,e los q(er1s 1 )om*n,os en3i*,os por el )liente. #ost$re%&' tr*0*;* 0*;o el )on)epto ,e 9pro)ess per (ser:2 eso si$nifi)* (n solo pro)esos )liente por )one<i/n. T*nto el #ostm*ster )omo el #ost$re ,e0en est*r ;(nto en el mismo ser3i,or siempre. 8l %tor*$e 5*n*$er es respons*0le ,e l* *,ministr*)i/n $ener*l ,e *lm*)en*miento ,e los ,*tos2 )ontrol* to,os los tr*0*;os ,el 0*)=-en, in)l(i,o l* *,ministr*)i/n ,el 0(ffer2 *r)hi3os2 0loq(eos 1 )ontrol ,e l* )onsisten)i* ,e l* inform*)i/n.
". >lm*)en*miento 1 or$*ni?*)i/n ,e ,*tos '* ,*t* siempre se 3* * $(*r,*r en 9,is)o: (esto p(e,e no ser liter*lmente (n @-). 8sto $ener* (n intenso tr*0*;o ,e A/B2 )(*n,o leemos l* ,*t* l* s*)*mos ,el 9,is)o: p*r* p*s*rl* * l* 6>52 )(*n,o es)ri0imos l* 0*;*mos ,e l* 6>5 *l 9,is)o:.
". >lm*)en*miento 1 or$*ni?*)i/n ,e ,*tos '* ,*t* en )(*lq(ier -+5% se *lm*)en* en peq(eCos 0loq(es ,e ,is)o ll*m*,*s 9p7$in*s:. 8st7s 9p7$in*s: se $(*r,*n en (n ,is)o en ,iferentes posi)iones f4si)*s2 m()h* ,ispersi/n )re*r7 (n* 0*;* perform*n)e en l* ,0ms2 en sistem*s ,e *lm*)en*miento )omo los @- (ose* )*si el 99D) esto es (n $r*n pro0lem*. >fort(n*,*mente *hor* e<isten %ol()iones 0*s*,*s en -is)os ,e 8st*,o %oli,o q(e *1(,*n )on 8ste pro0lem*.
http://es.wi=ipe,i*.or$/wi=i/.ni,*,E,eEest*,oEsDC"D+"li,o
Disk head
Arm movement
Platters
Arm assembly
". >lm*)en*miento 1 or$*ni?*)i/n ,e ,*tos 7ostgreSQ& osee un so"o <Storage Manager= 4M$Sq" tiene ( o #s or e1e# "o6> este esta co# uesto or 0arios #du"os que ro0een ad#inistracin de "as transacciones $ acceso a "os o-1etos de "a -ase de datos. &os #du"os se rogra#aron -a1o ! "inea#ientos -ien c"aros+
Mane1ar transacciones sin necesidad de escri-ir cdigo co# "e1o de recu eracin en caso de ca'das. Mantener 0ersiones 2istricas de "a data -a1o e" conce to de <gra-a una 0ez> "ee #uc2as 0eces=. ,o#ar "as 0enta1as que ofrece e" 2ard?are es ecia"izado co#o #u"ti rocesadores> #e#oria no 0o"ti"> etc.
". >lm*)en*miento 1 or$*ni?*)i/n ,e ,*tos &os #du"os que co# onen e" Storage Manager son+ ,ransaction S$ste# 8e"ationa" Storage ,i#e Manage#ent )oncurrenc$ )ontro" $ ,i#esta# Manage#ent 8ecord Acces
7ostgreSQ& sie# re esta aadiendo data> "a data #odificada o -orrada rea"#ente no se #odifica o se -orra> "as ginas donde e""as estn a"#acenadas se #arca co#o <no 0isi-"e= $ se inserta un nue0o registro co# "eto con un c"on de toda "a data 4co#o se #ane1a esto en deta""e se e3 "ica #as ade"ante6. Esto 2ace que "a -ase de datos ocu e #uc2o es acio $ afecta e" <tie# o de acceso= a "a data.
E3iste un <tie# o de acceso= ara ""egar a "a data 4sea read o ?rite6 que de ende de+ ,ie# o de -@squeda de" 9S en #o0er "os -razos de" disco duro. ,ie# o de rotacin de "os discos ara que e" -razo encuentre "a osicin f'sica donde esta "a data. ,ie# o de transferencia de 85D de "a data de" disco a "a #e#oria. Ea$ que -uscar que reducir este tie# o ara que e" acceso a "a data sea #as r ido.
&a o eracin de Facuu# es i# ortante orque nos a$uda a #e1orar "a erfor#ance de" acceso a "a data $ "a o ti#izacin de" uso de es acio en disco. E" #Gtodo de" &az$ Facuu# es #s usado que e" Facuu# Hu"".
4. 'os 4n,i)es
)ada ti o de -@squeda tienen un ti o de 'ndice adecuado ara tra-a1ar"a> -sica#ente un 'ndice es un <arc2i0o= donde esta arte de "a data $ estructura de una ta-"a con "as <searc2 Ce$= de -@squeda. En si# "e co#o es un 'ndice+
k1 k2
kN
Index File
Page 1
Page 2
Page 3
Page N
Data File
4. 'os 4n,i)es
&a for#a c"sica es -uscar or e3tre#os $ #edios 4-@squeda -inaria6> ero esto 2ace que sea a"ta#ente costosa "a -@squeda> entonces es referi-"e organizar "os 'ndices en estructuras #as eficientes co#o "os r-o"es.
4. 'os 4n,i)es &a cantidad de e"e#entos en un nodo es de"i#itado or una constante redefinida> e3acta#ente no de-en 2a-er #as de 2 0eces e"e#entos que "a constante. &os nue0os e"e#entos son insertados en e" nodo que "e corres onda seg@n su 0a"or> en caso de que e" nodo 2a$a co ado su ca acidad #3i#a de e"e#entos entonces e" nodo se di0ide en 2 artes igua"es $ se crea una <2o1a= su erior con "os 'ndices a ro iados. 4e1e# "o se inserta e" e"e#ento %I6
4. 'os 4n,i)es Para borrar un elemento se realiza la bsqueda del mismo, al llegar al nodo que lo contiene se bloquea. El nodo se trabaja en memoria sacando el elemento a borrar y se reescribe totalmente el nodo, ocasionalmente el nodo queda con menos elementos la cantidad de la constante definida de elementos mximos.
4. 'os 4n,i)es
)aracter'sticas de "os 'ndices+ Seg@n "a estructura de ordena#iento de" #is#o+ ,ree:-ased 4Btree> 8tree6> 2as2:-ased> ot2er 4,searc226 Seg@n e" ordena#iento f'sico de "a data )"ustered 0s. Unc"ustered Jnde3es Seg@n "a asociacin con "a data + ri#ar$ 0s. secondar$ inde3es> #ane1o de du "icados Seg@n "a cantidad de co"u#nas que incor ore en "a <searc2 Ce$= Mu"ti: art Ce$ K <)o# osite Jnde3es=
4. 'os 4n,i)es
&a estructura de ordena#iento de" 'ndice nos dice que ti o de se"eccin so orta> en e" caso de 7ostgreSQ& tene#os "os siguientes + B:tree 4L> LK> K> MK> M $ #odificadores6 Eas2 4K $ sin so orte de NU&& data6 OiS, 4LL> PL> PM> MM> LLQ> PLQ> QPM> QMM> @M> L@> RK> PPS estos son o eradores ara datos geo#Gtricos6 OJN 4L@> @M> K> PPS estos son o eradores ara datos ti o arra$ $ ara <Hu"" ,e3t Searc2ing= dentro de docu#entos a tra0Gs de "e3e#as 2tt +55es.?iCi edia.org5?iCi5&e3e#a6
8tree fue descontinuado a fa0or de OiS,. &as -@squedas &iCe e i&iCe so"o usan B:tree si "a -@squeda o e" atrn en es fi1o a" inicio> osea "o usa si es C*mpo li=e Hp*tDH ero no "o usa si es C*mpo li=e HDp*tH.
4. 'os 4n,i)es
&os 'ndices <c"usterizados= o <no c"usterizados=. Un 'ndice c"usterizado es aque" donde "a data esta ordenada o cercana#ente ordenada f'sica#ente con "as entradas de "a data de" 'ndice Una ta-"a so"o uede estar c"usterizada so"o or un 'ndice> no #s. Son a"ta#ente a reciados en -@squedas or rangos> ero su costo de #anteni#iento es a"to de-ido a" reordena#iento que sie# re tiene que 2acerse a "a data.
4. 'os 4n,i)es
)&US,E8ED
UN)&US,E8ED
Data entries
Data entries
Data Records
Data Records
Una consu"ta si# "e+ se"ect firstna#e fro# friend ?2ere age K !!S T)o#o 2ace "a -ase de datos ara inter retar estoU
Esta arte es senci""a+ <E" c"iente ostgresq"= se co#unica con e" ser0icio de" < ost#aster= ara asar"e una cadena de te3to con e" quer$.
E" arser transfor#a e" equeo quer$ en una serie de instrucciones que "a -ase de datos ueda inter retar> or eso es i# ortante escri-ir quer$s inte"igentes.
5. Como se pro)es* (n &(er1 &uego asa or + .n i,entifi)*,or ,e re$l*s ,e q(e lo es)rito se* sint7)ti)*mente enten,i0le2 q(e los ,4$itos 1 los nImeros se*n re)ono)i0les. '(e$o se ,es)ompone 9p*l*0r*: * 9p*l*0r*: el q(er1 p*r* p*s*r * l* estr()t(r* q(e le )orrespon,e se$In el q(er12 en este )*so * l* estr()t(r* ,e (n 9sele)t:2 esto se 3e *s4:
E& ,raffic )o contiene a" contro"ador rinci a" de" roceso de" 7ostgreSQ&> ade#s se encarga de "as co#unicaciones entre e" 7arser> 9 ti#izer> E3ecutor $ 5co##ands functions. &os quer$s co# "e1os asan a" 8e?riter 4se"ect> insert> etc.6> "o que no> se asa a" Uti"it$ )o##ands> genera"#ente quer$s si# "es 4a"ter> create>0acuu#> etc.6
E" < "anner= es e" encargado de generar e" < "an de e1ecucin=> esto es esti#ar "a #e1or 0'a ara reso"0er e" quer$> #ane1a #ediante for#u"as #ate#ticas a0anzadas "a for#a de -@squeda de datos $ "a for#a de reso"0er "as re"aciones entre ta-"as. &uego que e" "anner a ca"cu"ado e" costo de todas "as osi-"es 0'as de o-tener "a data escoge cua" es e" #e1or $ se "o asa a" <E3ecutor=.
5to,os ,e 0Isq(e,*
%e)(en)i*l
An,e<*,*
E" <E3ecutor= to#a e" "an de e1ecucin que e" < "anner= "e entrega e inicia e" rocesa#iento> e1ecuta un < "an tree=. Este < "an tree= tiene 0arios nodos de e1ecucin que se 0an e1ecutando uno a uno $ de cada uno de e""os se o-tiene un set de datos 4tu "as6. &os nodos tienen su-nodos $ otros a su 0ez otros su-nodos> tantos co#o sea necesario.
E" contro" de concurrencia es e" que asegura que #uc2os usuarios uedan acceder a "a data a" #is#o tie# o. Sin e#-argo a" #is#o tie# o se roducen #uc2as o eraciones de 85D> estas o eraciones se conocen co#o transacciones. Ninguna transaccin de-e 0er e" resu"tado de otras transacciones inconc"usas> si esto no fuera as' estar'a#os "e$endo datos inconsistentes. Una transaccin uede inc"uir dentro de si #uc2as o eraciones en "a -ase de datos.
) onsistenc$+
es consistente. J so"ation+ "a transaccin es inde endiente de otras transacciones. A to#icit$+ todas "as acciones en "a transaccin se cu# "en o no se cu# "e ninguna. D ura-i"it$+ cuando "a transaccin ter#ina e" resu"tado de "a #is#a es erdura-"e.
)uando 2 transacciones tra-a1an so-re e" #is#o o-1eto $ a" #enos uno de e""os inc"u$e o eraciones de escritura entonces se roduce un <conf"icto=. )uando 2 transacciones 2acen e3acta#ente "o #is#o uede que sean <seria"izadas= ara o ti#izar e" acceso a "a data.
Antes de que una transaccin ueda e1ecutar un 85D so-re un o-1eto en "a d- de-e o-tener un <-"oqueo=.
Este -"oqueo uede ser )o# artido 4S2are6 o E3c"usi0o 4E3c"usi0e6> estos son ad#inistrador or un <&ocC Manager=. E3isten 0arios ti os de -"oqueos +
Si un -"oqueo to#a #uc2o tie# o en e1ecutarse entonces se roduce un Dead"ocC> e" siste#a "o #uestra co#o un ,i#eout. Un -"oqueo uede darse a una tu "a> una gina o una ta-"a co# "eta. E3iste una ta-"a de "ocCs> antes de e1ecutar uno nue0o se consu"ta esta ta-"a.
>$r*,e)imientos: >l3*ro @errer*2 ,es*rroll*,or ,el pro1e)to #ost$re%&' por l*s )orre))iones * este tr*0*;o.
#*r* leer m7s2 to,*s l*s referen)i*s 0i0lio$r7fi)*s 0*;o l*s q(e se hi?o est*s ,i*positi3*s est7n *q(4: http://tin1(rl.)om/19who m
Jr*)i*s por s( tiempo.