• Nenhum resultado encontrado

2.3 A Transição do Online para o Offline

2.3.5 Protocolos de Replicação

Independentemente da forma como é feita a cópia da informação presente na base de dados primária, uma vez que a informação se encontra espalhada por várias localizações distintas, não sendo, de todo, imutável, é necessário estipular métodos para gerir e consolidar as modificações feitas entre os vários nós da rede, propagando a informação de forma a garantir a (eventual) con- sistência dos dados.

As bases de dados replicadas são, de acordo com Alexander Stage[Sta05], um conjunto de bases de dados que armazenam cópias da mesma informação. De forma a existir um fluxo de dados que mantenha a consistência dessa mesma informação, poderão ser utilizadas diferentes arquiteturas que evidenciam características diferentes no que diz respeito, nomeadamente, ao seu sincronismo e à topologia que cada nó presente na rede adota.

A utilização de técnicas síncronas, ou gananciosas (eager) implica a propagação instantânea das atualizações dos dados para todas as réplicas numa só transação mantendo-as sempre atuali- zadas e num estado consistente [GHOS96]. Este tipo de implementação é bastante difícil de ser concretizada de uma forma eficiente, levantando problemas ao nível da performance e dos tempos de resposta para cada transação, não sendo de todo adequado a ambientes móveis. Esta abordagem contrasta com a abordagem ociosa (lazy) que permite que as modificações se propaguem de forma assíncrona para todas as réplicas. Quando é utilizado este tipo de protocolo, uma atualização é reproduzida nos restantes nós apenas depois de ter sido aplicada na réplica que a iniciou [CR05]. É, por vezes, utilizada uma abordagem que coaduna ambas as técnicas de forma a aumentar a performance de interrogação de um sistema que utilize uma topologia síncrona.

No que diz respeito à estruturação da rede, os protocolos de replicação subdividem-se tendo em conta os nós a partir dos quais são efetuadas as atualizações aos dados, ou seja, se estas são feitas apenas num só nó, ou se a atualização pode ser feita em qualquer nó.

2.3.5.1 Abordagem Single Master

A arquitetura mais simples e pragmática é a que implica a existência de uma base de dados que funciona como a source of truth[Sta05]. Nesta base de dados, considerada a réplica principal, a cópia mestre, é que são feitas e propagadas todas as modificações que ocorrem no sistema para as denominadas réplicas secundárias, evitando-se, assim, conflitos no que diz respeito à alteração concorrente de dados por parte de várias cópias.

Esta abordagem, denominada Single Master, ou Primary Copy, poderá ainda ser divida tendo em conta a forma como é feita a propagação da informação ao longo do tempo. Caso seja um

processo síncrono, conhecido por Eager Primary Copy Replication [WPS+00], a operação de modificação dos dados é feita para todas as réplicas de uma só vez, sendo a cópia mestre a respon- sável por se assegurar que as restantes recebem com sucesso os dados e, se necessário, lidar com conflitos. Este tipo de processo não necessita de um mecanismo de coordenação, uma vez que existe apenas um nó responsável pela propagação de informação, tentando, no entanto, assegurar a atomicidade do protocolo, garantindo que este é bem sucedido apenas se todas as transações que o compõem forem concluídas com sucesso (all-or-nothing). De forma a que esta propriedade seja posta em prática é necessária a implementação de protocolos de atomic-commitment, como o Two-Phase Commit Protocol(2PC).

Este protocolo visa coordenar todas as réplicas de acordo com a decisão de aceitar ou reverter a transação. Para que uma réplica possa aceitar uma transação deve ser capaz de a armazenar localmente e, assim que possível, enviar, então, uma mensagem a informar a cópia mestre de que concorda com a mesma. No caso de ocorrer uma falha, este mecanismo não permite que esta seja evitada, mas permite saber a origem da mesma, identificado o nó no qual falhou a aceitação da transação. Tal como Sang Hyuk Son [Son88] documenta, existem ainda outros mecanismos que facilitam esta fase de concordância entre todas as réplicas: o protocolo de votação Quorum Consensus permite que apenas uma maioria das réplicas estejam operacionais para que o voto seja bem sucedido, na medida em que apenas uma maioria dos votos é necessária para dar como terminado o processo, ao contrário do que acontece no 2PC; existem ainda outras variantes deste protocolo que envolvem uma votação com pesos diferentes para cada réplica, ou métodos em que cada conjunto de dados está associado a uma cópia (Primary Copy), para a qual as atualizações que dizem respeito a este conjunto de dados são em primeiro lugar direcionadas.

Este tipo de abordagem síncrona é tradicionalmente usada para garantir a existência de cópias de segurança atualizadas e que podem substituir a base de dados principal caso esta falhe.

Por outro lado, poderá ser seguida uma abordagem que se baseie numa topologia assíncrona, também chamada de Lazy Primary Copy Replication. Neste caso, a atualização de informação feita entre a cópia mestre e as cópias escravas pode ser concluída antes de existir qualquer coorde- nação entre réplicas. Num passo posterior existe uma fase denominada de Agreement Coordina- tion Phase, na qual todas as cópias atingem um estado consistente, sendo da responsabilidade da cópia primária a coordenação da ordem das várias transações provenientes das diferentes réplicas e consequente resolução de possíveis conflitos.

Figura 2.6: Replicação Cópia Primária Síncrona [Sta05]

Figura 2.7: Replicação Cópia Primária Assín- crona [Sta05]

2.3.5.2 Abordagem Multi Master

A exigência de que todas as atualizações dos dados sejam concluídas num só nó da rede é impraticável em algumas situações, nomeadamente no que diz respeito à construção de um sistema como o proposto nesta dissertação. A abordagem Multi Master afigura-se como uma alternativa viável, uma vez que consente a modificação de informação por parte das várias réplicas de uma forma independente entre elas, mas tornando o processo de coordenação mais complexo.

A transmissão de informação pode, de igual forma, ser inserida em dois contextos separados, conforme o sincronismo do processo de troca de informação entre réplicas. Caso a propagação seja feita de forma síncrona, Eager Update Everywhere Replication, existem dois métodos para garantir que esta é bem sucedida: os pedidos de atualização podem ser feitos de forma serializada por todas as réplicas, ou, de forma concorrente.

Ao contrário do seu homónimo em que existe apenas uma fase de coordenação final, neste caso, para lidar com a concorrência do processo, existe a necessidade de coordenar as várias ré- plicas numa fase denominada Server Coordination phase. Nesta, são frequentemente utilizados métodos de locking que apenas permitem que a transação seja levada a cabo, uma vez que a cópia em que estamos a trabalhar envie um pedido de bloqueio, para os dados que pretendemos modi- ficar, que seja aceite pelas restantes. Este tipo de procedimento é chamado Distributed Locking [WPS+00].

No caso da propagação assíncrona, cada nó poderá atualizar a informação sem necessitar de aguardar por uma coordenação entre réplicas. Algum tempo após a transação, as atualizações são propagadas para as restantes cópias, almejando-se atingir um estado de consistência entre a informação presente em cada uma. Este processo, denominado por reconciliação, pode revelar-se bastante complexo caso tenham existido transações concorrentes aos mesmos dados, tornando pre- mente a existência de mecanismos de resolução de conflitos que permitam chegar a um consenso relativamente às modificações feitas.

Figura 2.8: Replicação Multi Master Síncrona [Sta05]

Figura 2.9: Replicação Multi Master Assín- crona [Sta05]

2.3.6 Resolução de conflitos

A criação, modificação e eliminação de dados é uma necessidade premente nos vários nós que compõem uma rede de bases de dados distribuídas no que diz respeito a sistemas que se asse- melham ao descrito nesta dissertação. A utilização de um sistema de gestão comercial implica,

constantemente, a necessidade de serem atualizados dados relativos a clientes, artigos e documen- tos, implicando, de igual modo, a criação e modificação de movimentos de entrada e saída de stock.

A resolução de conflitos assume, por isso, um papel determinante na verificação e manutenção da consistência e integridade dos dados armazenados nos vários dispositivos, impedindo perdas de informação e o surgimento de incongruências que levem a problemas no normal funcionamento do negócio. Serão analisadas, de seguida, algumas técnicas que visam lidar com estes mesmos conflitos, seguindo a categorização proposta por Mohammad Faiz e Udai Shanker [FS16]:

• Sincronização Compreensiva: A sincronização é feita através da cópia integral de toda a informação armazenada num dispositivo, para outro, de forma a que seja feita uma com- paração local. Apesar de ser extremamente ineficiente, tem a vantagem de ser fácil de implementar e de garantir que todas as mudanças são tidas em conta e aplicadas.

• Sincronização baseada em Status Flags: Cada cliente mantém um conjunto de Flags para sinalizar mudanças num certo conjunto de dados, sendo apenas estes transferidos para as restantes réplicas. Esta tipologia serviu de inspiração para a criação do protocolo SyncML [LL12] que se baseia na troca de mensagens em formato XML. O protocolo supramencio- nado encontra-se agora enquadrado no âmbito da iniciativa OMA - Open Mobile Alliance9. • Sincronização baseada em TimeStamps: O método acima mencionado exige a criação de flagspara guardar informação extra que indique quais os clientes com quem já foi efetu- ada a sincronização, revelando-se, por isso, pouco eficiente. A sincronização baseada em timestamps, por outro lado, apenas necessita de manter informação sobre a última vez em que os dados foram modificados e a última vez em que foi realizada uma sincronização. Este tipo de implementação é, normalmente, row-based, exigindo a manutenção de um es- tado para cada linha de uma tabela de dados. Esta solução tende, porém, a não se revelar ideal, uma vez que dois utilizadores poderão efetuar mudanças a uma mesma linha da tabela, mas a atributos diferentes. O utilizador que sincronizasse as mudanças primeiro vê-las-ia propagadas pelas restantes réplicas, no entanto o segundo veria as suas descartadas. Tendo em conta esta limitação, Divyashikha Sethia [SMC+14] preconiza a criação de um proto- colo de sincronização baseado em timestamps cell-based, ou seja, para cada tabela de dados é criada uma tabela adicional que segue a mesma estrutura, mantendo a mesma chave pri- mária, mas substituindo os atributos por timestamps. Este método visa, sobretudo, a redução extrema da quantidade de informação transferida entre os nós da rede.

• Sincronização Matemática: Mecanismo que visa a utilização de propriedades/funções ma- temáticas para permitir que os dados sejam sincronizados corretamente.

• Sincronização SAMD: A sincronização baseada no protocolo SAMD [CCP+10] é uma va- riação do método acima descrito e visa ser invariante às tecnologias utilizadas para imple- mentar e manipular as bases de dados, seja no lado do servidor, seja no lado do cliente. A 9http://openmobilealliance.org/

solução passa pela utilização de uma função de hashing10que é aplicada aos valores presen- tes em cada linha de uma tabela de dados. O resultado da aplicação desta função é guardado numa tabela extra denominada digest table. Este processo ocorre em cada nó da rede, de forma a que possam ser detetadas diferenças entre a informação presente em cada um: os dados em duas linhas de uma mesma tabela, em diferentes nós, são diferentes se o seu valor hashedé diferente.

• Sincronização baseada em logs: A utilização de transaction logs permite a gravação de cada modificação feita numa base de dados ao nível da transação visando garantir o cumprimento das propriedades ACID bem como proporcionar a possibilidade de recuperar de falhas de sistema. A sincronização é feita através da troca destes ficheiros, tendo, cada réplica, que replicar cada transação.

2.3.7 Tecnologias

A utilização de técnicas de replicação e sincronização é uma necessidade que já pode ser suprida recorrendo a várias soluções presentes no mercado. Foi, por isso, feito um breve levanta- mento de tecnologias que pretendem apresentar uma resposta neste âmbito, bem como conciliá-lo com as potencialidades das aplicações móveis, tal como é pretendido no âmbito desta dissertação. • Firebase11: Ferramenta da Google que permite implementar uma rede de bases de dados

distribuídas para dispositivos móveis e plataformas web. É cloud-based e não relacional, sendo os dados guardados em formato JSON.

• CouchBase12: Mais concretamente a solução Couchbase Mobile, procura direcionar o seu

foco especialmente para os dispositivos móveis oferecendo a possibilidade de criar aplica- ções móveis e web de uma forma "rápida, segura e poderosa", oferecendo uma base de dados "completamente integrada, sincronização em tempo real, segurança ao nível empresarial e um servidor facilmente escalável".

• CouchDB13: A solução da Apache foca-se em proporcionar um processo de replicação e

sincronização para arquiteturas "Multi-Master, que podem escalar desde contextos Big Data até mobile", através da utilização da sua API. O protocolo que implementa é já estendido por um conjunto de outras soluções nomeadamente o PouchDB e o Cloudant.

• SymmetricDS14: Software open-source baseado na linguagem de programação Java que pro-

cura oferecer um protocolo que suporte múltiplas arquiteturas de replicação, bem como ope- rações entre diferentes plataformas. Visa ser facilmente escalável e oferecer uma solução que permite replicar informação de forma assíncrona.

10Uma função de hash mapeia dados de comprimento variável para dados de comprimento fixo. 11https://firebase.google.com/

12https://www.couchbase.com/ 13http://couchdb.apache.org/ 14https://www.symmetricds.org/

2.4

Gestão de Stocks

A utilização de informação dispersa por vários nós na rede de base de dados distribuídas levanta, conforme descrito na secção anterior, problemas ao nível da consistência e integridade dos dados. A aplicação de mecanismos de sincronização e resolução de conflitos, fruto das várias modificações feitas em cada uma das réplicas, visa responder a estes problemas, tentando que seja atingido um estado de eventual consistência entre todas. Contudo, este tipo de mecanismos não tem em conta algumas regras de negócio fulcrais, nomeadamente no que concerne à gestão e modificação de valores que dizem respeito aos stocks dos vários produtos.

Caso um vendedor opte por utilizar o software de gestão numa situação de inacessibilidade à rede, de modo a processar uma compra, não possui informação em tempo real sobre o atual número de cópias do(s) artigo(s) que deseja vender disponíveis em stock. É possível, no cenário supracitado, que a informação que se encontra no seu dispositivo, obtida após a última sincroniza- ção, já tenha sido alterada numa outra réplica, iludindo o vendedor no que diz respeito ao número de unidades que pode realmente comercializar.

De forma a tentar mitigar as consequências de tais situações, pretende-se efetuar um estudo exploratório, no âmbito do Data Mining, relativo a mecanismos preditivos que permitam, tendo em conta informação histórica de vendas passadas, estimar se uma venda poderá, ou não, ocorrer sem que esta implique violações de stock. O objetivo final será anexar, se possível, um novo módulo à restante solução até então projetada, que complemente o mecanismo de sincronização e dê uma resposta a este problema.

2.4.1 O Data Mining

Data Miningpode ser definido como o processo que envolve a análise de grandes quantidades de dados, com o intuito de encontrar relações entre os mesmos e de os sumariar de diferentes formas que sejam compreensíveis e úteis ao analista [dS15].

Apesar de não se tratar de uma área recente no âmbito da computação, apenas nos últimos anos ganhou uma preponderância especial graças ao aparecimento e crescimento do conceito de Big Data que permitiu o acesso a volumes de informação consideráveis e mais ricos ao nível da variedade do conteúdo. Dependendo do intuito da análise a ser feita, as técnicas de Data Miningvisam a criação de modelos estatísticos que podem ter um carácter puramente descritivo, identificando propriedades que caracterizam os dados analisados e procurando correlações entre os mesmos, ou preditivo, na medida em que são utilizados valores históricos para procurar prever tendências e estimar valores desconhecidos, ou futuros, de uma variável de interesse.

No âmbito da mineração de dados, podem ainda ser aplicadas diversas técnicas de Machine Learning. Este conceito diz respeito ao domínio da ciência que explora a capacidade de uma máquina de compreender informação e aprender com base neste conhecimento sem que seja ex- plicitamente programada para o fazer. Dentro deste contexto de aprendizagem podemos encontrar duas abordagens distintas, distinguindo se esta é feita de uma forma supervisionada ou não.

No caso da aprendizagem não supervisionada (Unsupervised Learning) a máquina tem como objetivo identificar a estrutura dos dados e as relações que entre estes existem partindo de um conjunto de dados de entrada sobre o qual não é dada qualquer informação dos valores de saída esperados. Uma das abordagens mais importantes neste contexto é denominada de Clustering e implica a formação de clusters15 de informação, tendo como base uma característica específica dos dados de entrada. Cada valor novo é depois incorporado ao cluster mais apropriado para as suas características.

Em contrapartida, na aprendizagem supervisionada, o conjunto de dados, que é considerado o input do problema, já se encontra previamente etiquetado como pertencendo a uma certa classe ou com um output respetivo. A máquina tem como objetivo criar uma função que correlacione ambos tanto quanto possível para que seja capaz de generalizar a abordagem para novos dados de entrada cuja saída é desconhecida.

Os métodos de Data Mining de carácter preditivo serão o foco desta dissertação e podem ser enquadrados em dois tipos, consoante o tipo de previsão que desejamos fazer. Por um lado, os problemas de regressão visam a criação de uma função matemática que permita inferir o valor numérico de uma determinada variável a partir de um conjunto de atributos de input. A função obtida deve, posteriormente, ser capaz de emitir novas previsões para outros valores de entrada desconhecidos. Numa outra perspetiva, surgem os problemas de classificação nos quais são uti- lizados dados previamente rotulados como pertencentes a uma determinada classe como um con- junto inicial, para a construção de um modelo preditivo que permitirá inferir a que classe pertence um qualquer novo item que desejemos classificar. O output esperado é meramente categórico, envolvendo respostas como "Azul", "Verde", ou "Doente"e "Não Doente".

2.4.1.1 Métodos de Classificação

Os métodos de classificação podem ser agrupados consoante a abordagem tomada em cinco categorias:

• Classificação baseada em probabilidades: Baseia-se num modelo probabilístico que permite obter a probabilidade de uma instância pertencer a uma determinada classe. A base teórica desta tipologia de classificação é a aplicação do teorema de Bayes que segue a equação:

P(y|X ) = P(X |y) ∗ P(y)) P(X )

Os métodos mais estudados que se baseiam nesta abordagem são as Redes de Bayes e o algoritmo Naïve Bayes [PD11].

• Classificação baseada na distância: Uma outra abordagem para prever a classe a que um objeto poderá pertencer baseia-se em medidas de similaridade que comparam este objeto com os restantes, nomeadamente através do cálculo da distância. Normalmente a fórmula utilizada é a euclidiana, no entanto existem outras alternativas conhecidas:

– Distância de Hamming – Distância de Manhattan – Distância de Minkowski

. O algoritmo K-NN, ou K-Nearest Neighbors é um dos algoritmos de machine learning mais simples que aplica esta técnica. Assumindo que cada instância dos dados pode ser representada como um ponto no espaço, este limita-se a procurar os K exemplos de treino mais próximos, da instância que queremos classificar, neste mesmo espaço. O objeto é então classificado de acordo com a maioria dos votos dos seus vizinhos [Mit97,Phy09].

Figura 2.10: K-Nearest Neighbours [Car16]

• Classificação utilizando árvores de decisão: Uma árvore de decisão segue uma estratégia de dividir e conquistar que consiste na divisão recursiva de um problema complexo em múltiplos sub-problemas. As soluções destes sub-problemas podem depois ser agrupadas para apresentar uma resposta para o problema mais complexo [Car16]. A geração destas árvores de decisão pode ser feita utilizando vários algoritmos, nomeadamente ID3 e a sua extensão, o C4.5 [Kot07].

Figura 2.11: Exemplo de geração de uma árvore de decisão relativa à probabilidade de jogar ou não ténis16

• Redes Neuronais: O elemento mais básico do nosso cérebro é o neurónio. Estas células permitem que tenhamos a capacidade de nos lembrarmos, de pensarmos e de atuarmos e

Documentos relacionados