You are on page 1of 36

EstructurasenDisco.

Datosendices
Autor:AlfonsoPalomares
CorregidoPor:FlorenciaFederico

EstructurasendiscobyAlfonsoPalomaresislicensedundera
CreativeCommonsAtribucinNoComercialSinDerivadas3.0UnportedLicense.

Pgina136

9. Estructurasde unabasede datos en


Disco.
9.1.Introduccin
El Sistema Gestor de Base de Datos (SGBD o DBMS por sus siglas en ingls) es el
encargado de administrar la forma en que se almacenarn los datos enlas estructuras de
discodefinidasparadesplegarlosdatos.LasestructurasquedebealmacenarunSGBDson
referidasatablas,ndices,esquemas,basesdedatosyarchivosdeconfiguracin.
Es habitual que los gestores tomen una porcin del disco o discosdondesealmacenar la
informacin e internamente defina como organizar sus estructuras, haciendo un trabajo
similar a un sistemaoperativo.Esdecir,definiendocmosersuestructuradearchivosyla
formaenqueleeroescribirsusdatos.
Los medios de almacenamiento a usar, son aquellos que se dispongan,comofueron ensu
momento las cintas, luego los discos, las estructuras de redes de almacenamiento (SAN,
por Storage Area Network), discos de estado slido, entre otros formatos de
almacenamiento. Pero conceptualmente, siempre el SGBD es aquel que toma una porcin
delrecursoyloadministraSeacualfueredichomedio.

9.1.1.Nivelesdealmacenamiento
Los niveles de almacenamiento en un sistema computacional,refiere a losescalafones de
memoria que se encuentran en dicho esquema, los cuales comnmente se describen
como,memoriaCache,memoriaRAMymemoriadealmacenamientomasivo.

Primerniveldealmacenamiento
Cuanto ms cercano es el nivel de almacenamiento a la unidad central de proceso
(CPU Central Processing Unit), ms fcil y rpida es la comunicacin entre la
memoria y el o los procesadores. Partiendo de esta base, se gener la memoria
Cach, la cual est ms prxima al CPU, dando gran respuesta y velocidad al
procesamiento conrespecto a los datos ah alojados. Como principio,lasmemorias
ms prximas a la CPU, por sucosto,son las ms pequeas frente a aquellas que
sondeunnivelmayor,perosonlasdemsrpidoacceso.

Segundoniveldealmacenamiento
El segundo nivel de memoria es asignado a la memoria RAM (memoria de acceso
aleatorio o Random Access Memory en ingls) que cuenta con una mayor rea de

Pgina236

almacenamiento que el nivelprecedente,peroal noencontrarseintegradaalaunidad


de procesamiento, no puede mantener los mismos niveles de velocidad.
Habitualmente, tanto en el primer nivel de almacenamiento como en el segundo, se
cuenta con grandes velocidades de acceso, pero con la limitacin delespaciocomo
principallimitacin.

Tercerniveldealmacenamiento
En esta categora se incluyen todo medio de almacenamiento masivo, tales como,
DVDs, Blu Ray, discos rgidos, red de reas de almacenamiento (Storage Area
Network en ingls) entre otros. Este nivel de almacenamiento tiene la particularidad
de que la informacin almacenada no se utiliza directamente por parte de la unidad
de procesamiento, sino que debe ser trasladada (o copiada) a un nivel de
almacenamientosuperior.

Pgina336

9.2.Almacenandounabasededatos
Como definimos en el apartado anterior, es el SGBD quien determina la forma en que se
almacenan losdatos en eltercer nivel de almacenamiento. La gran mayoradegestoresde
bases dedatos,optanpordefinirunconjuntodearchivosparacadabasededatos,definidos
en el sistema de archivos del Sistema Operativo (pudiendo ser este sistema de archivos,
FAT,NTFS,ExtX,entodassusversiones,entreotros).
Una vezdefinidoelconjuntodearchivosautilizar,elSGBDdefinedentrodedichosarchivos,
diversas estructuras que definir el conjunto de esquemas, tablas, ndices y otras
estructuras necesarias. Sobre estos archivos se podr realizar ciertas operaciones, que
permitir operar con los datos. Adems, las estructuras internas del archivo se dispondrn
segn la organizacin que cree el SGBD. En secciones siguientes mostraremos algunas
formasenquelossistemasdisponenlosarchivos.

9.2.1.Operacionessobrelosarchivosdeunabasededatos
Dentro del conjunto de archivos que forman una basede datos, pudiendo ser un archivo o
ms, las operaciones que se aplican sobre estos archivos son las mismas. Las cuales se
pueden agrupar en dos grandes elementos, Lectura y Actualizacin. Todas lasacciones
derivadas de las instrucciones de SELECT (o seleccin) determinan una o ms lecturas
sobre las estructuras dela base de datos, mientras que las instruccionesdeltipoINSERT,
UPDATEyDELETErefierenalasinstruccionesdeactualizacindearchivosfsicos.
Cuanto se tarda en realizar las tareas antes mencionadas, esta ntimamente relacionado
con la velocidad de acceso al medio fsico, como tambin laformaenqueestnordenados
los archivos, permitiendo aplicar los filtros de las consultas de una manerams o menos
performante.
Desagregando las acciones de Lectura y Actualizacin podemos definir las siguientes
operacionesquedebenserdefcilcomprensinparaellector.

Abrir. Preparar el archivo para abrirlo. Setear buffers1 , movilizar los punteros, entre
otrastareas.
Cerrar.Liberarrecursos,limpialosbuffers,entreotrastareas.
Ir al inicio. Setear los punteros (o sealadores) al principio del archivo. Es decir,
definirelcontextodelarchivoensuprimerbloque.
Ir al siguiente. De la misma manera que en la operacin anterior se definan los
descriptores y punteros al inicio del archivo, aqu se realiza lo mismo, pero
refirindosealbloquesiguientemsprximoadondeseencuentraenesemomento.
Ir al anterior. En este caso se mueve elcontextoalbloqueanteriormsprximoal
actual.
Buscar. A diferencia de los dos ltimos casos, lo que se busca con esta operacin
espodermoverelcontextoaunbloquedeterminado.
Leer. Consiste en copiar la informacin que contiene el bloque apuntado desde el

unbufferesunaestructurareservadaenmemoriaparaunusodeterminado.
Pgina436

mediodealmacenamientomasivoalamemoriaprincipal(RAM).
Insertar. Consiste en agregar un bloque al final del archivo, enlazando el contexto
con el bloque que hasta ese momento era el ltimo, moviendo desde la memoria
principalelbloquedefinidoparaagregaralarchivo.
Modificar.Aplicacuandolosdatosdeunbloquedeterminadocambian.Porloquese
actualizasucontenido.
Eliminar. Elimina un bloque. Esto se produce enlazando los bloques anterior y
posterior al que se intenta eliminar, dejando al que se intenta eliminar fuera de la
cadena de bloques del archivo, por lo tantoinaccesible.Notodaslasbasesdedatos
limpian fsicamente los bloques que eliminan, dejando este trabajo al Sistema
Operativo.

9.2.2.Archivosnoordenados
Los archivos no ordenados, o aquellos que contienen registrosno ordenadosinternamente,
sonaquellosqueserntratadosenesteapartado.
Muchas veces, la forma deaccederaestosarchivos,esatravsdeunaestructuraexterna,
ms chica y ordenada, a modo de ndice, permitindonos el acceso ms rpido a los
registrosdelarchivo.

Insertandoregistros
Que los registros se encuentren desordenados o no ordenados en base a una lgicadada,
significa que todas las inserciones de registros se harn al final, sin realizar ningn tipo de
accinextra.
Es por esto, que en este tipo de archivos insertar registros es una accin muyrpida.Solo
hayquetomareldescriptoralfinaldelarchivoyagregarelnuevoregistro.

Figura1.Estructuradearchivonoordenadoyunnuevoregistro,queseenlazaralfinal.

Pgina536

Borrandoregistros
Para borrar un registro,primero hayque encontrarlo. Para esto, hay que recorrer elarchivo
desde el principio al final. Este tipo de bsqueda se llama Bsqueda lineal (En ingls
Sequential scan o linear search) Si se cuenta con una estructura a modo de ndice, se
puede utilizar algn otro algoritmo de bsqueda para recorrer esta estructura y luego
acceder al registro. Todos los registros en el disco, contienen una posicin que indica el
estadodelregistro,esdecir,siestborradoono.
Por lo que una vez localizado el registro, se marca este sector del registroyseactualizael
mismoeneldisco.
Nunca, en este proceso se borra fsicamente el registro, para poder darle velocidad al
proceso.
Para evitar el crecimiento desmedido de las estructuras, el Sistema Gestor de Base de
Datos, segn la configuracin que tenga, har mantenimiento de las estructuras y borrar
realmente losregistrosquefueronmarcadosoportunamente,reacomodandolasestructuras
dedisco,permitiendo,ahoras,liberarespacio.

Figura2.Bsquedadeunregistroyposteriormarcadoparaborrar.

Actualizandoregistros
En un archivo no ordenado, actualizar un registro es una operacin muycostosa. Se debe
recorrer el archivo, registro a registro,hastadarconaquel que queremosmodificaryqueno
est marcado como borrado. Una vez que damos con este registro, debemos copiarlo
ntegramente a memoria, reemplazar loscamposquequeramosyvolveragrabarelregistro
endisco.

Pgina636

Figura3.Actualizandodatos.

Lecturaderegistros
Para realizar una lectura ordenada de todos los registros, se debe hacer una copia en
memoria ordenada. Si el espacio a ocupar por todos los registros superan el espacio
disponible en memoria para realizar el orden, se utilizan porciones de disco para copiar
registrosyordenarlosdentrodeesteniveldealmacenamiento.

Figura4.Ordenamientodelosregistrosdeunarchivoparasuposteriormuestra.

9.2.3.Archivosordenados
Tenerarchivosordenadostieneciertasventajas yciertasdesventajas.Unarchivo,seordena
enbasealaclaveprimaria(eninglsPrimaryKey)definidaporelusuarioalcrearelobjeto.
Las ventajas salen a la vista en cuanto corresponde a las diferentes acciones sobre los
atributos que componen la clave, quines sern los que definan el ordenamiento. Mientras
que cuando se utilizan los otros atributos para acceder alos datoselordenamientono ser
aprovechado.

Bsquedaderegistros
Tener una clave definida para elconjuntoderegistroshacequesetengaunnicovalorpara
el conjunto de atributos, permitiendo saber que un solo registro responder a valor de la
clave. Esto permite utilizar mtodos de bsqueda, como por ejemplo el algoritmo de
Pgina736

bsquedabinaria(eninglsBinarysearch)entreotros,queveremosmsadelante.
Entonces, si buscamos por el atributo clave, podremos hacer bsquedas optimizadas,
como la bsqueda binaria. En caso contrario, cuando buscamos por atributos no claves,
realizaremosunabsquedalineal.
Cuando se hace una bsqueda lineal, en promedio se toma que el registro buscado estar
en la mitad de la tabla. Por lo que se generaliza en que una bsqueda lineal recorrer
usualmenteel50%delosregistrosquesetienen.
Si pensaramos enbloques de disco, podramosdecirqueteniendoBbloquesleeramosB/2
bloquesenlasbsquedaslineales.
Con respecto a la bsqueda binaria, se estima que la cantidad de posiciones a leer para
encontrarunregistroesdelLog2B,siendoBlacantidaddebloques.
Tomaremos los diferentes valores segn la cantidad de lecturas necesarias y los mtodos
utilizados
CantidaddeBloques

Bsq.Lineal(B/2)

Bsq.Binaria(Log2B)

1.000

500lecturas

10lecturas

100.000

50.000lecturas

17lecturas

10.000.000

5.000.000lecturas

24lecturas

Asimplevistaseobservacomounabsquedaessuperioraotra.
Detalledealgoritmos
BsquedaLineal

Bsquedabinaria

Datos de entrada

Datos de entrada

tab:tablaenelquesedesea

tab:tablaenelquesedesea

buscarelregistro

buscareldato

tam:tamaodelatabla

tam:tamaodelatabla.

reg:registroabuscar

reg:registroquesequierebuscar.

Variables

Variables

pos:posicinactualenelarreglo

centro:subndicecentraldel
intervalo
inf:lmiteinferiordelintervalo
sup:lmitesuperiordelintervalo

Algoritmo

Algoritmo

Pgina836

pos=0

inf=0

Mientraspos<tam:

sup=tam1

Sitab[pos]==regdevolver
verdaderoy/opos,delocontrario:

Mientrasinf<=sup:

pos=pos+1

centro=((supinf)/2)+inf

Fin(Mientras)

Sitab[centro]==regdevolver

Devolverfalso,

verdaderoy/opos,delocontrario:
Sireg<tab[centro]entonces:
sup=centro1
Encasocontrario:
inf=centro+1
Fin(Mientras)
DevolverFalso

Insertandoregistros
Agregar registros en un archivo ordenado no es para nada una tarea simple. Primero, se
debe encontrar los registros entre los que se debe insertar la nueva estructura, es decir,
detectar cual registro ser en que quede antes y cual ser el posterior al nuevo
registro.Cmo estn ordenados, el proceso de bsqueda es algo que consume pocos
recursos.
Posteriormente, se debedesplazarlosregistrosquequedarnacontinuacinlasposiciones
necesariasparaincluirlanuevaestructura.
Esto parece tarea simple,perofinalmente no lo es. Las estructurasen disco se definen en
bloques de partes iguales, por lo que si es necesario correr los registros posteriores al
bloque siguiente demandaremos mucho esfuerzo en disco y mucho movimiento de datos,
quecomprendermuchamsinformacinqueaquellaqueoriginaelmovimiento.
Una vez realizados estos procedimientos seguardanlosdescriptoresdelarchivoyselibera
elrecursoutilizado.Permitiendoquepuedavolverautilizarse.
Comoseve,esteprocesoescostosoylargo.

Pgina936

Figura5.Buscoentrecualesregistrosseinsertar.Luegoseenlazaalanterioryposterior.

Borrandoregistros
Borrar registros dentro de una estructura ordenada es muy simple y rpido. A travs de
cualquier mtodo de bsqueda se puede obtener el registro buscado y se lo marca para
borrar.Paraqueluegolabasededatoscompactelatablaydisminuyasutamao.

Figura6.Paraborrarunregistro,sebuscaysemarca.

Actualizandoregistros
Para actualizar datos en un archivo ordenado, se debe contemplar si lo que se quiere
actualizarsonatributosqueformanpartedelaclaveporlacualfueordenadoelarchivoono.
En caso de que se quiere actualizar datos que no formen parte de la clave, se hace una

Pgina1036

bsquedabinariasobrelosvaloresdelaclaveordenados,paraluegocopiarelolosatributos
que se quieren modificar a un buffer de memoria. Luego se actualiza el valor en el registro
endisco.
En el caso de que lo que se intente modificar tambin sea partede laclave,loquesehace
escopiartodoelregistroamemoria,marcandoelregistrocomoborrado.
Luego se realizan las actualizaciones buscadas y se inserta el registro. Como si fuera
nuevo.

Figura7.Vemosloscasosenqueseactualizaunregistro.Sinyconclave.

Cabe destacar que si el nuevo valor de la clave hace que los datos queden desordenados,
se agrega un paso que resuelva este problema, es decir, que reordene los registros para
quequedencorrectamenteenlazados,segnlaclavedefinida.

Lecturaderegistros
Para realizar una lectura deregistros ordenados,sedebeprimeroevaluarsobrequecampo
se esthaciendoelordenamiento.Concretamente,sedebeanalizarsisequiereordenarpor
loscamposqueformanpartedelaclaveono.
En el caso de queformaranpartedelaclave,nohabraquehacerclculoalguno,yaquelos
registrosestnpreviamenteordenadospordichoscampos.
Luego, en el caso de que sean atributos que no forman parte de la clave principal, el
reordenamiento debe realizarse mediante algn mtodo de ordenamiento, transportando
registrosamemoriayordenandolosmismosunavezobtenidos.

9.2.4.Archivosmixtos
Los archivos mixtos son aquellos que sus registros se guardan en estructuras no
ordenadas,peroquesusndicessealmacenanenestructurasseparadasyordenadas.
La forma de enlazar los datos del ndice con los registros es a travs de punteros. Estos
punterossonlosqueseactualizancadainstante.

Pgina1136

Figura8.Vistadendiceordenadoyarchivodesordenado.Conectadosporpunteros.

Insertandoregistros
Insertar registrosenlosarchivosmixtosesunatareaque secumpleendospartes.Primero,
insertar el registro alfinaldelaestructuradedatosdelarchivo.Deformaidnticaaloquese
hace en los archivos no ordenados. Por lo que esta accin esmuy veloz. Adems de este
paso, se inserta la clave en la estructura dedicada al ndice, que como est ordenado, se
trabaja de la misma forma que el archivo ordenado, pero solo para el ndice. Ya
demostramos que encontrar entre qu valores debe establecerse el registro es algo rpido
gracias a los algoritmos de bsqueda binaria. Luego de determinar la posicin, se debe
agregar el valor de la clave entre el valor superior e inferior. Como ltimo paso, se debe
enlazarlaentradaenelndiceconelregistroqueseencuentraalfinaldelarchivodedatos.

Pgina1236

Figura9.Insertandounregistroenunaestructuramixta.

Borrandoregistros
A la hora de borrar registros enuna estructura mixta se debeprimeroencontrarenelndice
el valor de la clave buscada, luego eliminar el enlace al registro del archivo no ordenado.
Esto hace quela accinde borrado sea muy rpida, ya que no hay un borradofsico niuna
actualizacin en el registro de datos. Solo se trabaja conel ndice, actualizandounpuntero,
apuntadorosealadoralconjuntodedatos.
Posteriormente, elsistema gestor debase de datos, alahoradeliberarespacioyoptimizar
ndices compactara latabla de registros y eliminando en el ndice aquellasentradas que no
tenganregistrosenlazados.

Figura10.Borradodeconexinentreelndiceylosdatos.

Pgina1336

Actualizandoregistros
En los sistemas mixtos actualizar datos tiene dos formas de actuar. Se realizar de una
formauotrasegnsehagaunaactualizacinenlaclaveono.
Cuando no se realice una actualizacin en la clave, se crea un nuevo registro con los
nuevos valores, y el valordelndiceseactualizar,enlazandooconectadoalvalordelndice
con el nuevo registro. Quedando sin asociacin el registro original. Este registro que queda
sinapuntadorsereliminadocuandosecompactelabasededatos.
En el caso de que tambin se este actualizando la clave, se agregaun nuevo registro con
los nuevos valores, pero en el ndice se actualiza tanto el apuntador o enlace al nuevo
registro,comotambinelvalordelaclavequesemantieneenelndice.
Algo a tener en cuenta es que en el caso de que elnuevo valor del ndice hace quequede
desordenado, por ejemplo si tenamos originalmente 1, 2 y 3 como claves en el ndice y
actualizamos el registro con 2, colocando un 8, nos quedara 1, 8 y 3. Esto hara que el
ndicequededesordenado,porlocualseagregaraunpasoextraquereordeneelndice.

Figura11.Actualizandodatosdeunarchivomixto.

Lecturaderegistros
Cuando se hace una lectura en un archivo mixto, se debe tomarparticularatencinacomo
se ordena esta lectura. Evaluando as si elordenamientoestadadoporelvalordelaclaveo

Pgina1436

por otro campo cualquiera. En el caso de que sea sobre un campocualquiera,serealizael


mismo ordenamiento que lo mostrado en un archivo no ordenado. Es decir, se toma un
mtodo de ordenamiento,y en base a este se va recorriendoelarchivoysevanordenando
losregistros.
En el caso de que losatributosquemarquenelordenseanlosmismosquelosdadospor la
clave, se recorre una sola vez el ndice y el conjunto de registros, accediendo de forma
secuencial por el ndice y accediendo al resto de registros por el puntero o enlace entre el
valordelndiceylaclaveenelarchivo.

9.2.5.OtrosmtodosdeOrdenamiento
Los mtodos antes mencionados, son solo ilustrativos y ms comunes entre las distintas
formasdeordenamientoquepuedetenerunconjuntoderegistrosenunarchivo.
Puede tambin utilizarse funciones para realizar ordenamiento, como la muy conocida
funcin hash o resumen, que apartir de un valor retorna la posicin del registro dentrodel
archivo.
Otrasformas dealmacenarlasestructurasdedatosdentro deunarchivopuedeseratravs
de tcnicas de rbolB,dondecadanodoovalor declavetienesolodosposibleshijos. Esto
permite realizar bsquedas muy rpidas. Otra forma de ordenar un archivo puede ser
medianteunrbolB+,queesparecidoalmtodoantesmencionado, pero permitiendotener
unacantidadvariabledehijosporcadaclaveonodo.

Pgina1536

9.3. Mtodos de almacenamiento en bases de datos


deproduccin
Cuando pensamos en un motor de bases de datos, debemos racionalizar donde estar
alojado y cual ser su uso final. Generalmente, tendremos tres ambientes mnimos de
trabajo, el rea de de desarrollo y testeo unitario de los programas ysus bases de datos.
Luego, un rea donde se realizarn los test generales y de stress de las estructuras de
datos.Porltimo,elreadeproduccin.
La primer rea mencionada, puede ser definida en una computadora de escritorio, con
funcionalidades mnimas, como punto de partida. Tambin podemos definir estructuras del
estilo clientes servidor, donde se instauran estructuras de aplicacionesenservidoresylos
desarrolladores realizan conexiones a estos servidores para explotarel conjunto de datosy
aplicaciones.
Cuando se piensa en estructuras de testeo funcional y de stress de las aplicaciones, se
intenta generar un esquema equivalente a lo que finalmente ser la estructura en
produccin.Permitiendoastrazarparalelismosydefinircambiosdesernecesarios.
Por ltimo, los ambientes de produccin tienden a formalizarse ms que los otros antes
mencionados. Se intenta dividir en distintos servidores los diferentes herramientas que
intervienen en la aplicacin final. Teniendo mnimamente un servidorde aplicaciones, quien
gestionar y publicar laspginas webs, responder servicios, etc. conocido generalmente
comoservidorweboservidorHTTP.
Sumado al anterior, tendremos un servidor de archivos, que ser quien se encargue de
contenerlosarchivosdelasdiferentesaplicaciones,talescomoimgenes,videos,etc.
Por ltimo, se tendr unservidor dedatos,dondeestarnalojadoslosmotoresdebasesde
datos. En los prximos apartados nos centraremos en la estructurafsicadondesepueden
almacenar los archivos del SGBD, permitiendoevaluarlas diferenciasy lassimilitudesentre
losdiferentesesquemas.
Queremos destacar, que la divisin de servidores planteadas anteriormente es a modo
genrico eilustrativo,dejandoconstancia dequeexistenotrasformasdeesquematizartanto
los procesos de distribucin de reas, como tambin las estructuras en las granjas de
servidoresdeambientesproductivos.

9.3.1. Usando RAID de discos para mejorar el acceso al


almacenamiento
Dentro de los servidores podemos administrar nuestros discos de forma independiente, o
trabajar con esquemas que nos garanticen ms performance ymejor disponibilidad de los
datos. Para esto, se cre un esquema llamado conjunto redundante de discos
independientes o RAID porsu siglaeningls(RedundantArrayofIndependentDisks).
Este esquema para ser vlido necesita de ms de un disco rgido en un servidor
determinado y luegounaaplicacin ser la que determine, en base a la configuracin, cual
ser la forma en que se replicaran los datos. Esta configuracin se definecomo nivel de
Pgina1636

RAID. Los beneficios que nos aporta un esquema RAID sobre un conjunto cualquiera de
discos,eslamayorintegridaddelosdatos,msrpidoaccesoymstoleranciaafallos.
Veamosentonceslosnivelesmscomunesdeestemtododealmacenamiento.

RAID0
Casi no se considera este nivel de RAID, ya que no aplica redundancia. En este nivel se
arma una matriz de discos, donde cada uno almacenar un bloque de cada archivo,
mejorando el acceso a archivos grandes. En lugar de que un archivo ocupe ms bloques
que discos disponibles, serepiteelproceso.Basndoseenestateora,cuantosmsdiscos
se tienen ms rpido es el acceso y menos lecturas se harn por disco. Pero con el
inconveniente de que, como no contiene redundancia, ante la prdida de un disco toda la
matrizseverafectada,perdiendoastodoslosarchivos.

Figura12.DosejemplosdeRAID0.Condosytresdiscosyladistribucindebloques.

RAID1
De forma opuesta alRAID0,elnivel1cuentaconunareplicacinencadaunodelosdiscos
con los que cuenta. Es decir, que en apariencia tiene un solo disco, mientras que
internamente puede contar con dos o ms espejados, conteniendo la misma informacin.
Este nivel, tiene como desventaja que utilizaremos como mximo la mitad del espacio
disponible. Es decir, si tenemos dos discos, utilizaremosuno.Sitenemostres,utilizaremos
tambinuno,teniendodosporespejoorplica.
Como ventaja, encontramos la velocidad que tenemos para leer unarchivo, mejorando en
tiempo de lectura como mnimoa lamitad. Es decir, si tenemossolo dosdiscos,leemosla
mitad en cada uno. Si tuviramos cuatro, leeramos un cuartoencadauno,demorandouna
cuartapartedeltiempoquesinotuviramosestaestructuradematriz.
Otra ventaja es que si alguno de los discos sufriera algn desperfecto, la matriz seguira
funcionando,yaquepodramosseguiroperativosconelrestodediscosenfuncionamiento.
Cuando se reemplaza el disco con desperfectos, el proceso se ralentiza, para generar la
rplicaenelnuevodisco,perosemantieneoperativo.

Pgina1736

Figura13.Vemosdosesquemasadosytresdiscos.Viendocomotodosmantienenlamismainformacin.

RAID5
El nivel5 deRAIDtratadedistribuirlosbloquesdeun archivoendiferentesdiscos,sumando
adems una estructura de paridad. Esto hace que se pueda distribuir un archivo de tres
bloques en tres discos, permitiendo en un solo instante de tiempo recuperar los tres
bloques, por ejemplo. El bloque querefierealaparidadsloseutilizacuandohayerroresde
CRC2 en la lectura, permitiendo reconstruir el bloque donde se encuentra el error. Para
funcionar esta estructura necesita de un mnimo detresdiscos, teniendounarchivodividido
en dos partes como mnimo y el bloque de paridad alojado en el tercer disco. Adems los
bloques de paridad se distribuyen en los discos equitativamente para que la lectura de los
bloquesdelosarchivosylosdeparidadseapareja.
Es decir, que si tenemos los archivos A, B, C, y cuatro discos, podramos dividir a los
archivos en tres partes, A1, A2, A3, y B1, B2, B3, mientras que paraC,C1,C2yC3.Estos
cortessepodrandistribuirdelasiguientemanera:

Disco1

Disco2

Disco3

Disco4

ArchivoA

A1

A2

A3

AP

ArchivoB

BP

B1

B2

B3

ArchivoC

C1

CP

C2

C3

Como vemos, tanto los bloques de los archivos como losbloquesdeparidadsedistribuyen


equitativamente. Esto se hace para agilizar las lecturas y parapoderresolverloserroresde
paridad.

CRC: Comprobacin deRedundancia Cclica. Es uncdigoquenos permitedetectarsi hay errores en


losdatosalmacenadosotransmitidosvared.
Pgina1836

Figura14.Setienemnimo3discos.Elbloquedeparidadsedistribuyeequitativamenteenlosdiscos.

RAID10
El nivel 10 de RAID tambin es conocido como RAID 1+0, ya que lleva a cabo una
combinacindeambasestructuras,generandounamatrizdediscosmscompleja.
La ideadeestenivelradicaenenquelaspartesdelosarchivossedividirenlosdiscosque
se tenga. Luego, internamente, para cada unodeestosdiscossecontarconotroquehar
lasfuncionesdeespejo.
La estructura mnima de discos para este nivel es de cuatro. La forma de en que se
distribuye la informacin es la siguiente. Los archivos se dividen en dos partes, y cada una
deestaspartessemantieneespejada.
Esto logra sumar redundancia y velocidad de acceso, pero se elevael costo en la matriz.
Siempre que se quiera agrandar la estructura, se debe hacer mediante el agregado de dos
discosporvez.

Figura15.Setienen4discos.Primerosedividenlosbloques,luegosereplican.

Pgina1936

9.3.2.Almacenamientovared
El constante crecimiento del volumen de informacin que se utiliza y procesa dentro de los
sistemas existentes hoy en da, sumado a la cantidad de usuarios que consumen dicha
informacin hace que los mtodos de almacenamiento dejen depensarsecomoalgofijoen
un servidor para cambiar la ptica ypensar en una estructuratiporedoreaparalograras
distribuirlosdatosyhacerlosmsaccesibles.
Bajo esta mirada, se idela red de almacenamiento (o por susigla en inglsSAN,Storage
Area Network) que tiene las siguientes caractersticas. Se configuran una gran cantidad de
elementos de almacenamiento, pudiendo ser discos rigidos, memorias flash, entre otros,
conectados mediante fibra ptica, pudiendo estar separados alrededor de 10 kilmetros
entre el conjuntode datos y quien los demande. Adems, teniendo los datos separados en
este formato, permite el acceso de mltiples usuarios, ya que probabilsticamente no
demandarn los mismos datos, as que pueden servirse porcionesdiferentesdedatospara
diferentesusuarios.
Para hacer crecer este rea simplemente se debe aadir otro medio de almacenamiento
masivoalared.Luegodeesto,estarinmediatamentedisponibleparaelalmacenamiento.
Este mtodo se utiliza cuandosetienengrandesconjuntosdedatosqueprocesaryalavez
muchosconsumidores.

Figura16.Distintostiposdealmacenamientomasivoydiferentestiposdeconsumidores.

Pgina2036

9.3.3.Almacenamientoenlanube
La estructura de almacenamiento en la nube (o cloud Storage en ingls),estpensadoen
una estructura de red, con los datos distribuidos en un conjunto de servidores virtuales.
Generalmente, estos servidores suelen ser alquilados o adquiridos por un tiempo
determinadoenempresasqueseespecializanenestetipodeprestaciones.
Las caractersticas principalesdeestaestructurasonlaagilidad,laescalabilidad,elasticidad
ymultiacceso.
Agilidad, refiere a la velocidad aportada por losequiposutilizadosparaestaestructura.Son
equipos pensados para administracin de datos y balanceo de carga para distribuir las
diferentespeticionessegnlanecesidadylacantidaddeusuarios.
Escalabilidad, indica que sin modificaciones, se puede incluir ms equipamiento omejorar
los niveles de procesamiento, extendiendo la red de procesadores virtuales. Lo mismo
ocurreparaeltamaofsicoadquirido.
Elasticidad, es la propiedad indicada para sealar que esta estructura puede adaptarse a
necesidadespequeas,medianasograndes,soloimportandoelcostodelousado.
El multiacceso, nos indica que a una estructura en la nube la pueden acceder
simultneamente muchos usuarios. Permitiendo as la expansin del negocio a llevar a
cabo.
Como desventaja, podemos sealar que al contar con el almacenamiento en estructuras
forneas, estas pueden verse atacadas para obtener la informacin que contengan. Algo
similar puede ocurrir con el canaldecomunicacinentrenuestrossistemasyelconjuntode
datos.
Ejemplos de este tipo de estructuras se puede encontrar en la versin en la nube de
Postgresql3 y WindowsAzure4 ,entreotros.Luego,podemosobservarservicioscomolosde
Amazon5 , donde se puede contar con distintos tipos deestructurasdebasesdedatosenla
nubecondiferentescaractersticas.

MsreferenciasdePostgreSQLenlanubeenhttp://www.cloudpostgres.com/
ParaconocermssobrelaversindeWindowsenlanubehttp://www.windowsazure.com/enus/
5
UnadelasopcionesainvestigarpuedeserDynamoDBhttp://aws.amazon.com/es/dynamodb/
4

Pgina2136

Figura17.Basededatosenlanubeyelcrecimientosegnnecesidad

Pgina2236

9.4.Estructurasdendices
Los ndices en lasbasesde datos, pueden ser visibles como estructuras auxiliares.Sibien
esto producela necesidad de contar con ms capacidad para poder almacenar esta forma
de organizacin de los datos, se intenta ganar en velocidad de acceso segn los mtodos
debsquedausados.
Para llevar estasdosestructuras,ndicesydatos,sepuedeoptarpordefinirlasendiferentes
archivos y discos, para poder hacer accesos simultneos a ambas, permitiendo tambin
queestoseaunnuevoaporteparaminimizarelcostodetiempo.

9.4.1.ndicesprimarios
Los ndices primarios son aquellos que estn asociados a una clave primaria. Una clave
primaria, recordemos, esaquelatributooconjuntodeatributosquedefinenunvocamenteun
registrootupladelatabla.Asociadoaestaclave,sedeterminaunndiceprimario.
A modo terico, siempre se define a este tipo de ndices como unaestructura compuesta
por todas las entradas diferentes (o valores diferentes) de la clave y un puntero a la tupla o
filaquecorrespondeesaentradaenelndice.
A la hora de evaluar la construccin real de este tipo de estructura, se detect que es
mucho ms ptimo tener tantas entradas en el ndice como bloques ocupados por la
estructura fsica de la tabla. Permitiendo as identificar solo al primero de los valores de la
clavequecorrespondealbloque.
El tamao de cada una de las filas de este tipo de ndices est dado por el tamao del
atributo o de los atributos que componen la clave primaria y lo que ocupe el puntero a un
bloque de disco (block address).Este puntero siempreestar indicandoeliniciodelbloque
sealado,parapoderobtener(oleer)elbloquecompletoytransportarloamemoriaprincipal.
Estendiceestordenado,normalmentedemenoramayor,salvoseindiquelocontrario.
Muchas veces se llama a este tipo de ndices, ndices dispersos, por tener pocos valores
conrespectoalacantidaddeinformacinalmacenada.

Pgina2336

18.Ejemplodendiceprimario.

9.4.2.ndicesAgrupados
Cuando se tiene una columna de datosordenadospudiendonosernicos,se puedeutilizar
un ndice ordenado para indicar en que bloque se tiene el valor distinto. Permitiendo as
agilizar los accesos. La condicin para que este ndice se pueda construir es tener un
conjuntoenelarchivofsicodedatostambinordenado.
En el ndice, slo se almacenarn los valores diferentes de la columna, sumando a cada
cadavalorelpunteroalbloquecorrespondiente.
Por otro lado, el archivo de datos puede separar los distintos valores en distintos bloques,
dejando reas vacas ocompletar los bloques con distintos valores. Estas dosopcionesde
organizacin de datos hace que en el primer caso, donde se tienen los valores diferentes
para diferentes bloques, que los punteros del ndice siempreapunten a bloques diferentes.
En el segundo caso, cuando los valores distintos pueden compartir bloque, puede ocurrir
quedospunterosdedatosdireccionenalmismobloque.
Es oportuno sealar, que en una misma tabla, no puede construirse un ndiceprimarioyun
ndice agrupado a la vez. Siempre debe optarse por una u otra construccin. Esto ocurre
porquenosepuedetenerfsicamenteordenadalaestructurasegndosatributos.
Veremosdosimgenesquenosrepresentarnestasdosposibilidades.

Pgina2436

figura19.ndiceAgrupado,conbloquesquecompartenvaloresdiferentes.

Pgina2536

Figura20.ndiceagrupadoconvaloresnicosporbloque.

9.4.3.ndicessecundarios
Los ndices secundarios existen cuando quiere indexarse un campo o atributo que no es
alcanzado por la clave primaria. Esto puede ocurrircon una clavecandidata,oconatributos
con valores repetidos. Puede estar el campo relacionado a otratabla o no. como se ve, no
hayrestriccioneseneltipodecampoparacrearestetipodendices.
Por parmetrogeneral,seestimaqueelatributooconjuntodeatributostomadosparaarmar
elndicenoestarordenado.
La estructura de cadaunode losregistrosdeestendiceestardadaporelvalordelcampo
a tomar para definir el ndice, ms un puntero a bloque. Los valores diferentes del campo
definirn la cantidad de entradas que tendr el ndice. Cada entrada diferente tendr un
punteroaunbloquediferente.
A diferencia de los casos anteriores de ndices mencionados,enlosndicessecundarios,el
puntero a bloque sealar un bloque que no forma parte de la estructura fsica de
datos, sino que apuntar a una estructura que contiene un conjunto de punteros que
indicarnenquelugarseencuentranlosregistrosfsicosque.
Pgina2636

A este tipo de ndices selosllamadensos,porquelosvalores quepuedetenerelndiceson


muchosyestaltamentepoblado.
Tambinselosconocecomondicesnoagrupados(ononclustered,eningls)

figura21.ndicesecundario

9.4.4.ndicesmultinivel
Los ndices de ms de un nivel son aquellos que dividenla estructura delndiceparaquela
bsqueda sea ms veloz.La cantidad de niveles que puede llegar a tener elndicesiempre
est dada por la construccin elegida por la empresa desarrolladora del sistema gestor de
basesdedatos.
Sin importar cuntos niveles se tenga, el nivel ms prximo a los datos se definir como
niveldebaseyelmsalto(omsalejadodelosdatos)serllamadonivelsuperior.
Una forma para pensar en esta divisin en varios niveles, se puede ejemplificar, tomando
como puntodepartidaunndicecualquiera.Apartirdeah,dividirestendiceenconjuntosde
5 (cinco) valores diferentes, ordenados. Luego, se podra agregar una nueva estructura (o
nuevo nivel) que contenga los primeros valores de cada uno de los 5 conjuntos armados,
msunpunteroacadaunodeellos.
Permitiendo as acceder al nivel superior primero, hacer una bsquedaen ese nivel yluego
saltardenivelparahacerunabsquedamsprecisadelregistrobuscado.
Pgina2736

Este tipo de estructuras de ndices permiten un acceso ms veloz a los datos, pero
conllevanunalgicamayoryuncostomayoralahoraderealizaractualizaciones.

Figura22.ndicemultinivel,condosniveles.

9.4.5.Otrasestructurasdendices
Adems de las estructuras antes mencionadas,existenotrasformasdedefinirunndice,en
baseadiferentesnecesidades,situacionesoconceptos.
Las estructurasbsicasantesvistassonlasmsusadas, pero enmuchosmotores,talcual

Pgina2836

sucede en postgreSQL6 , se puede definir cual estructura usar el ndice a la hora de su


creacin.

9.4.5.1.ndiceshash
Los ndices del tipo hash siempre se forman como un mtodo de acceso secundario,
pensando quesiempresetendrademsunndicedeclaveprimariadefinidosegnloantes
mencionado.
La forma de definireste tipo de ndices es, tener una tablaoestructuraHASHquecontenga
un compendio de claves hash (o llaves) y el punteros al registro buscado. Este tipo de
ndicestambinsonconocidoscomotablashash.
Para la construccin de estatabla hash se necesita, definir cual campo dela tabla original
serquiendeterminelasclavesaaplicarleunafuncinmatemticaparadefinirelhash.
Luego de tener definido el campo, se genera el ndice, con los resultados de la funcin
matemtica aplicada, ms los punteros correspondientes a los bloques fsicos que
contienenlosregistrosutilizadosparagenerarlaclave.
Por ltimo, a la hora de realizar una bsqueda, se aplicaa laclavebuscada la funcin de
hash dada enel paso inicial para poder detectar laclaveyelpunteroalbloquedondeestar
elregistro.
Veamosunejemplo.

Figura23.Conjuntodedatosabuscaraplicandounndicehash.

9.4.5.2.ndicesrbolByB+
Este tipo de ndices sonestructuras balanceadas, donde cada elementodelaestructurase
lo conoce como un nodo. Estos nodos, contendrn un valor (o clave) que los identifique y
punterosaporlomenosdossubnodos(onodosinternos).
6

PostgreSQL:Creacindendices:http://www.postgresql.org/docs/current/static/sqlcreateindex.html
Pgina2936

Los nodos que estn prximos a los datos se conocen como nodos hojas, y contendrn
punteros a los bloques que contienen los datos,a diferencia de los dems nodos, que solo
mantienenenlacesconotrosnodos.

figura24.ndiceamododerbolB.

9.4.5.3.ndicesbitmap
Los ndices bitmap seutilizan para referenciar a un campo en particular de una tabla. Este
campo a evaluarestar compuesto por un valor definido y formar parte de un conjunto de
valores predeterminados. En el ndice se encontrar una coleccindelosvaloresdiferentes
del campo, ms unaseal booleana que indiqueen cual fila de la tablaseencontrardicho
valor.
Existen varias formas de generar este ndice. Para ilustrar un par de casos, utilizaremos el
siguienteejemplo.

Pgina3036

figura25.Listadodelocalidadesyunndicebitmapsobreelcampoprovincia

9.4.5.4.ndicesenbaseafunciones
Los ndices en baseafuncionesnacenenrelacinaunconceptomoderno,el cualapuntaal
almacenamiento de los valores de una columna de una tabla transformados mediante una
funcin dada. Esto significa que adems de almacenar el valor real de la columna, se
almacena el valor alterado mediante una funcin definida, msun puntero al bloque donde
seencuentraelregistroconelvalororiginal.
Esto permite aplicar las condiciones de las consultas (en la instruccin WHERE)
directamente sobre el ndice, para luego recuperar el resto de los datos de las filas que
cumplancondichacondicin.

Pgina3136

Figura26.ndicegeneradoapartirdelafuncindemaysculayconunacondicin.

9.4.6.Sintaxisparalacreacindendices
Detallaremosendiversosmotoresdebasesdedatos(oSGBD)laformadecrearndices.
Mostraremos lasintaxisparacrearndicesenloslenguajespropuestosparacadaunodelos
motores ms utilizados. Para ello, definiremos en azul y maysculas las palabras
reservadas del lenguaje obligatorias para generar el ndice. Luego, entre corchetes se
definir la sintaxis optativa.Separados por pipes se definirn las distintas opcionessobreel
elemento en cuestin. Por ltimo, los nombres variables sern detallados en minscula
itlica.

9.4.6.1.MySQL
LaestructuraquedefineMySQLparacrearndiceseslasiguiente
CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEXnombre_del_indice
[USING[HASH|BTREE]]
ONnombre_de_la_tabla(columna_indice[,...])
Las columnas de las tablas que se definen para el ndice pueden indexarse en parte o de
Pgina3236

formacompleta,ademspuededetallarsesielordenamientoesascendenteodescendente.
Explicacin
Tipo de ndice: El tipo se determina por la clusula [UNIQUE|FULLTEXT|SPATIAL]
Esto determinar si elatributoa evaluar permitir no tener repetidos, mediante UNIQUE,si

ser utilizado para funciones de texto y solo vlido para campos del tipotexto, utilizaremos
FULLTEXT.Mientras

que si el campo es del tipo geogrfico, podr indexarse mediante un


ndicedeltipoSPATIAL.
Mtodo de organizacin del ndice: Mediante la definicin de [HASH|BTREE] se
determinasilaestructuradelndiceseutilizarunhashounrbolB.
Definicindelascolumnas:
columna_indice:
nombre_columna[(largo_a_indexar)][ASC|DESC]

9.4.6.2.PostgreSQL
En el caso de postgreSQL, el nombre del ndice es optativo y la generacin de esta
estructuratienevariasparticularidades,adiferenciadeotrosmotores.
Veamoslasintaxis
CREATE[UNIQUE]INDEX[CONCURRENTLY][nombre_del_indice]
ONnombre_de_la_tabla[USING[BTREE|HASH|GIST|SPGIST|GIN]]

({nombre_columna|(expresin)}[COLLATEcollation][
opclass][ASC|DESC][NULLS{FIRST|LAST}][,...])
[WITH(parametros_almacenamiento=valor[,...])]
[TABLESPACEnombre_tablespace]
[WHEREpredicado]
Explicacin
Tipo de ndice: En PostgreSQL se identificaa los ndices con el parmetro UNIQUEpara

chequear los repetidos, mientras que el parmetro CONCURRENTLYdetermina

si se van
bloqueoscuandoserealizaninserciones,modificacionesoborradosenlatabla.
Mtodo de organizacin del ndice: Mediante la definicin de una de las opciones
[BTREE|HASH|GIST|SPGIST|GIN]se
indicaalndicequeestructuratomar,sienforma
de rbol B, hash, o estar definido para un campo del tipo espacial (o geogrfico). Cabe
destacarqueparaclavesprimariasslopuedeusarseelmtododerbolB.
Definicindelascolumnas:
Pueden definirse columnas o expresiones, como por ejemplo una funcin sobre una
columna. Para determinar una especificacin diferente de un atributo del tipo cadena de
caracteres,sepuededefinirconlaopcinCOLLATE.
Pgina3336

Parmetros extra: Con los parmetros opcionales WITH y TABLESPACE se puede


determinar el porcentaje de compactacin del ndice, la cantidad de entradas por bloque en
cadaunodelndiceydondesealojareneldisco.
ndice Parcial: Cuando se crea el ndice con la clusula WHEREse
crea el ndice con
informacin parcial de la tabla, constando de solo referencias a los registros que cumplan
conlacondicin.

9.4.6.3.Oracle
Oracle tiene en susintaxis,muchoselementosparadefinircomoalmacenarlaestructura,la
compresin de la informacin,etc. Solo nos vamos a detallar en la parte de lasintaxis que
es necesaria conocer segn lo que creemos conveniente. Si sedesea ms informacin al
respecto,puedenrevisarselasdefinicionesdellenguajepropiodeOracle,PL/SQL.
Veamosentonces,lasintaxisacotada
CREATE[UNIQUE|BITMAP]INDEXindex_nameON
tabla(funcion(columna[,columna])|columna[,columna...])
TABLESPACEtable_space
Explicacin
Tipo de ndice: Podemos definir o no eltipodendice.Silo hacemos, podemosdeterminar
que admita valores nicos o que se organice como un bitmap. Si no definimos el tipo,
construirunndicesecundario.
Parmetros extra: Se puede definir como parmetro extra el espacio en disco donde se
alojarelndice,siestarordenadoono,entreotrasdefiniciones.

9.4.6.4.MSSQLServer
El lenguaje de consultas en MS SQL Server se llama Transact SQL y contiene la siguiente
definicindesintaxis
CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_name
ONtabla|vista(columna[ASC|DESC][,columna...])
[INCLUDE(columna[,columna...])]
[WHEREcondicin]
[WITH(opciones[,...n])]
Explicacin
Tipo de ndice: En este lenguaje los tipos de ndice son tres. Para crear un ndice con
valores nicos, se debe usar la clusula UNIQUE. Luego, para generar un ndice donde el
ordenamiento fsico y el lgico seanelmismo,sedeterminacomondice CLUSTERED,para
queestonoocurraselodebedeterminarcomoNONCLUSTERED.

Pgina3436

Definicin de las columnas: LadefinicindeLascolumnaspuedencontenerelordendela


mismas, como tambin se puede detallarsiseagregaunacolumnaextraalaestructuradel
ndiceparaquedichacolumnaseaaccesiblealmismotiempoqueseanalizaelndiceyno a
travsdelmismo,accediendoalatabla.
ndice Parcial: Cuando se crea el ndice con la clusula WHEREse
crea el ndice con
informacin parcial de la tabla, constando de solo referencias a los registros que cumplan
conlacondicin.
Parmetros extra: Se puede definir a travs de la palabra reservada WITHcomo
parmetros aadidos si se desea borrar la estructura s es que ya existe, si se desea
actualizarlasestadsticasluegodecrearelndice,entreotrosopciones.

9.4.6.5.DB2
IBM desde hace tiempo, ha logrado unificar sus dos bases de datos propuestas,
manteniendo aquella que arrojaba ms prestaciones y ms estabilidad. Fue por esto que
estandarizaDB2,frenteaInformix.
Vamoslasintaxis
CREATE[UNIQUE]INDEXindex_nameON
tabla(funcion(columna[,columna])|columna[,columna...])
[INCLUDE(columna[,columna])]
Explicacin
Tipo de ndice: En este lenguaje los tipos de ndice son dos. Para crear un ndice con
valoresnicos,sedebeusarlaclusulaUNIQUE.
Definicin de las columnas: LadefinicindeLascolumnaspuedencontenerelordendela
mismas, como tambin se puede detallarsiseagregaunacolumnaextraalaestructuradel
ndiceparaquedichacolumnaseaaccesiblealmismotiempoqueseanalizaelndiceyno a
travs del mismo, accediendo a la tabla. Adems puedeincluirsealgunacolumnaalndice,
para acceder al valorde la columna cuando se lee el ndice y noirabuscardichovalorala
tabla.
Puede realizarse la indexacin a travs de una funcin, como convertir en mayscula, o
cualquierotrafuncinaplicableaunvalorescalarqueretorneotrovalorescalar.

Pgina3536

Pgina3636

You might also like