Artigo da SQL Magazine 33 - IOT - Index Organized Table no Oracle
Artigo da SQL Magazine 33 - IOT - Index Organized Table no Oracle	Vamos aprender nesse artigo os conceitos e a aplicabilidade do IOT.	0
IOT � Index Organized Table no Oracle<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
A grande especificidade exigida pelas regras de neg�cios, aliada � necessidade de atualiza��es dos sistemas de TI tem levado DBA�s e DA�s a buscarem novas alternativas em modelagem de dados e ganhos de performance. Com isso, os conceitos de IOT (Index Organized Table) v�m ganhando espa�o. Sua utiliza��o vem desde a vers�o 8i do Oracle e foi aperfei�oada na vers�o 9i (vale ressaltar que este conceito tamb�m � utilizado <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />em outros SGBDs como o SQL Server).
Ao contr�rio do que normalmente se imagina, a aplicabilidade das IOT�s est� bem pr�xima das necessidades dos sistemas de TI. Mas o que seria essa �tal� de IOT?
Podemos defini-la como sendo uma tabela cuja organiza��o de armazenamento seja uma variante da organiza��o de uma chave-prim�ria do tipo B-Tree (Nota 1). Inversamente a uma tabela regular (HOT - Heap Organized Table) a qual armazena dados de uma forma n�o ordenada, a IOT ordena os dados numa estrutura de �ndices B-Tree, classificando-os da mesma forma que uma chave prim�ria.
Mas a grande �sacada� da IOT � a possibilidade da varia��o do �endere�o da linha�, tamb�m conhecido como ROWID, para conseguir efetuar a organiza��o dos dados no momento de seu armazenamento.
Nota 1. Conceito de �ndice B-Tree
A palavra B-Tree (Binary Tree) significa '�rvore bin�ria', que � uma das varia��es de tipo de �ndice que permite uma busca r�pida em bases de dados. Praticamente todos os bancos de dados SQL baseiam-se nesse padr�o de busca. Em uma consulta utilizando �ndices B-Trees, o Oracle percorrer� os blocos de dados da tabela do �ndice, sendo que cada bloco alcan�ado separar� fisicamente dados que n�o estejam dentro do que foi solicitado na consulta. Isto ocorrer� at� os dados solicitados serem encontrados.
Tenhamos como exemplo uma tabela cuja chave prim�ria seja o campo ID do tipo numeral (Number), e cujos valores sejam ordenados de 1 a 1000. Al�m disso, devido a uma regra de neg�cios hipot�tica, o campo da coluna ID de valores entre 100 e 200 devem ser alterados para os valores de 1100 e 1200.
No caso de uma HOT, a mudan�a ocorrer� em n�vel de valores no campo, n�o haver� mudan�a do endere�o da linha (ROWID). No caso de uma IOT a altera��o ir� al�m, ser� f�sica, pois se dar� em n�vel do armazenamento dos dados nos blocos de dados, podendo, inclusive, haver mudan�a do bloco de dados para a linha da tabela alterada. � a ROWID se movimentando de forma a organizar a chave prim�ria numa seq��ncia l�gica, possibilitando uma melhor performance no resgate de dados da tabela utilizando os campos de chave-prim�ria, neste caso o campo ID.
Em linhas gerais, podemos dizer que uma IOT n�o possuir� uma tabela de �ndices, como em uma HOT, ela j� se comporta movimentando as linhas para que a organiza��o da mesma n�o necessite de uma tabela a parte.
Vejamos na Listagem 1 um exemplo simples da cria��o de uma IOT onde temos tr�s campos, sendo que dois deles formam uma chave prim�ria composta. No exemplo � poss�vel notar a cl�usula �ORGANIZATION INDEX�, que define a tabela como IOT.
Listagem 1. Conhecendo os DBAs (e sendo um deles), a� vai o primeiro e simples exemplo de uma IOT.
CREATE TABLE MINHA_1A_IOT ( IOT_ID INT,
IOT_DATE DATE, IOT_NAME VARCHAR2(8), CONSTRAINT PK_MINHA_1A_IOT �- CL�USULA �CONSTRAINT� OBRIGAT�RIA PRIMARY KEY (IOT_ID, IOT_DATE)) -� CL�USULA �PRIMARY KEY� OBRIGAT�RIA ORGANIZATION INDEX; -- CL�USULA �ORGANIZATION INDEX� OBRIGAT�RIA
As IOTs fornecem o acesso r�pido aos dados da tabela para consultas baseadas em chaves prim�rias que envolvam buscas exatas e escalares �In a Range�.
A altera��o nos dados da tabela (tais como a add, update, insert, ou delete de linhas) resulta apenas na atualiza��o de uma estrutura de dados, pois n�o h� nenhuma �rea de armazenamento separada da tabela (o que ocorre com a estrutura de �ndices separada da tabela de dados em uma HOT). Al�m disso, as exig�ncias de armazenamento s�o reduzidas porque as colunas chaves n�o s�o duplicadas na tabela e no �ndice. As colunas restantes, non key columns, s�o armazenadas na mesma estrutura do �ndice.
As IOTs s�o particularmente �teis na utiliza��o de aplica��es que consultam dados baseados em uma chave prim�ria. Imagens e �udio tamb�m podem eficazmente serem modelados usando IOTs.
Aplicabilidade da IOT
Cargas de dados (Bulk Loads)
O Oracle inicia um processo de carga de dados fazendo uma ordena��o nas chaves do �ndice para as linhas novas. A velocidade do sort depende do tamanho definido da chave, porque o Oracle carrega e faz o interc�mbio das chaves em mem�ria."	A exibi��o deste artigo foi interrompida