SSIS — SQL Server Integration Services — Pacote integrando base PostgreSQL
Primeiramente, o que é e para que serve o SQL Server Integration Services (SSIS)? É a ferramenta de ETL (Extract, Transform and Load) da Microsoft.
Seguindo com a séries de publicações referente ao Reconhecimento Facial, vamos explicar de forma bem simples o uso do SSIS neste projeto.
Necessidade de utilização
A solução proposta para implementarmos o reconhecimento facial para a abertura das portas foi composta em duas etapas, sendo a primeira delas um aplicativo Android para o cadastro de rosto armazenando num banco relacional PostgreSQL e a outra etapa no Raspberry Pi fazendo o processamento da aplicação de reconhecimento, este também em um banco PostgreSQL. Desta forma, garantiríamos que a porta seria aberta independente de ter problemas de rede e melhor performance ao sistema de reconhecimento facial.
Com isso, temos dois bancos apartados, onde um tem o cadastro de usuários e rosto e o outro possui o registro de entrada e logs de abertura da porta.
E o nosso problema?
Como manter a base de usuários e rostos do Raspberry Pi atualizada e como levar para a base do App os registros de entrada e logs do Raspberry Pi, visto que o mesmo tem hardware limitado.
A partir do cenário descrito acima, decidimos manter integradas as bases com o SSIS.
E como pensamos a rotina….
1 - Limpando tabelas do Raspberry Pi
Para usar componentes ETL disponíveis no SSIS que fornecessem agilidade no processamento, limpamos as tabelas responsáveis por armazenar dados de usuários e rostos utilizando o componente “Execute SQL Task”.
2 - Populando tabelas
Processando as tabelas do App, onde os usuários estão cadastrando ou atualizando os rostos para o sistema de reconhecimento.
Para cada componente “Data Flow Task” é configurado o fluxo do nosso ETL (Data Flow), onde basicamente pegamos os dados de uma tabela em um banco e populamos em outra base, que neste caso também é um PostgreSQL.
Mas neste passo poderia facilmente estar populando em outro banco relacional, como por exemplo SQL Server, Oracle, MySQL, etc. ou até mesmo gravando em arquivo. Neste passo, é possível configurar o fluxo conforme a demanda, o SSIS disponibiliza componentes para facilitar nossa vida.
3 - Gravando registros de entradas e logs
Neste passo segue-se o mesmo fluxo anterior, porém com a particularidade que não limpamos a tabela na base previamente de forma que os registros de entrada são mantidos na base do App.
Neste passo apenas são inseridos novos registros vindos do Raspberry Pi, não atualizamos registros já inseridos.
4 - Limpando registros do Raspberry Pi
Neste quarto e último passo, limpamos os dados da base PostgreSQL. Como nosso hardware é limitado no Raspberry Pi, optamos por não carregar o sistema de reconhecimento facial mantendo apenas 10 dias de registros de entradas e logs. Assim, a base completa fica apenas no banco do App.
Reflexão final
Para nossa necessidade, a ferramenta da Microsoft atendeu de forma muito ágil e eficiente, pois possui boa arquitetura, é de fácil utilização e tem rápido desenvolvimento para questões de integração de dados com ou sem nosso “T” do ETL.
A construção das soluções se torna muito fácil e amigável, ou seja, uma ferramenta para problemas simples e também complexos.