Para problemas, relacionados com datas ou horas, como consultas sobre dados históricos, o processamento de eventos complexos, CEP, pode ser muito útil, sugere Greg Young em uma recente apresentação.
Greg descreveu o processamento de eventos como um método de análise de fluxos dos dados, sobre coisas que já aconteceram, podendo assim derivar uma conclusão sobre eles. Um exemplo é o das consultas temporais correlacionadas, usadas quando queremos correlacionar fatos que aconteceram em diferentes épocas ou horários, como por exemplo, encontrar usuários que disseram a palavra "presente" no mesmo minuto que disseram a palavra "aniversário" na linha de tempo do twitter ou encontrar diferentes resultados, de um determinado tratamento clínico, de pacientes durante um período de tempo.
Para criar as consultas, Greg utilizou uma linguagem de consulta implementada em JavaScript que trabalha no topo dos fluxos dos eventos. Consultas escritas em JavaScript, nos provem de meios necessários para que um navegador possa ser utilizado tanto para escrevê-las como também para depurá-las.
Esta linguagem de consulta está incluída no Event Store, um tipo de banco de dados NoSQL construído de acordo com os conceitos de uma fonte de eventos. Em uma fonte de eventos, em vez de se representar o estado do evento diretamente, o estado é representado como uma série de fatos, que somente algumas vezes tenham ocorrido em um específico ponto do tempo. O armazenamento das informações desta maneira, é um meio de garantir que nenhuma informação será perdida, sendo que cada mudança de estado é armazenado e não somente o estado corrente.
O armazenamento de fatos ou eventos cria uma espécie de máquina do tempo, nos permitindo consultar coisas do passado e ver como eram historicamente, por exemplo, criar um relatório hoje e executá-lo como se estivéssemos executando-o há um mês atrás.
Um outro caso de uso, seria o de análises de previsões para estimar a capacidade de previsibilidade; execução de um modelo de previsão de um mês anterior ao atual, comparando o resultado obtido com o resultado atual.
O Event Store, é um projeto de código fonte aberto hospedado no github, licenciado sob a cláusula 3 da licença BSD, com sua primeira versão disponível em Setembro de 2012.
Greg Young, é o arquiteto chefe do Event Store, e um consultor independente famoso por ter definido os termos do CQRS.