Big Data: o tamanho importa! (Parte I)

Tal como outras tecnlogias/técnicas que o antecederam (por exemplo o armazenamento Cloud, a virtualização ou mesmo o Data Warehousing) o Big Data, por enquanto, parece não ser mais do que um termo da moda. Será que passará a ser verdadeiramente útil? Quando, como e porquê?
Para começar pode dizer-se que o Big Data é um conceito que se refere à colecta e análise de toda e qualquer peça de informação proveniente de todos os tipos de fontes.
Se observarmos uma breve cronologia que comece nos centros de informática dos anos 70 e 80, passe pelos sistemas de informação executivos dos anos 90 e, mais recentemente, pelo data warehousing e business intelligence, pode considerar-se que o Big Data como a etapa em curso.
À medida que a sociedade actual vai gerando mais e mais montanhas de dados é necessário encontrar uma forma de ir escavando essas encostas à procura de dados preciosos.
Actualmente, as três maiores áreas de aplicação do Big Data são a análise financeira, o serviço e apoio ao cliente e estudos de marketing. A dimensão das empresas não é aqui relevante dado que o Big Data destina-se a todas as organizações nas quais os dados estão no seu centro de actividade. É minha convicção de que as PMEs poderão retirar vantagens acrescidas da utilização do Big Data nas suas actividades do dia-a-dia.

ODS vs. Data Warehousing

O ODS (Operational Data Store) é um elemento fundamental do data warehouse empresarial proposto por Bill Inmon, para muitos considerado o pai do Data Warehousing. O ODS é uma estrutura de dados normalizada, uma base de dados normal, construída com todas as regras de integridade inerentes ao modelo de dados relacional, e que serve de transição entre o sistema transaccional e os data marts segundo o pensamento de Inmon. 
Na óptica do modelo dimensional – que é a perspectiva que sigo – o ODS é uma estrutura redundante dado que obriga a que seja desenvolvida de raiz mais uma base de dados completa (diferente do sistema transaccional e do DW) cuja única e exclusiva função é a de abastecer de dados o DW. Então ficaríamos com duas bases de dados transaccionais com a mesma função, e cuja duplicação poderia dar azo a enganos na transição para o DW. 
Em questões de segurança da informação o ODS não tem nenhuma vantagem adicional pois como o seu conteúdo é reescrito diariamente – ou em que período seja – a partir dos dados transaccionais, qualquer erro – intencional ou por incompetência – no processo de carregamento do ODS resultará na sua corrupção. 
De qualquer modo, importa ainda salientar que a informação contida no data warehouse é não-volátil, ou seja, só em casos de erro (por exemplo: nomes incorrectos de pessoas) é que há lugar a modificação dos dados armazenados. 
A única forma de corromper um DW é utilizar uma metodologia errada de carregamento: apagar tudo o que já está no DW e carregar tudo de novo em cada momento de refrescamento, o denominado método da “força bruta”. Ora, como esse método não é casuístico e só se deve utilizar uma única vez (no carregamento inicial do DW) este problema não se coloca. É nessa primeira vez que deverão ser desencadeados mecanismos de auditoria que constatarão, ou não, da conformidade da informação do DW com os objectivos delineados no projecto da sua construção. A partir dai apenas é acrescentada informação ou corrigidos erros. 
O próprio data warehouse devido à sua estrutura em forma de estrela tem as regras de integridade necessárias e suficientes para impedir que sejam carregados dados fora de contexto. 
Em tudo o mais a segurança física do DW tem que ser assegurada de acordo com as políticas de Backup e Recovery em vigor no local de instalação do DW. Devido à importância funcional do DW na empresa (órgãos intermédios e superiores de decisão) é de muito bom senso que essas políticas de seguranças sejam devidamente certificadas.

O que não se deve fazer no desenvolvimento de um DW

O que não se deve fazer no desenvolvimento de um DW
Em seguida listam-se algumas das coisas que não se deve fazer no desenvolvimento de um DW. Os elementos não estão ordenados e a importância de cada um deles depende do projecto em causa.

  1. Evitar a excessiva focalização na tecnologia em si mesma. O único aspecto que interessa é os requisitos dos processos de negócio e os objectivos das organizações;
  2. Desenvolver o DW sem ter o apoio de elementos de alto nível da administração da organização, pois devido à sua natureza não transaccional os níveis intermédios e baixos da hierarquia não compreendem a importância do DW;
  3. Nunca ter a veleidade de querer desenvolver todo o DW de uma só vez. O único caminho para o sucesso é a construção de data marts integrados que são disponibilizados ao cliente à medida que ficam prontos;
  4. Despender tempo e trabalho na tarefa inútil de estruturar o DW como se fosse uma base de dados relacional. O objectivo é conseguir uma estrutura especialmente adaptada à análise da informação e que produza interfaces amigáveis;
  5. Nunca ir pelo caminho da complexificação da informação, a simplicidade é o lema do bom profissional;
  6. Evitar a construção de diferentes tabelas de dimensão sobre o mesmo assunto.

Desenho da dimensão Data

Dimensão Temporal

A dimensão data é o exemplo clássico de uma tabela de dimensão empresarial com um tamanho gigantesco dado que está presente em todos os aspectos de um data warehouse. O desenho desta dimensão tem que ser devidamente avaliado de acordo com as utilizações previstas. As utilizações podem dividir-se em fáceis, moderadas e difíceis.

Fáceis

Se nos limitarmos a questões relativas a dias de per si e pusermos de lado os minutos e os segundos, as queries habituais neste caso poderão ser, por exemplo:

1.Quais são as aquisições de serviços feitas num determinado intervalo de tempo?
2. Será que a viagem alfa se realizou neste intervalo de tempo?
3. Os intervalos de tempo poderão ser definidos utilizando conceitos complexos de navegação temporal, incluindo estações do ano, períodos fiscais, dias em número ou feriados.

Para estes três exemplos é necessária uma única coluna do tipo timestamp na tabela de factos. No caso 1) a query terá que ir buscar todas as aquisições com um timestamp registado num intervalo de tempo definido pelo utilizador. Na segunda situação é seleccionado um timestamp de alfa que depois é comparado com um espaço de tempo. Para o último caso tem que obrigatoriamente utilizar-se à dimensão data que está ligada à tabela de factos por intermédio de uma chave estrangeira. Com esta ligação – básica e muito simples – é possível restringir uma data segundo um numeroso critério de descritores.

Em navegações complexas no calendário as queries tornam-se muito mais simples na presença de marcadores de inicio e de fim de período como, por exemplo, “último dia do período de Natal”. Neste caso o campo conterá um valor negativo em todos os dias exceptuando o último dia da época mencionada em que conterá uma anotação positiva. Estas marcas especiais permitem que períodos complexos dos processos de negócio sejam facilmente traduzidos em queries. Como é óbvio a utilização destes descritores implica que já não seja possível utilizar o timestamp da tabela de factos.

Moderadas

Um segundo grupo de queries temporal mais complexo inclui, por exemplo:

1. Quais são as aquisições de serviços na área de engenharia num determinado intervalo de tempo?
2. Qual foi o último trabalho como engenheiro de um funcionário num certo espaço temporal?
3. Qual é o balanço de eficiência de um processo energético num ponto temporal arbitrário?

Neste novo nível de dificuldade continuamos a assumir que os intervalos de tempo são balizados unicamente por dias. Apesar de continuar a ser possível responder aquelas questões utilizando uma única marca temporal, as queries resultantes são demasiado complexas e, consequentemente, pouco eficientes conduzindo a baixas performances das aplicações. Para responder à interrogação 3) é necessário o conjunto de todas as deficiências encontradas para a última ocorrência antes do desejado ponto temporal, o que em SQL tem que ser feito através de um sub-select embebido noutro mais geral. Além de lento é um procedimento que está em geral fora do alcance das ferramentas geradoras de código de SQL.

Para queries temporais de média e alta complexidade as aplicações poderão ser muito beneficiadas se cada linha da tabela de factos tiver associada um par de selos temporais, que indicam o início e o terminus do intervalo temporal em que ocorre uma transacção (caso das tabelas de factos de tipo transaccional) ou uma métrica agregada. A abstracção associada a este conceito é imaginar-se que uma ocorrência é um episódio com um valor constante num intervalo temporal.

A utilização de marcas temporais gémeas podem resolver as seguintes queries complexas:

1. Pesquisar quais são as aquisições em aberto com a data de início no ou antes do termo do intervalo temporal, e com a data final ocorrendo no ou após o início do período.
2. Procurar por uma única transacção com a data inicial no ou antes do fim do espaço temporal, e com a data final no ou após o término do tempo.
3. Pesquisa por uma única transacção com a data de início em ou antes de um ponto qualquer no tempo, e com a data de término em ou depois desse ponto arbitrário.

A maioria, se não todas, das queries temporais mais complexas podem ser resolvidas utilizando a cláusula between, dado que a sintaxe “value between two fields” é perfeitamente exequível. A maior desvantagem da utilização de marcas gémeas temporais é a necessidade de visitar duas vezes cada linha da tabela de factos: uma para registar a linha, e outra quando é possível fechar a data da transacção ou agregação. A ocorrência de valores not null na data de fim tem que ser devidamente acautelada para minimizar os erros no processamento da cláusula between: com o registo de uma data virtual localizada num futuro longínquo, ou utilizando uma sintaxe mais complexa no SQL.

Difíceis

Para resolver as situações mais complexas, como o registo de minutos e segundos, pode considerar-se a inclusão de quarto timestamps para cada linha da tabela de factos. Duas são campos sql-date vulgares que registam o detalhe pretendido, e as restantes são dias de calendário funcionando como chaves estrangeiras da dimensão data. Assim, é possível responder a pedidos temporais muito precisos, mas também a questões mais abrangentes como “Quais são as aquisições feitas no Dia de Natal?”.

As hierarquias nas dimensões


Caso típico da dimensão Cliente

Numa dimensão do tipo cliente podem coexistir várias hierarquias independentes entre si. A hierarquia mais evidente, e natural, é a geográfica. A organização de níveis em Portugal é freguesia, concelho e distrito. Mas, outras hierarquias existem: a do código postal que tem uma estrutura inteligente embutida; a das NUTS (Nomenclaturas de Unidades Territoriais para Fins Estatísticos – geocódigo desenvolvido pela União Europeia para referenciar as divisões administrativas dos estados membros para fins estatísticos).

A organização estrutural interna de um cliente (no caso de ser uma empresa) é outro tipo de hierarquia que pode estar presente na dimensão, ou seja, a tabela tem que incorporar da melhor forma possível a organização empresarial do cliente. Em algumas situações a definição da equipa de vendas dá origem a uma hierarquia adicional e independente das anteriores.

Uma hierarquia em condições muito particulares, quando tem uma estrutura longa e complexa, e relativamente estável, pode transformar-se numa dimensão independente. Quando o esquema em estrela tem poucas dimensões (menos de vinte) e a hierarquia é complexa pode justificar-se a criação de uma dimensão adicional dado que a exploração dos dados fica mais facilitada. Num esquema complexo (mais de vinte tabelas) a decisão mais acertada é manter as hierarquias num único local.

Nos casos em que as hierarquias de uma dimensão são divididas em tabelas independentes há quem desenhe uma tabela de ligação entre as hierarquias que contém unicamente as chaves primárias das dimensões. Mas, na realidade esse passo é desnecessário pois a associação entre as dimensões faz-se, como habitualmente, através da tabela de factos. Nunca nos devemos esquecer de que as tabelas de factos têm como função principal correlacionar as dimensões, que por natureza e definição são independentes umas das outras.

Processos de negócio: software

Um processo de negócio é um conjunto de actividades que utilizam pelo menos um tipo de input, e que resulta num output com relevância económica, social ou técnica para uma organização. As actividades que constituem um processo desenvolvem-se numa determinada ordem ao longo do tempo de dos espaços organizacionais.

A análise de processos de negócio é um trabalho complexo que poderá ser bastante facilitado quando se utilizam aplicações informáticas apropriadas, como é o caso, por exemplo, do BizAgi Process Modeler que tem ainda a vantagem de ser um produto de livre utilização.

Qual a melhor definição para Data Marts?

Conjunto de dados desenvolvidos com suporte num esquema em estrela e que pertencem à área de publicação do data warehouse.

No passado os data marts eram concebidos como uma forma de apresentar dados unicamente agregados, i.e., sobre os quais era aplicada uma aritmética qualquer, mas isso produzia aplicações muito rígidas que conseguiam responder apenas a um conjunto muito limitado de questões.

Actualmente essa utilização caiu em desuso e os data marts são presentemente estruturas muito flexíveis, que de preferência incorporam os dados mais atómicos que se conseguem extrair de um sistema operacional, e que são apresentados ao utilizador na forma de um esquema em estrela.

O que é o data warehousing?

As empresas e outras organizações precisam de desenhar estratégias de desenvolvimento e inovação de modo a estabelecerem políticas mais flexíveis, que consigam tirar o máximo proveito das oportunidades que surgem no mercado a todos os momentos.

O caminho para o sucesso de uma organização passa pela definição das estratégias adequadas e, como tal, pela utilização de sistemas de informação especializados e especialmente desenhados para servirem de suporte às decisões dos gestores e outros decisores.

Neste contexto os sistemas de data warehousing assumem um papel vital no planeamento das actividades empresariais, pois devido ao seu formato especial produzem aplicações optimizadas que são um auxiliar precioso no momento da escolha da melhor opção de entre o leque das alternativas possíveis.

Mas, o que são de facto os sistemas de armazenamento de dados?

São aplicações construídas de raiz com o único propósito de servirem como base, ou como um instrumento de apoio, à análise dos dados sobre os quais uma organização desenvolve as suas actividades. Não poderá dizer-se o mesmo, por exemplo, de uma base de dados tradicional? Que também é um sistema que permite tomar decisões? Claro que sim, senão não seriam uma das aplicações informáticas mais utilizadas na actualidade. Nenhum gestor, ou apenas um mau gestor, iria desperdiçar recursos da sua organização para adquirir software inútil. Devido às suas características estruturais as bases de dados têm uma grande capacidade em manter íntegros, e actualizados, grandes conjuntos de dados; sujeitos no entanto a alguns constrangimentos, sobretudo na área da usabilidade. De facto, e desde que construídas com suporte em modelos de dados robustos, a integridade e a baixa redundância dos dados são os pontos fortes de uma base de dados. Mas será que permitem tomar as melhores decisões?

As capacidades que as bases de dados têm em suportarem robustos sistemas de informação tem como contrapartida, e em consequência das regras semânticas que a suportam, uma estrutura muito complexa, composta normalmente por largas dezenas, e em muitos casos centenas, de tabelas e, sobretudo, ou acrescendo ainda a essa complexidade, um largo número de associações entre essas tabelas. Ora, a combinação entre a quantidade de tabelas e a forma como se relacionam entre si produz um autêntico quebra-cabeças, indecifrável, ou só muito dificilmente compreensível, pelos utilizadores. Bem, nem por todos os utilizadores, por vezes, essa estrutura complexa ainda consegue ser perceptível aos profissionais que a desenharam e por aqueles que têm a árdua tarefa de assegurarem a sua manutenção diária. Agora, quem não a consegue compreender, e muito menos utilizar de um modo eficiente são as pessoas que mais precisam desses dados para promover o desenvolvimento das organizações: os gestores.