Quais são os prós e contras do uso de BLOBs no DB2 v9 (ou posterior) no z/OS?
Esclarecimento: existem alguns limites (como influência na reorganização, HA)?
GostarÃamos de armazenar grande quantidade de arquivos: 10 milhões no perÃodo de até 6 meses. A maioria dos arquivos deve ter entre 20k e 100k, mas pode haver exceções (arquivos maiores que 1MB). A maioria dos arquivos deve ser XML, mas alguns deles podem conter assinaturas digitais ou outros dados binários.
Há algumas coisas a serem lembradas ao usar Objetos Grandes (
LOB
s) no DB2.Primeiro, quando você cria uma
LOB
coluna, esta coluna contém apenas informações sobre o relacionadoLOB
, não os dados doLOB
. A tabela onde você cria aLOB
coluna ( tabela base ), deve ter umaROWID
coluna criada nela, que será utilizada para localizar osLOB
dados. Se você não criar explicitamente umaROWID
coluna, o DB2 criará umaROWID
coluna oculta para você. Se você estiver adicionando colunas a uma tabela existente e quiser usar umaROWID
coluna explÃcita, adicione oROWID
antes doLOB
. Caso contrário, quando você criar oLOB
, o DB2 criará o implÃcitoROWID
e, em seguida, o segundoALTER
para adicionar oROWID
criará um segundoROWID
coluna. O DB2 garantirá que essas duas colunas sejam sempre as mesmas, mas ocupará espaço. :-)Em segundo lugar, para cada
LOB
coluna criada em uma tabela, um espaço deLOB
tabela separado (às vezes chamado de espaço de tabela auxiliar ) deve ser definido. Portanto, se você planeja ter 3LOB
colunas em uma tabela, terá que criar 3LOB
tablespaces para armazenar seus objetos grandes. Esses tablespaces devem estar no mesmo banco de dados da tabela base associada.Além disso, se sua tabela base for particionada, você terá que criar um
LOB
tablespace e uma tabela auxiliar por coluna LOB por partição .Um único
LOB
tablespace com uma única partição pode conter até 16 TB deLOB
dados.Terceiro, cada tabela auxiliar deve ter um Ãndice definido nela.
Aqui está um exemplo de criação de uma tabela auxiliar (qualquer coisa que comece com
YOUR_
deve ser substituÃda pelos valores corretos):Por fim, ao carregar dados, se o comprimento total da
LOB
coluna e da linha da tabela base for inferior a 32 KB, você poderá usar oLOAD
utilitário para inserir os dados. Caso contrário, será necessário usar instruções SQL comoINSERT
ouMERGE
.A IBM tem algumas recomendações para tamanho de página em espaços de tabela LOB. Apenas um
LOB
pode ser armazenado por página em um tablespace LOB, então você vai querer fazer algumas contas para minimizar a perda de espaço em disco com base no tamanho médio dos arquivos que está armazenando. Por exemplo, se você tiver um LOB de tamanho médio de 17 KB, convém usar espaços de página de 4 KB. Você usaria cinco páginas (para 20 KB), o que desperdiçaria apenas 3 KB de espaço em disco em comparação com 7 KB com páginas de 8 KB (24 a 17) ou 15 KB com tamanhos de página de 16 ou 32 KB.Uma vantagem de usar um LOB versus o equivalente
VARCHAR (FOR BIT DATA)
é que, como os dados são armazenados em um tablespace separado, as varreduras do tablespace na tabela base serão muito mais rápidas.Referências: 1 , 2
Tendo dito tudo isso, se você está planejando que a maioria dos seus dados sejam XML, devo mencionar que existe um tipo de dados XML real (e um mecanismo de análise XML integrado chamado pureXML ).
Há um guia completo que você pode visualizar online (e em PDF ) sobre o uso de XML com o DB2.