5. DSMS

04/06/2015 - Mensagens da lista Info Pimentel sobre Data Stream Management System - DSMS

Hermano ⇒ ⊠

Eu estava lendo seus textos, especificamente a parte: Água, um Olhar Integrado, e uma parte me chamou a atenção. pois acredito que tenha a ver com o que estávamos discutindo ontem.

Você fala um pouco sobre quimiometria e automação analítica, e as dificuldades em se adquirir um grande volume de dados (de diversos parâmetros citados por você: como toxicidade, cor, turbidez, condutividade, temperatura, ORP, DBO, DQO, COT, OD, pH, amônia, nitrato, fosfato), e realizar a análise eficiente dos mesmos.

Com isso eu fiquei pensando em como os chamados Data Stream Management System (http://en.wikipedia.org/wiki/Data_stream_management_system poderiam auxiliar nesse processo. Os DSMSs são sistemas similares aos DBMS (ou SGBDS, sistemas gerenciadores de banco de dados), porém são feitos para a análise de fluxos contínuos dos dados.

Os SGBDs, (mais comumente os bancos de dados relacionais) são utilizados principalmente em aplicações comerciais. De tempos em tempos ocorre algum evento no mundo real (uma venda, uma locação, um cadastro de cliente ou produto), e o banco de dados é acionado para registrar essa operação. Depois é possível realizar consultas no dados armazenados. Um exemplo pode ser geração de um relatório de vendas em um período.

Os DSMSs têm um foco diferente. Eles servem para aplicações em que existe um fluxo continuo ou regular de dados, como pode ser o caso de dados captados por sensores (no contexto, poderiam ser os μTAS). Esses sistemas não armazenam todos os dados inseridos, ao invés disso, eles executam consultas ou análises à medida em que eles são recebidos no sistema. Em outras palavras, o sistema é otimizado para realizar algum tipo de processamento nos dados que vão chegando em um fluxo continuo.

Eu tava pensando que poderia ser uma pesquisa interessante, avaliar o uso desse tipo de sistema na aquisição de dados referentes a analises de recursos hídricos. Os sistema poderia continuamente obter os dados dos sensores (levando em conta o conceito de Lab-On-a-Chip ou as outras técnicas de automação que você discute) e realizar análises continuamente, criar relatórios e até corrigir o processo de aquisição dos dados (seria necessário o estudo dos métodos aplicados citados por você, mas acho que talvez seja possível implementar isso junto ao DSMS).

Depois gostaria da sua opinião sobre o assunto. Poderia ser algo interessante a explorar no futuro, inclusive no doutorado algum dia!

Abraço

Markos ⇒ ⊠

Eu dei uma lida no conceito de DSMS e achei muito interessante. Mas eu sou "quase" um leigo em Banco de Dados.

Digo quase porque eu já usei um sistema simplificado de Banco de Dados, o Metakit que foi desenvolvido originalmente para simplificar a aquisição de dados de instrumentos analíticos em laboratório e tem uma API para Tcl e Python.

Pelo que eu entendi a tecnologia de DSMS parece ser bem adequada para um sistema de monitoramento e controle que atue dinamicamente disparando eventos em resposta aos dados de entrada. E a seguir, algumas dúvidas de um "quase" leigo:

O conceito de DSMS depende de alguma ferramenta específica (algum aplicativo) ou é um conceito (um modo de pensar, de modelar) que pode ser implementado com qualquer linguagem?

O DSMS vai depender de algum modelo que gere as respostas (outputs) para as diversas entradas (inputs). Estou raciocinando direito ou estou fazendo confusão?

E esse modelo faria parte do DSMS ou rodaria em uma aplicação independente?

Isso pode ser aplicado a sistemas de monitoramento ambiental, mas também no controle de processos químicos e especialmente em processos bioquímicos. Eu chamo atenção para processos bioquímicos porque os processos que envolvem microorganismos são muito dinâmicos, são sistemas adaptativos. Depois falaremos mais sobre os bioprocessos.

Voltando ao tema "sensor", o pluviômetro poderá ser um tipo de sensor que poderemos usar para construir um sistema protótipo usando DSMS.

Hermano ⇒ ⊠

Olá Markos, em resposta ao seus comentários:

-O conceito de DSMS depende de alguma ferramenta específica (algum aplicativo) ou é um conceito (um modo de pensar, de modelar) que pode ser implementado com qualquer linguagem?

Funciona de forma similar aos SGBDS. Um DSMS é um tipo de software específico. Não utilizei nenhum até o momento, mas na página da wikipedia eu vi alguns exemplos. Existem diversos SGDBS, como o MySQL, o Postgres, o SQLServer e por ai vai. E existem diversos DSMSs, como o SQLStream. Em SGBDs tradicionais, o procedimento é o seguinte. Nós criamos nosso programa que se comunica com o SGBD, através do uso de alguma linguagem (geralmente a SQL). Nessa linguagem são expressas as operações que o software deseja fazer com os dados. Coisas do tipo: salve este registro, atualize, remova, ou recupere os dados.

No caso dos DSMSs, também poderíamos ter um aplicativo que recebe os dados dos sensores e que os repasse em um fluxo contínuo para o DSMS. E da mesma forma que usamos uma linguagem para nos comunicarmos com SGBDS, utilizariamos uma espécie de SQL para fazer consultas ao DSMS (em muitos casos, consultas que são executadas simultaneamente com a inserção do fluxo de dados). A diferença é que essas consultas não são realizadas na totalidade dos dados armazenados no disco, elas são executadas continuamente à medida que os dados chegam.

Vou dar um exemplo. Imagina que eu tenho uma determinada propriadedade de uma amostra chamada propriedade A e eu gostaria de obter o valor médio dessa propriedade para todos os registros. Em um SGDB convencional, eu teria todos os dados armazenados em uma tabela, e quando eu solicitasse a média, uma leitura seria feita em todos os registros (linhas da tabela) e a média seria calculada.

Em DSMS, a coisa funcionaria um pouco diferente. Eu diria de antemão ao sistema, que eu tenho interesse em saber a média da propriedade A. À medida em que os dados estiverem sendo alimentados no sistema, o próprio DSMS vai continuamente calculando à media dos valores inseridos até o momento. Não necessariamente todas as leituras serão armazenadas, mas todas elas serão processadas para nos dar o resultado.

O SGDBs tem um foco grande na persitência (armazenamento não volátil dos dados). Os DSMSs são otimizados para o processamento e análise de um grande volume de dados, quando nem todas as entradas precisam ser armazenadas em disco.

-O DSMS vai depender de algum modelo que gere as respostas (outputs) para as diversas entradas (inputs). Estou raciocinand ou estou fazendo confusão?

Acho que essa seria a parte mais interessante do trabalho. Criar consultas utilizando a linguagem oferecida pelo DSMS que faça a maior parte da análise. A ideia é implementar o máximo possível do modelo de avaliação e/ou tomada de decisão usando a linguagem de consultas do DSMS,pois provavelmente seria o mais eficiente.

Se a análise necessária for muito elaborada (como no caso em que temos a utilização de inteligência artifical), talvez seja necessário repassar os resultados do DSMS de volta a algum sistema que vai executar os dados, de qualquer forma os dados poderiam já estar preprocessados, poupando uma parte do trabalho de análise. No futuro em monto um diagrama mas detalhado para explicar o que eu quero dizer.

-E esse modelo faria parte do DSMS ou rodaria em uma aplicação independente?

Essa resposta se relaciona bastante com a da pergunta anterior.

É dificil dizer sem conhecer a complexidade do modelo ou da análise que se deseja realizar. Em geral, se o modelo for simples, poderíamos ter as operações necessárias implementadas como uma consulta no próprio DSMS. Isso seria bem eficiente, de forma que o modelo seria executado diretamente nos dados a medida que eles são alimentados.

Se o modelo for muito complexo, e não puder ser expresso com a linguagem de consulta do DSMS, então talvez seja melhor ter uma aplicação a parte. Essa aplicação poderia se beneficiar de algum preprocessamento realizado no volume de dados sendo alimentados.

A ideia de usar um sistema desses é ser capaz de escalar de forma eficiente a leitura dos dados, sendo capaz de receber informações de uma grande quantidade (milhares) de sensores ao mesmo tempo.

abç!