Eu tenho um banco de dados que possui várias colunas BLOB espalhadas por várias tabelas. Como sou um desenvolvedor e pretendo facilitar a escrita do código do aplicativo, queria transformar essas colunas em colunas NUMBER FK referenciando uma tabela dedicada apenas a BLOBs (ou seja, uma coluna PK ID e uma coluna BLOB). Isso permitiria que nossa biblioteca ORM fizesse a inicialização preguiçosa de objetos com muito mais facilidade e com menos código.
Quais são as implicações de desempenho ou organização de dados para fazer isso? O banco de dados é bastante grande em tamanho devido a esses BLOBs.
Geralmente, se você mover uma coluna BLOB para outra tabela e a nova coluna BLOB tiver os mesmos atributos (como "DISABLE STORAGE IN ROW", veja minha outra resposta ), o desempenho não mudaria muito. Como o Oracle armazena internamente as colunas LOB/BLOB/CLOB, pelo que entendi, não é relevante para você, pois sua pergunta lida mais com o modelo de dados visível ao usuário.
Uma implicação óbvia de desempenho do uso de uma chave estrangeira é que ela torna o acesso um pouco mais lento.
Mas jogar várias colunas BLOB em uma única coluna é uma péssima ideia em termos de design. Embora eu não conheça o Hibernate ORM, para mim sua pergunta soa como "É uma boa ideia estragar o design do banco de dados para corrigir um problema com o Hibernate?". Bem, não é uma boa ideia.
E se você precisar exportar ou importar blobs referenciados de apenas uma de suas tabelas?
Como você particionaria seus blobs se eles estivessem em uma única tabela? (Se o seu banco de dados for "grande", você precisa planejar isso já!)
E se as atualizações/inserções BLOB que eram concorrentes anteriormente agora forem serializadas porque você tem uma única coluna BLOB?