Mapeamento de dados de objetos binários
Os objetos binários são difíceis de gerir em bases de dados. São grandes, o seu conteúdo não é legível para humanos e podem conter bytes de dados que podem ser facilmente interpretados como caracteres de controlo. Até mesmo o nome do tipo de dados para objetos binários grandes – BLOB – reflete a aversão que muitos gestores de bases de dados têm por eles. Antes das bases de dados relacionais, a definição de um BLOB era "algo indefinido ou amorfo"
Altova MapForce, o software galardoado, Ferramenta de mapeamento de dados gráficos para conversão e integração de qualquer formato para qualquer outro, Inclui funcionalidades que permitem, de forma simples, a associação de objetos binários a bases de dados relacionais populares, e vice-versa. Dados como imagens, ficheiros PDF, ficheiros de vídeo ou qualquer outro tipo de dado binário podem ser associados. Vamos analisar um exemplo.

O MapForce inclui duas funções integradas, "read-binary-file" (ler ficheiro binário) e "write-binary-file" (escrever ficheiro binário), para a conversão entre objetos binários e bases de dados. Neste artigo, vamos expandir um exemplo de "read-binary-file" retirado da ajuda online do MapForce, para criar uma conversão completa que permita inserir uma variedade de objetos binários numa base de dados relacional.
Aqui está um exemplo de como inserir uma imagem numa base de dados:

Esta configuração insere o ficheiro local chamado "image01.png" numa tabela de base de dados. Podemos observar que a base de dados está estruturada de forma a incluir metadados sobre a imagem em colunas separadas, que podem ser consultadas para recuperar a mesma imagem. Não é desejável inserir grandes ficheiros de dados binários na base de dados sem uma forma de os encontrar posteriormente!
Para o nosso caso de utilização, vamos criar uma base de dados SQLite para monitorizar vários ficheiros binários que são elementos essenciais para diversos produtos de um departamento de marketing. Estes dados binários podem incluir, por exemplo, ficheiros de imagem de logótipos, documentos PDF com fichas técnicas de produtos, capturas de ecrã do produto em funcionamento, fotografias, ficheiros de vídeo, etc.
Começaremos com um ficheiro de texto CSV simples para descrever as informações que queremos inserir:

Quando finalizarmos este projeto, os utilizadores poderão ter dezenas, ou até centenas, de elementos armazenados na base de dados. Quando precisarmos de extrair um elemento mais tarde, os nomes dos tipos de elementos serão metadados cruciais para as pesquisas. No entanto, se qualquer entrada na coluna de tipos estiver mal escrita ou for inconsistente, um objeto binário de grande dimensão ficará isolado e irrecuperável.
Podemos definir uma lista de tipos de ativos importando o ficheiro CSV para o XMLSpy e gerando um esquema XML onde o elemento "Type" é selecionado a partir de uma lista predefinida. Em seguida, um estagiário de marketing, mesmo sem experiência, pode criar uma lista de ativos na visualização de grade do XMLSpy. O campo "Type" é definido e não pode ser alterado livremente:

Podemos também adicionar uma lista de nomes de produtos ao esquema XML, ou, pelo menos, exigir que o elemento "Produto" esteja presente. Podemos até definir o tipo de "Ativo" como "xs:anyURI", o que obriga a uma referência a um ficheiro. Aqui está a janela de ajuda "Detalhes" na vista de esquema do XMLSpy, com a definição do tipo de dados para o elemento "Ativo":

A mapeamento de objetos binários no MapForce é essencialmente o mesmo, quer estejamos a mapear a partir de uma fonte CSV ou XML.
Começaremos por abrir um novo projeto no MapForce, onde definiremos o mapeamento de dados, e adicionaremos a nossa lista de ativos e a tabela de base de dados.

Utilizámos o DatabaseSpy para criar uma nova tabela de base de dados SQLite, com algumas melhorias em relação ao exemplo presente na ajuda do MapForce. A coluna "produto" irá conter o nome do produto, e o tipo de ativo será inserido na coluna "descrição". A coluna "recordDate" irá registar a antiguidade de cada objeto binário.
Agora, vamos configurar a coluna "id" para que seja um número automático, conforme descrito na ajuda do MapForce, e estabelecer as ligações simples entre a fonte e o destino:

Os campos "Produto" e "Tipo", provenientes do mapa de origem, são diretamente mapeados para as colunas na base de dados. A definição do elemento "Linha" instrui que cada linha de entrada crie um novo registo na base de dados.
Agora, vamos mapear os dados binários para objetos BLOB (Binary Large Object) na base de dados:

A função integrada MapForce, "read-binary-file", utiliza o nome do ficheiro fornecido no elemento "Asset" da fonte para criar o objeto binário (BLOB). A função "read-binary-file" trata sempre a fonte como dados "base64binary", independentemente de quaisquer convenções baseadas no nome do ficheiro de origem.
Para completar o mapeamento, precisamos de ligações que permitam extrair o nome do ficheiro a partir do "Asset" e guardar a data de armazenamento

A função "remover pasta" extrai automaticamente o nome do ficheiro de qualquer caminho, seja para ficheiros locais, ficheiros na rede ou ficheiros na web.
A função "now" regista a data e a hora da execução, mas nós só queremos a data, por isso, utilizamos a função "substring-before" para remover a parte relativa à hora.
O botão "Executar" (ou "Gerar") que se encontra na parte inferior do painel de mapeamento executa o processo de mapeamento e gera um script SQL:

O script é apenas uma pré-visualização para verificar os resultados obtidos até o momento. Para executar o script, selecione a opção correspondente no menu principal de saída

O resultado do script é exibido:

Clicaremos no botão "Consulta à Base de Dados" para nos conectarmos à base de dados e, em seguida, validaremos o resultado diretamente no MapForce:

Não se pode obter muita informação ao observar os dados binários (BLOBs) na coluna "productfile", mas as outras colunas fornecem metadados úteis sobre cada elemento.
Em [data-mapping-binary-objects-part-2|publicação de acompanhamento Demonstraremos como mapear dados, associando objetos binários a.. [Extrair os ativos da base de dados]] e guardá-los nas suas formas originais. Se não conseguir esperar, Descarregue uma versão de avaliação gratuita incluindo tutoriais, ajuda e muitos mais exemplos para começar o seu próprio projeto de mapeamento, conversão e transformação de dados!