• Nenhum resultado encontrado

Análise e Integração de Infraestruturas para Centro de Dados

N/A
N/A
Protected

Academic year: 2021

Share "Análise e Integração de Infraestruturas para Centro de Dados"

Copied!
194
0
0

Texto

(1)

FACULDADE DE CI ˆENCIAS DEPARTAMENTO DE INFORM ´ATICA

An´alise e Integrac¸˜ao de Infraestruturas para Centro de Dados

Ivo Miguel Ferreira da Silva

Mestrado em Engenharia Inform´atica

Especializac¸˜ao em Arquitetura, Sistemas e Redes de Computadores

Dissertac¸˜ao orientada por:

Prof. Doutor Carlos Jorge da Conceic¸˜ao Teixeira

Ana Cristina Branco Guimar˜aes Maia

(2)
(3)

Agradec¸o ao orientador da faculdade, `a co-orientadora da empresa e `a equipa que ini-ciou este projeto todo o aux´ılio prestado durante o seu desenvolvimento.

(4)
(5)

O projeto de An´alise e Integrac¸˜ao de Infraestruturas para Centro de Dados consiste na reuni˜ao e uniformizac¸˜ao de dados recolhidos de bases de dados de diversos provedo-res. A variedade de bases de dados deve-se `a diversidade de sistemas em produc¸˜ao que suportam os servic¸os prestados por uma multinacional de telecomunicac¸˜oes. Este projeto resulta da procura por uma soluc¸˜ao inovadora que possa servir os novos servic¸os na ´area das telecomunicac¸˜oes nos pr´oximos anos e permita substituir os sistemas atuais que est˜ao limitados a cada tecnologia de base de dados. Os dados reunidos por este sistema s˜ao pu-blicados num intermedi´ario Apache Kafka e persistidos com recurso a tecnologia Apache Hadoop para aumentar a disponibilidade dos dados e possibilitar a realizac¸˜ao de an´alises posteriores. Este relat´orio descreve a An´alise, o Desenho, o Desenvolvimento e os Testes aos conectores para bases de dados SQL Server e MySQL que se baseiam num conector Oracle previamente desenvolvido para funcionar com o sistema descrito acima. Com o trabalho descrito neste documento, o sistema realiza o seu prop´osito com bases de dados Oracle, SQL Server e MySQL ficando preparado para funcionar tamb´em com outros co-nectores de bases de dados caso se considere necess´ario. Este sistema est´a preparado para permitir a futura introduc¸˜ao de sistemas inovadores de an´alise posterior de dados.

Palavras-chave: Captura de dados estruturados, Convers˜ao de dados, Integrac¸˜ao de dados, Envio de dados, Bases de Dados.

(6)

Abstract

The project Analysis and Integration of Infrastructures for Datacenter is the reunion and standardization of databases data from different companies. The diversity of databases comes from the kind of prodution systems that backing the telecomunications multina-tional services. This project remains from the search for new solutions to furnish future services developed in the next years in telecomunications area and to replace the running systems that are limited to each database company. The data gathered by this system is published in an intermediary message broker called Apache Kafka and is persisted in Apache Hadoop modules and related projects to increase the data availability and allow posterior analysis. This report describes the analysis, design, development and tests to database conectors for SQL Server and MySQL. These conectors grounds on previous developed Oracle conector to work with the above described system. Using the work de-scribed in this document, the system fulfils your objective and remains adaptable to work with other database conectors in addition to Oracle, SQL Server and MySQL databases, if necessary. This system is already prepared to make data available to new data mining systems.

Keywords: Change Data Capture, Data Conversion and Standardization, Data Integration, Data transmission, Databases.

(7)

Lista de Figuras ix

Lista de Tabelas xii

Gloss´ario xiii 1 Introduc¸˜ao 1 1.1 Enquadramento . . . 1 1.2 Motivac¸˜ao . . . 1 1.2.1 Da empresa de telecomunicac¸˜oes . . . 2 1.2.2 Da consultora . . . 2 1.2.3 Da equipa . . . 2 1.2.4 Individuais . . . 3 1.3 Objectivos . . . 3 1.3.1 Da empresa de telecomunicac¸˜oes . . . 3 1.3.2 Da consultora . . . 4 1.3.3 Da equipa . . . 5 1.3.4 Individuais . . . 5 1.4 Contribuic¸˜oes do autor . . . 7 1.5 Estrutura do documento . . . 8 2 Estado da arte 11 2.1 Conector SQL Server . . . 11 2.1.1 Funcionalidades inclu´ıdas . . . 11 2.1.2 Vers˜oes empresariais . . . 11

2.1.3 Vers˜oes empresariais de c´odigo aberto . . . 12

2.1.4 Vers˜oes particulares de c´odigo aberto . . . 12

2.2 Conector MySQL . . . 14

2.2.1 Funcionalidades inclu´ıdas . . . 14

2.2.2 Vers˜oes empresariais . . . 15

2.2.3 Vers˜oes empresariais de c´odigo aberto . . . 15

2.2.4 Vers˜oes particulares de c´odigo aberto . . . 15 v

(8)

2.3 Discuss˜ao . . . 17

3 An´alise 19 3.1 Descric¸˜ao do projeto . . . 19

3.2 Requisitos detalhados . . . 20

3.2.1 Requisitos funcionais . . . 20

3.2.2 Requisitos n˜ao funcionais . . . 21

3.2.3 Requisitos inversos . . . 22

3.3 Casos de uso . . . 22

3.4 Diagramas de fluxos de dados . . . 28

3.5 Diagrama de transic¸˜ao de estados dos conectores . . . 31

3.6 Diagramas de atividades . . . 31 3.7 Diagramas de sequˆencia . . . 35 3.8 Diagramas de classes . . . 35 4 Planeamento 43 4.1 Recursos . . . 43 4.1.1 Recursos humanos . . . 43 4.1.2 Tecnologias envolvidas . . . 44 4.2 Estimac¸˜ao . . . 45 4.2.1 Do esforc¸o dispon´ıvel . . . 45

4.2.2 Modelos emp´ıricos (COCOMO) . . . 45

4.2.3 Dados hist´oricos . . . 47

4.3 Processo de desenvolvimento de software . . . 47

4.4 Planeamento detalhado do projeto . . . 47

4.4.1 Decomposic¸˜ao das tarefas . . . 47

4.4.2 Afetac¸˜ao das tarefas . . . 47

4.4.3 Diagrama Gantt . . . 48

4.4.4 Diagrama da alocac¸˜ao de recursos . . . 48

4.5 An´alise cr´ıtica . . . 48 4.5.1 Viabilidade . . . 48 4.5.2 Soluc¸˜oes . . . 48 5 Implementac¸˜ao 51 5.1 Especificac¸˜ao de procedimentos . . . 51 5.2 Organizac¸˜ao do conector . . . 52 5.2.1 Conector Oracle . . . 52 5.2.2 Conector SQL Server . . . 52 5.2.3 Conector MySQL . . . 53 5.3 Funcionalidades do sistema . . . 53 vi

(9)

6 Testes 57

6.1 Plano de testes . . . 57

6.1.1 Extens˜ao dos testes unit´arios . . . 57

6.1.2 Testes unit´arios ao conector SQL Server . . . 57

6.1.3 Testes unit´arios ao conector MySQL . . . 60

6.1.4 Extens˜ao dos testes de integrac¸˜ao . . . 61

6.1.5 Testes de integrac¸˜ao . . . 62

6.2 Conclus˜oes dos testes . . . 62

6.2.1 Cobertura total . . . 62

6.2.2 Erros detetados no conector SQL Server . . . 62

6.2.3 Erros detetados no conector MySQL . . . 64

6.3 Discuss˜ao . . . 65

7 Conclus˜oes 67 7.1 Decomposic¸˜ao, atribuic¸˜ao e calendarizac¸˜ao das tarefas realizadas . . . 67

7.1.1 Medidas do projeto . . . 67

7.2 Planeado vs. executado . . . 68

7.3 Avaliac¸˜ao post-mortem . . . 68

7.3.1 An´alise global do esforc¸o despendido . . . 68

7.3.2 An´alise global do decurso do projeto . . . 69

7.4 S´ıntese cr´ıtica do projeto . . . 69

7.5 Conclus˜ao . . . 70

8 Futuros desenvolvimentos 73 Bibliografia 84 9 Apˆendices 85 .1 Plano de Testes . . . 86

.1.1 Testes unit´arios ao conector SQL Server . . . 86

.1.2 Testes unit´arios ao conector MySQL . . . 142

.1.3 Testes de integrac¸˜ao . . . 168

.2 Exemplos de tabelas de produc¸˜ao . . . 174

.3 Diagrama Gantt . . . 174

(10)
(11)

3.1 Diagrama de Fluxos de Dados do Sistema n´ıvel 0 . . . 28

3.2 Diagrama de Fluxos de Dados do Sistema n´ıvel 1 . . . 29

3.3 Diagrama de Fluxos de Dados da BD Oracle n´ıvel 2 . . . 30

3.4 Diagrama de Fluxos de Dados da BD SQL Server n´ıvel 2 . . . 32

3.5 Diagrama de Fluxos de Dados da BD MySQL n´ıvel 2 . . . 33

3.6 Diagrama de Transic¸˜ao de Estados dos Conectores . . . 34

3.7 Diagrama de Atividades Geral do Sistema . . . 36

3.8 Diagrama de Atividades do Conector Oracle . . . 37

3.9 Diagrama de Atividades do Conector SQL Server . . . 38

3.10 Diagrama de Atividades do Conector MySQL . . . 39

3.11 Diagrama de Sequˆencia do Conector Oracle . . . 40

3.12 Diagrama de Sequˆencia do Conector SQL Server . . . 40

3.13 Diagrama de Sequˆencia do Conector MySQL . . . 41

3.14 Diagrama de Classes do Conector Oracle . . . 41

3.15 Diagrama de Classes do Conector SQL Server . . . 42

3.16 Diagrama de Classes do Conector MySQL . . . 42

4.1 Diagrama da Alocac¸˜ao de Recursos . . . 49

6.1 Exemplo de C´odigo de Teste do conector SQL Server . . . 59

1 Tabela de produc¸˜ao com poucas colunas . . . 174

2 Tabela de produc¸˜ao com muitas colunas . . . 175

3 Diagrama Gantt parte 1 . . . 176

4 Diagrama Gantt parte 2 . . . 177

5 Legenda do diagrama Gantt . . . 178

(12)
(13)

2.1 Comparac¸˜ao entre os trabalhos relacionados com o conector SQLServer . 13

2.2 Comparac¸˜ao entre as funcionalidades existentes no SQLServer . . . 14

2.3 Comparac¸˜ao entre os trabalhos relacionados com o conector MySQL . . . 17

2.4 Comparac¸˜ao entre as funcionalidades existentes no MySQL . . . 18

4.1 Competˆencias pr´evias nas linguagens utilizadas . . . 45

4.2 Estimac¸˜ao por decomposic¸˜ao de linhas de c´odigo . . . 46

5.1 Convers˜ao entre os tipos das colunas [11] . . . 53

5.2 Convers˜ao para JSON suportar caracteres especiais . . . 54

6.1 Relac¸˜ao entre os tipos das operac¸˜oes e os dados registados . . . 61

1 Plano de testes de caixa preta ao procedimento usp AnalyseStrings . . . . 86

2 Resultados dos testes de caixa preta ao procedimento usp AnalyseStrings 86 3 Plano de testes de caixa preta ao procedimento usp ConvertJSONType . . 91

4 Plano de testes de caixa preta ao procedimento usp DescribeTable . . . . 96

5 Resultados dos testes de caixa preta ao procedimento usp DescribeTable . 97 6 Plano de testes de caixa preta ao procedimento usp FetchTableAlterations 104 7 Resultados dos testes de caixa preta ao proc usp FetchTableAlterations . . 105

8 Plano de testes de caixa preta ao procedimento usp GetCustomResults . . 111

9 Resultados dos testes de caixa preta ao procedimento usp GetCustomRe-sults . . . 111

10 Plano de testes de caixa preta ao procedimento usp GetLastRows . . . 114

11 Plano de testes de caixa preta ao procedimento usp GetTableColsList . . 118

12 Resultados dos testes de caixa preta ao procedimento usp GetTableColsList118 13 Plano de testes de caixa preta ao procedimento usp MakeJSON . . . 121

14 Resultados dos testes de caixa preta ao procedimento usp MakeJSON . . 122

15 Plano de testes de caixa preta ao procedimento usp RegisterTableInCDC . 128 16 Plano de testes de caixa preta ao proc usp SendJSONByHTTPWithSQL-CLR . . . 130

17 Plano de testes de caixa preta ao procedimento usp SyncCDCTable . . . . 136 18 Plano de testes de caixa preta ao procedimento usp UnregisterTableInCDC 139

(14)

19 Plano de testes de caixa preta `a func¸˜ao readConfigFile . . . 142 20 Resultados dos testes de caixa preta `a func¸˜ao readConfigFile . . . 143 21 Plano de testes de caixa preta `a func¸˜ao getLastClosedProcLogFile . . . . 145 22 Resultados dos testes de caixa preta `a func¸˜ao getLastClosedProcLogFile . 145 23 Plano de testes de caixa preta `a func¸˜ao readLastClosedLogFile . . . 148 24 Resultados dos testes de caixa preta `a func¸˜ao readLastClosedLogFile . . . 149 25 Plano de testes de caixa preta `a func¸˜ao updateLogPosition . . . 153 26 Plano de testes de caixa preta `a func¸˜ao getTimestamp . . . 157 27 Plano de testes de caixa preta `a func¸˜ao searchForAlterationsInOpenLogFile160 28 Plano de testes de caixa preta ao procedimento registerTableInCDC . . . 163

(15)

BD base de dados. 1–9, 11, 13, 14, 16–22, 28, 29, 31, 35, 43, 44, 51, 53, 56, 57, 63, 64, 66, 71–73, 75, 107–110, 114, 115, 142, 143, 147–153, 155–170, 173–176

CDC recolha de alterac¸˜oes - change data capture. 5, 8, 11, 12, 15, 19, 31, 35, 52, 55, 65, 131, 135, 136, 140, 142, 143

COCOMO Constructive Cost MOdel. 45, 69

consumidor JSON interface Kafka-REST-Proxy. 20, 44 cURL ferramenta para transferˆencia de dados. 52, 57

Ethernet ligac¸˜ao f´ısica `a rede. 21

Gantt diagrama das tarefas do projeto. 9, 10, 44, 48, 69 gatilho trigger. 2, 11, 16

GTID identificador ´unico. 16

Hadoop estrutura (framework) de processamento distribu´ıdo. 44 HDFS sistema de ficheiros Hadoop - Hadoop File System. 44 HIVE armaz´em de dados. 6, 44

HTTP protocolo de transferˆencia de dados - hypertext transfer protocol. 14, 16, 21, 44 HUE interface Web de an´alise de dados. 44

intermedi´ario Kafka intermedi´ario Apache para publicac¸˜ao de alterac¸˜oes. 6–9, 12, 15, 20–22, 28, 29, 31, 35, 44, 57, 64, 67, 75, 173–176

JDBC ligac¸˜ao `a base de dados usando java - java database connection. 12 xiii

(16)

xiv

JSON javascript object notation. 6, 7, 11, 16, 17, 20–22, 29, 31, 35, 44, 51–53, 55–57, 62, 63, 72, 91, 95–97, 103–105, 110, 111, 115, 128, 129, 135, 136, 149, 151–154, 161, 173–176

NoSQL base de dados n˜ao relacional. 71, 75 Oozie escalonador de tarefas. 44

prospec¸˜ao de dados Data Mining. 72, 75

RACC Cobertura Restrita da Cl´ausula Ativa - Restricted Active Clause Coverage. 64, 89, 93, 98, 116, 120, 123, 130, 132, 138, 141, 144, 147, 150, 155, 159, 162, 165 SGBD sistema de gest˜ao da base de dados. 2, 5–8, 11, 14, 18, 20, 21, 31, 35, 52, 53, 56,

67, 90

SQL linguagem de consulta estruturada - structured query language. 21, 45, 64, 65, 95–97, 105, 110, 111, 115, 120–122

SQLCLR SQL common language runtime. 51 SQLCMD acesso SQL `a linha de comandos. 52 YARN gestor de recursos. 44

(17)

Introduc¸˜ao

1.1

Enquadramento

Este projeto est´a inclu´ıdo num plano de desenvolvimento e atualizac¸˜ao dos sistemas internos de uma empresa de telecomunicac¸˜oes europeia. Esta multinacional tem mais de um milh˜ao de clientes particulares e algumas centenas de clientes empresariais. Nos seus projetos tem atualmente mais de dez mil trabalhadores diretos e alguns milhares de parceiros em projetos complementares.

Os projetos de inovac¸˜ao e investigac¸˜ao de novas soluc¸˜oes para os sistemas internos da empresa de telecomunicac¸˜oes est˜ao entregues a alguns parceiros que lhe adjudicam mais de duas centenas de trabalhadores a tempo inteiro. Este projeto est´a sob a alc¸ada de uma consultora multinacional, com duas centenas de clientes distribu´ıdos por cem pa´ıses onde emprega mais de meio milhar de profissionais da ´area das tecnologias.

Nestes projetos tamb´em est˜ao colocados alguns trabalhadores de uma empresa nacio-nal com algumas dezenas de trabalhadores, a AKTM, `a qual pertence a coorientadora da empresa que est´a a acompanhar este projeto.

Este projeto ficou sob a responsabilidade de uma equipa de dois trabalhadores da consultora multinacional para analisarem, desenharem, desenvolverem e testarem uma soluc¸˜ao que capture, integre e disponibilize os dados das diversas tecnologias de bases de dados.

O autor foi integrado na equipa que iniciou este projeto para continuar o trabalho j´a principiado seguidamente descrito.

1.2

Motivac¸˜ao

Seguidamente descreverei a motivac¸˜ao das v´arias entidades e intervenientes. 1

(18)

Cap´ıtulo 1. Introduc¸˜ao 2

1.2.1

Da empresa de telecomunicac¸˜oes

• Melhorar a gest˜ao dos recursos da organizac¸˜ao de modo a obter informac¸˜oes mais completas e detalhadas sobre o funcionamento das base de dados (BD) em produc¸˜ao. • Complementar e melhorar a oferta de servic¸os aos clientes colocando em produc¸˜ao

novos sistemas para transmitir fluxos de dados quase em tempo real.

• Descobrir novas oportunidades de neg´ocio utilizando resultados de uma an´alise pro-funda a grandes conjuntos de dados obtidos dos sistemas em produc¸˜ao.

1.2.2

Da consultora

• Extrair conclus˜oes ´uteis da an´alise dos dados obtidos dos sistemas em produc¸˜ao que demonstrem as potencialidades deste projeto.

• Suportar subscritores com uma vasta diversidade de interesses na obtenc¸˜ao de da-dos, em termos de:

– frequˆencia: minuto a minuto, hor´aria ou di´aria. – atraso: 5 a 10 minutos, 1 hora ou 24 horas. – tipo: caracteres e n´umeros, imagens ou v´ıdeo. – quantidade de dados: dezenas de Kb, Mb ou Gb. – largura de banda: dezenas de Mb/s at´e 1Gb/s.

– multiplicidade dos produtores: 1 produtor ou poucas dezenas. – diversidade de origens: BD Oracle, SQLServer ou MySQL. • Aumentar o n´ıvel de tolerˆancia a faltas dos dados persistidos.

1.2.3

Da equipa

• Manter todos os sistemas em produc¸˜ao da empresa de telecomunicac¸˜oes a funcionar sem constrangimentos apesar de serem:

– alteradas as configurac¸˜oes pr´e-definidas do sistema de gest˜ao da base de dados (SGBD).

– ativados e utilizados servic¸os complementares do SGBD. – criados e executados novos procedimentos e func¸˜oes.

• Evitar incompatibilidades e atrasos introduzidos por m´odulos externos `as BD: – minimizando a utilizac¸˜ao de triggers (gatilhos) [12].

(19)

– utilizando procedimentos e func¸˜oes ass´ıncronas. – otimizando as pesquisas realizadas `as BD de produc¸˜ao.

• Suportar a obtenc¸˜ao quase em tempo real de fluxos de dados dos sistemas em produc¸˜ao para:

– viabilizar novos servic¸os que necessitem de fluxos de texto, imagens e v´ıdeos. – permitir analisar a operac¸˜ao dos sistemas prestadores de servic¸os para

identi-ficar problemas nos primeiros minutos ap´os a sua ocorrˆencia.

1.2.4

Individuais

• Trabalhar em equipa num projeto real. • Ter contacto com ambientes empresariais.

• Contribuir para uma soluc¸˜ao da empresa de telecomunicac¸˜oes. • Aplicar os conhecimentos obtidos durante a formac¸˜ao acad´emica. • Adquirir experiˆencia de programac¸˜ao em PL/SQL e T-SQL.

• Compreender o funcionamento interno das v´arias tecnologias de BD.

• Escolher a forma mais adequada para registar e exportar as alterac¸˜oes das BD em produc¸˜ao.

• Resolver o desafio da integrac¸˜ao de dados num sistema com v´arios provedores de BD.

1.3

Objectivos

Seguidamente descreverei os objetivos das v´arias entidades e intervenientes.

1.3.1

Da empresa de telecomunicac¸˜oes

• Substituir o sistema antigo por um mais atual que satisfac¸a os requisitos dos novos servic¸os prestados aos clientes.

• Definir um novo padr˜ao de integrac¸˜ao de dados moderno e dinˆamico que possa substituir o padr˜ao utilizado atualmente nos sistemas em produc¸˜ao.

• Alterar paradigma de obtenc¸˜ao de dados da empresa para publicador/subscritor [33] porque este modelo diminui as dependˆencias entre os sistemas e ´e mais adequado `a utilizac¸˜ao de dados pretendida.

(20)

Cap´ıtulo 1. Introduc¸˜ao 4

• Realizar uma an´alise profunda dos dados produzidos pelos sistemas em produc¸˜ao que possibilite conhecer todas as potencialidades dos sistemas e otimiz´a-los. • Armazenar todos os dados obtidos de sistemas em produc¸˜ao por tempo

indetermi-nado mantendo-os acess´ıveis para an´alises posteriores.

• Definir um mecanismo de captura e integrac¸˜ao de dados que suporte a transmiss˜ao de fluxos de dados (streaming) e se adeque `a prestac¸˜ao de servic¸os da pr´oxima gerac¸˜ao.

1.3.2

Da consultora

• Atualizar o paradigma de distribuic¸˜ao de dados:

– de recolha apenas dos dados subscritos para o paradigma Publish/Subscribe comec¸ar a recolher, integrar e armazenar todos os dados produzidos.

– para diminuir a dependˆencia entre os produtores e os consumidores.

– para aumentar a quantidade de informac¸˜ao armazenada de modo a possibilitar uma an´alise posterior dos dados que n˜ao s˜ao utilizados atualmente.

– para suportar a integrac¸˜ao com todos os sistemas produtores de dados da em-presa.

• Integrar quase em tempo real dados de sistemas muito distintos como os produtores: – que utilizam provedores de BD distintos.

– de dezenas de Kb de dados por segundo at´e dezenas de Gb por segundo. – de dados cr´ıticos para a prestac¸˜ao de servic¸os aos clientes ou os produtores de

registos de operac¸˜oes que apenas interessam `a equipa de desenvolvimento. • Persistir os dados recolhidos num reposit´orio Hadoop.

• Distribuir os dados corretamente em func¸˜ao das necessidades do recetor que podem variar:

– na frequˆencia: desde muito reduzida at´e muito elevada. – no atraso: curto ou prolongado.

– no tipo: dados textuais de operac¸˜ao ou multim´edia.

– na quantidade de dados: cabec¸alhos, metadata ou conte´udos para clientes. – na largura de banda: ADSL, fibra ´otica ou bastidor.

– na multiplicidade de produtores: apenas uma amostra como exemplo at´e todos os que pertencem ao sistema.

(21)

– na diversidade de origens: apenas de um at´e todos os provedores de BD. • Aplicar an´alise de grandes conjuntos de dados sobre os dados persistidos dos

siste-mas em produc¸˜ao para:

– aumentar o conhecimento sobre os dados que a empresa de telecomunicac¸˜oes tem ao seu dispor.

– melhorar o acesso aos dados persistidos.

– identificar e catalogar as informac¸˜oes importantes.

– auxiliar a empresa de telecomunicac¸˜oes na tomada de decis˜oes como: ∗ onde devem ser realizados os pr´oximos investimentos.

∗ que servic¸os trazem maiores lucros e preju´ızos.

1.3.3

Da equipa

• Definir um novo mecanismo de captura de alterac¸˜oes que suporte os requisitos dos futuros sistemas da empresa nomeadamente:

– uma maior quantidade de dados.

– a emiss˜ao de fluxos de dados com maior frequˆencia. – a obtenc¸˜ao dos dados com atrasos mais reduzidos. – uma maior largura de banda.

• Disponibilizar uma interface para envio e recec¸˜ao de fluxos de dados dos sistemas em produc¸˜ao para o armazenamento persistente.

• Melhorar a eficiˆencia da captura de alterac¸˜oes das BD em operac¸˜ao:

– obtendo alterac¸˜oes das BD em produc¸˜ao de forma est´avel e retrocompat´ıvel. – utilizando aplicac¸˜oes de captura de dados.

1.3.4

Individuais

• Analisar as diversas abordagens para capturar dados numa BD em produc¸˜ao, como: – as ferramentas de recolha de alterac¸˜oes - change data capture (CDC)

forneci-das pelos SGBD.

– os mecanismos de replicac¸˜ao. – o acesso aos registos de operac¸˜oes.

(22)

Cap´ıtulo 1. Introduc¸˜ao 6

• Analisar as diversas alternativas para extrair alterac¸˜oes das BD em produc¸˜ao, como: – a utilizac¸˜ao de bibliotecas C#.

– a execuc¸˜ao de uma aplicac¸˜ao do sistema operativo pela linha de comandos. – a replicac¸˜ao da BD em produc¸˜ao para comparar o seu conte´udo anterior e

posterior a uma alterac¸˜ao e registar as alterac¸˜oes efetuadas. – a utilizac¸˜ao de um programa externo em C.

• Identificar os desafios do desenvolvimento, como: – a periodicidade da obtenc¸˜ao das alterac¸˜oes. – capturar alterac¸˜oes apenas das tabelas indicadas.

– registar apenas as operac¸˜oes que produzem alterac¸˜oes nas tabelas. – o agrupamento das linhas alteradas em cada tabela.

– a formatac¸˜ao do javascript object notation (JSON) [45] das alterac¸˜oes captu-radas.

– a extrac¸˜ao das alterac¸˜oes do SGBD.

– o envio para o intermedi´ario Apache para publicac¸˜ao de alterac¸˜oes (inter-medi´ario Kafka) escolhido previamente pela equipa para reunir, persistir no armaz´em de dados (HIVE) e distribuir todas as alterac¸˜oes independentemente da sua tecnologia de origem.

– a eliminac¸˜ao das alterac¸˜oes publicadas com sucesso.

• Planear a arquitetura da implementac¸˜ao para cada tecnologia de base de dados com o objetivo de:

– registar as alterac¸˜oes. – formatar o JSON. – enviar o JSON.

– limpar as alterac¸˜oes j´a enviadas.

• Especificar os contratos dos procedimentos e func¸˜oes.

• Implementar os procedimentos e func¸˜oes seguindo boas pr´aticas de programac¸˜ao. • Redigir o plano de testes unit´arios e de integrac¸˜ao para garantir uma cobertura de

todas as linhas de c´odigo.

• Executar o plano de testes seguindo os procedimentos recomendados pelas normas internacionais.

(23)

• Realizar o execut´avel para a instalac¸˜ao.

• Redigir o manual de instalac¸˜ao, configurac¸˜ao e manutenc¸˜ao do c´odigo desenvolvido para cada tecnologia.

1.4

Contribuic¸˜oes do autor

Esta parte do relat´orio descreve o trabalho atribu´ıdo pela equipa ao seu autor.

Nos pr´oximos cap´ıtulos, o software que obt´em as alterac¸˜oes das v´arias BDs, converte-as para um formato padr˜ao em JSON e envia-converte-as para o intermedi´ario Kafka para que sejam disponibilizadas `as aplicac¸˜oes interessadas, ser´a chamado conector.

• Durante a fase de An´alise realizou: – o levantamento de requisitos.

– a comparac¸˜ao entre as tecnologias existentes.

– a investigac¸˜ao das funcionalidades suportadas pelos SGBD. – a identificac¸˜ao de problemas associados.

• Durante a fase de Desenho planeou:

– a arquitetura da soluc¸˜ao para cada tecnologia.

– a integrac¸˜ao com o sistema existente em produc¸˜ao na empresa de telecomunicac¸˜oes. • Durante a fase de Desenvolvimento implementou:

– o conector SQL Server p´os-2008. – o conector MySQL p´os v5.1.5.

• Durante a fase de Testes executou os testes: – unit´arios aos procedimentos e func¸˜oes.

– de Integrac¸˜ao com o sistema desenvolvido pela equipa. • Ao longo do projeto produziu:

– os coment´arios adjacentes ao c´odigo desenvolvido. – o manual de instalac¸˜ao do conector MySQL [70]. – o manual de instalac¸˜ao do conector SQL Server [71].

• Todas as tarefas referidas anteriormente contribu´ıram para a obtenc¸˜ao do produto final que:

(24)

Cap´ıtulo 1. Introduc¸˜ao 8

– publica no intermedi´ario Kafka as alterac¸˜oes captadas das BDs de produc¸˜ao SQL Server e MySQL num formato JSON normalizado que pode ser enviado para os subscritores segundo as suas preferˆencias.

1.5

Estrutura do documento

Em seguida apresentam-se os cap´ıtulos e secc¸˜oes em que este documento est´a dividido acompanhados de um breve resumo do conte´udo de cada um deles.

Este documento est´a organizado da seguinte forma:

• Cap´ıtulo 2 – Estado da arte: pesquisa sobre os projetos e as funcionalidades dos SGBD que existem atualmente para o registo, obtenc¸˜ao, formatac¸˜ao e publicac¸˜ao de alterac¸˜oes em SQL Server e MySQL.

2.1 - Conector SQL Server: lista das funcionalidades inclu´ıdas na linguagem e dos conectores alternativos para publicar no intermedi´ario Kafka as alterac¸˜oes registadas pelo mecanismo CDC do SQL Server.

2.2 - Conector MySQL: lista das funcionalidades inclu´ıdas na linguagem e dos conectores alternativos que recolham as alterac¸˜oes do registo bin´ario e as publiquem no intermedi´ario Kafka.

2.3 - Discuss˜ao: indicac¸˜ao dos motivos para n˜ao adotar uma das soluc¸˜oes ana-lisadas.

• Cap´ıtulo 3 – An´alise: compreens˜ao, descric¸˜ao, contextualizac¸˜ao e recolha dos re-quisitos do projeto.

3.1 - Descric¸˜ao do projeto: em que consiste o projeto, miss˜ao, criticidade e otimizac¸˜ao dos conectores, ciclo de vida dos dados manipulados, tecnologias e sis-temas envolvidos e o que se pretende obter.

3.2 - Requisitos detalhados: levantamento de requisitos funcionais, n˜ao funci-onais, inversos, diagramas dos conectores desenvolvidos e do ambiente em que se inserem.

3.3 - Casos de uso: listam as utilizac¸˜oes mais comuns dos conectores. 3.4 - Diagramas de fluxos de dados: ilustra a manipulac¸˜ao das alterac¸˜oes. 3.5 - Diagrama de transic¸˜ao de estados dos conectores: sintetiza as fases do funcionamento dos conectores.

3.6 - Diagramas de atividades: apresentam as tarefas realizadas pelo sistema e conectores.

(25)

3.7 - Diagramas de sequˆencia: indicam a ordem das chamadas dos procedimen-tos e func¸˜oes dos conectores.

3.8 - Diagramas de classes: demonstram a organizac¸˜ao das tabelas em cada BD. • Cap´ıtulo 4 - Planeamento: enumerac¸˜ao dos recursos humanos associados ao pro-jeto, das tecnologias envolvidas e das previs˜oes para este projeto. Indicac¸˜ao do processo de desenvolvimento adotado e da organizac¸˜ao das tarefas.

4.1 - Recursos: descric¸˜ao dos recursos humanos e das tecnologias envolvidas neste projeto.

4.2 - Estimac¸˜ao: do esforc¸o dispon´ıvel, com modelos emp´ıricos e recorrendo a dados hist´oricos.

4.3 - Processo de desenvolvimento de software: descric¸˜ao do modelo cascata utilizado.

4.4 - Planeamento detalhado do projeto: descric¸˜ao textual do diagrama das tarefas do projeto (Gantt) sua decomposic¸˜ao e afetac¸˜ao.

4.5 - An´alise cr´ıtica: considerac¸˜oes sobre a viabilidade do projeto e apresentac¸˜ao de poss´ıveis soluc¸˜oes para os problemas mais prov´aveis.

• Cap´ıtulo 5 - Implementac¸˜ao: lista dos procedimentos especificados, organizac¸˜ao dos conectores e descric¸˜ao das funcionalidades desenvolvidas.

5.1 - Especificac¸˜ao de procedimentos: lista de soluc¸˜oes para resolver os desa-fios apresentados pelos conectores.

5.2 - Organizac¸˜ao do conector: descric¸˜ao das tarefas espec´ıficas dos v´arios componentes de cada conector.

5.3 - Funcionalidades do sistema: descric¸˜ao detalhada das operac¸˜oes realizadas por cada conector.

5.4 - Aspetos significativos da implementac¸˜ao: lista da documentac¸˜ao produ-zida com os detalhes da implementac¸˜ao mais importantes para a instalac¸˜ao, manutenc¸˜ao e futuros desenvolvimentos.

• Cap´ıtulo 6 - Testes: definic¸˜ao da extens˜ao dos testes pretendida e do plano de testes unit´arios e de integrac¸˜ao. Descric¸˜ao dos testes estruturais (caixa branca) e funcio-nais (caixa preta) aplicados para verificar a correta implementac¸˜ao dos conectores. Apresentac¸˜ao dos resultados da cobertura dos testes e dos erros detetados nos co-nectores.

6.1 - Plano de testes: descric¸˜ao e categorizac¸˜ao dos testes.

6.2 - Conclus˜oes dos testes: indicac¸˜ao da cobertura alcanc¸ada e demonstrac¸˜ao dos dados obtidos numa lista de erros detetados em cada conector.

(26)

Cap´ıtulo 1. Introduc¸˜ao 10

6.3 - Discuss˜ao: indicac¸˜ao da criticidade dos erros identificados e avaliac¸˜ao da aptid˜ao dos conectores desenvolvidos.

• Cap´ıtulo 7 - Conclus˜oes: descric¸˜ao das tarefas realizadas e comparac¸˜ao dos resul-tados obtidos com a organizac¸˜ao de tarefas inicial, com o esforc¸o estimado e com o trabalho requerido. avaliac¸˜ao do trabalho desenvolvido, diferenc¸as face `as estima-tivas, an´alise do esforc¸o despendido e do decurso do projeto, indicac¸˜ao de futuros desenvolvimentos e s´ıntese cr´ıtica do projeto

7.1 - Decomposic¸˜ao, atribuic¸˜ao e calendarizac¸˜ao das tarefas realizadas: apre-sentadas no diagrama Gantt na figura 3 em anexo.

7.2 - Planeado vs. executado: comparac¸˜ao entre o trabalho planeado e aquele que foi executado.

7.3 - Avaliac¸˜ao post-mortem: lista dos aspetos positivos e negativos do projeto e comparac¸˜ao entre a realidade do projeto e as estimativas iniciais.

7.4 - S´ıntese cr´ıtica do projeto: an´alise de todo o decurso do projeto e enumerac¸˜ao de problemas identificados no projeto.

7.5 - Conclus˜ao: balanc¸o do projeto e considerac¸˜oes finais.

• Cap´ıtulo 8 - Futuros desenvolvimentos: identificac¸˜ao das funcionalidades que po-dem ser desenvolvidos para complementar o sistema.

(27)

Estado da arte

Neste cap´ıtulo s˜ao apresentados os resultados de uma pesquisa por soluc¸˜oes j´a existen-tes, que procuram resolver problemas de integrac¸˜ao de dados similares ao deste projeto.

2.1

Conector SQL Server

Em seguida listam-se as funcionalidades e vers˜oes de conectores relevantes encontra-dos na pesquisa para o conector SQL Server.

2.1.1

Funcionalidades inclu´ıdas

A lista seguinte cont´em as funcionalides oferecidas pelo SGBD que podem auxiliar na construc¸˜ao de um conector SQL Server.

• O registo das alterac¸˜oes ocorridas nas tabelas (ativar CDC) [61]. • O agendamento de execuc¸˜ao de c´odigo T-SQL (Schedule Job) [63]. • A convers˜ao de dados relacionais para JSON (SQL Server 2016) [60, 62]. • A execuc¸˜ao de ferramentas na linha de comandos (executar na CMDShell) [64]. • A integrac¸˜ao de c´odigo C# para adicionar funcionalidades (ativar SQL CLR) [44]. • A ativac¸˜ao de eventos gatilho quando se realiza uma determinada operac¸˜ao na BD

em produc¸˜ao [12].

• A convers˜ao do formato de n´umeros e marcas temporais (timestamps) [10].

2.1.2

Vers˜oes empresariais

As vers˜oes seguintes s˜ao alternativas empresariais ao conector SQL Server que se pre-tende desenvolver.

(28)

Cap´ıtulo 2. Estado da arte 12

• Microsoft SQL Server CDC to intermedi´ario Kafka – Striim [73]. • Oracle Goldengate to replicate SQL Server transactions [59]. • IBM InfoSphere Data Replication from SQL Server [16]. • Informatica PowerCenter [49].

• SAP NetWeaver Master Data Management (MDM)[68].

2.1.3

Vers˜oes empresariais de c´odigo aberto

A vers˜ao seguinte ´e uma alternativa empresarial ao conector SQL Server cujo c´odigo foi disponibilizado publicamente para permitir o seu desenvolvimento e utilizac¸˜ao pela comunidade.

• Pentaho Data Integration (aka Kettle) [15].

2.1.4

Vers˜oes particulares de c´odigo aberto

As vers˜oes seguintes s˜ao alternativas ao conector SQL Server que se deseja desenvolver e foram realizadas por particulares que as disponibilizaram em c´odigo aberto.

• GitHub - No9/sqlcdcstream: A stream of SQL Server Change Events [36].

• Is there a SQL Server CDC connector for intermedi´ario Kafka Connect? - Grupos do Google [26].

• intermedi´ario Kafka connect: connecting ligac¸˜ao `a base de dados usando java - java database connection(JDBC) source using Sql server - Grupos do Google [28]. • intermedi´ario Kafka Connect - Is this the expected behavior? - Grupos do Google

[27].

• GitHub - jpalomo/kafka-connect-mssqlserver-cdc [35].

Problemas detetados nos trabalhos relacionados com o conector SQL Server

A lista seguinte apresenta os problemas detetados nos trabalhos referidos anteriormente e que s˜ao comparados na tabela 2.1.

• A: O prec¸o de aquisic¸˜ao da licenc¸a de utilizac¸˜ao.

• B: O projeto foi desenvolvido por uma empresa de um grupo concorrente.

• C: N˜ao mant´em a compatibilidade requerida porque utiliza recursos adicionados ap´os o SQL Server 2008.

(29)

• D: N˜ao mant´em a compatibilidade requerida porque utiliza recursos das ´ultimas vers˜oes do MySQL

• E: Implica alterac¸˜oes nas BD produtoras. Estas BD n˜ao podem ser alteradas porque j´a est˜ao em produc¸˜ao.

• F: N˜ao garante funcionamento quase em tempo real.

• G: Falta de suporte para os tipos de colunas personalizados utilizados nas BD em produc¸˜ao da empresa de telecomunicac¸˜oes [13].

• H: Acesso restrito ao c´odigo fonte. • I: Utiliza c´odigo Java.

Tabela 2.1: Comparac¸˜ao entre os trabalhos relacionados com o conector SQLServer Problemas Bibliografia A B C D E F G H I [73] X X X X [59] X X [16] X X [49] X X [68] X X X [15] X [36] X X [26] X [28] X X [27] X [35] X X X X

Problemas detetados nas funcionalidades inclu´ıdas no SQL Server

Em seguida est˜ao os problemas que condicionam a utilizac¸˜ao das funcionalidades in-clu´ıdas no SQL Server para resolver alguns desafios do conector e a sua comparac¸˜ao na tabela 2.2.

• J: N˜ao mant´em a compatibilidade requerida porque utiliza recursos adicionados no SQL Server 2012.

• L: N˜ao mant´em a compatibilidade requerida porque utiliza recursos adiconados no SQL Server 2016.

• M: Implica alterac¸˜oes nas BD produtoras. Estas BD n˜ao podem ser alteradas porque j´a est˜ao em produc¸˜ao.

(30)

Cap´ıtulo 2. Estado da arte 14

• N: N˜ao garante funcionamento quase em tempo real.

• O: Est˜ao bloqueados pelo administrador das BDs porque originam problemas de seguranc¸a bem conhecidos como a:

O1: execuc¸˜ao de programas na linha de comandos do Windows. O2: execuc¸˜ao de bibliotecas C# pr´e-compiladas.

O3: exportac¸˜ao de dados por protocolo de transferˆencia de dados - hypertext transfer protocol(HTTP).

Tabela 2.2: Comparac¸˜ao entre as funcionalidades existentes no SQLServer Problemas Bibliografia J L M N O1 O2 O3 [61] X [63] X [60, 62] X [64] X [44] X X [12] X [10] X

2.2

Conector MySQL

Em seguida listam-se as funcionalidades e vers˜oes de conectores relevantes encontra-dos na pesquisa para o conector MySQL.

2.2.1

Funcionalidades inclu´ıdas

A lista seguinte cont´em as funcionalidades disponibilizadas pelo SGBD que podem auxiliar na construc¸˜ao de um conector MySQL.

• As colunas podem ser do tipo JSON e podem ser utilizadas as func¸˜oes JSON AR-RAY([val[, val] ...]), JSON OBJECT([key, val[, key, val] ...]) e JSON QUOTE(string) para o formatar [4].

• O registo bin´ario num ficheiro dos dados alterados nas tabelas [5]. • O registo bin´ario num ficheiro das operac¸˜oes realizadas nas tabelas [6].

(31)

2.2.2

Vers˜oes empresariais

As vers˜oes seguintes s˜ao alternativas empresariais ao conector MySQL que se pretende desenvolver.

• MySQL CDC to intermedi´ario Kafka – Striim [74]. • IBM DataStage ODBC to MySQL [58].

2.2.3

Vers˜oes empresariais de c´odigo aberto

As vers˜oes listadas em seguida s˜ao alternativas empresariais ao conector MySQL que foram disponibilizadas em c´odigo aberto para permitir o seu desenvolvimento e utilizac¸˜ao pela comunidade.

• GitHub - vmware/tungsten-replicator: Tungsten Replicator [42].

• GitHub - zendesk/maxwell: Maxwell’s daemon, a mysql-to-json intermedi´ario Kafka producer [40, 66].

• GitHub - Yelp/mysql-streamer: MySQLStreamer is a database change data capture and publish system [39, 69].

• GitHub - debezium/debezium: Change data capture for a variety of databases [34, 14].

• GitHub - shyiko/mysql-binlog-connector-java: MySQL Binary Log conector [38]. • Informatica Connector Toolkit: MySQL Connector [48].

2.2.4

Vers˜oes particulares de c´odigo aberto

As vers˜oes seguintes s˜ao alternativas ao conector MySQL que se deseja desenvolver e foram realizadas por particulares que as disponibilizaram em c´odigo aberto.

• GitHub - mardambey/mypipe: MySQL binary log consumer with the ability to o on changed rows and publish changes to different systems with emphasis on Apache intermedi´ario Kafka [41].

• GitHub - whitesock/open-replicator: Open Replicator is a high performance MySQL binlog parser written in Java. It unfolds the possibilities that you can parse, filter and broadcast the binlog events in a real time manner [43].

• GitHub - pyr/recordbus: recordbus: mysql binlog to apache intermedi´ario Kafka [37].

(32)

Cap´ıtulo 2. Estado da arte 16

• GitHub - dan-da/cdc audit: change data capture via audit tables and triggers for mysql [19].

• FlexCDC is a change data capture utility for MySQL 5.1 [75].

• GitHub - mysqludf/lib mysqludf json: A UDF library of functions to map MySQL data to JSON [20].

Problemas detetados nos trabalhos relacionados com o conector MySQL

Em seguida voltam a indicar-se as listas de problemas para facilitar a leitura das tabelas de comparac¸˜ao 2.3 e 2.4. Continua-se a sequˆencia das letras das listas do conector SQL Server porque n˜ao se pretende comparar o conector SQL Server com o MySQL uma vez que ´e necess´ario integrar dados de ambas as tecnologias.

A lista seguinte apresenta os problemas detetados nos trabalhos referidos anterior-mente e que s˜ao comparados na tabela 2.3.

• P: O prec¸o de aquisic¸˜ao da licenc¸a de utilizac¸˜ao.

• Q: O projeto foi desenvolvido por uma empresa de um grupo concorrente.

• R: N˜ao mant´em a compatibilidade requerida porque utiliza recursos das vers˜oes do MySQL p´os 5.5, como:

- o identificador ´unico (GTID) [65].

• S: Implica alterac¸˜oes nas BD produtoras. Estas BD n˜ao podem ser alteradas porque j´a est˜ao em produc¸˜ao.

• T: Utiliza recursos da BD em produc¸˜ao que est˜ao bloqueados pelo administrador das BDs porque constituem problemas de seguranc¸a, como:

- a execuc¸˜ao de programas na linha de comandos do Windows. - a exportac¸˜ao de dados por HTTP.

• U: N˜ao garante funcionamento quase em tempo real. • V: Utiliza c´odigo Java.

• X: N˜ao suporta todas as operac¸˜oes sobre as BD que s˜ao utilizadas pelos sistemas em produc¸˜ao.

• Z: Utiliza c´odigo Python. • AA: Utiliza PHP.

(33)

• AC: N˜ao mant´em a compatibilidade requerida porque utiliza recursos das vers˜oes do MySQL p´os 5.1.

• AD: Acesso restrito ao c´odigo fonte.

Tabela 2.3: Comparac¸˜ao entre os trabalhos relacionados com o conector MySQL Problemas Bibliografia P Q R S T U V X Z AA AB AC AD [74] X X X [58] X X [42] X X [40, 66] X X X X [39, 69] X X [14, 34] X X X [38] X X X [48] X [41] X [43] X X [37] X X [19] X X X X [75] X X X [20] X

Problemas detetados nas funcionalidades inclu´ıdas no MySQL

Em seguida est˜ao os problemas que condicionam a utilizac¸˜ao das funcionalidades dis-ponibilizadas pelo MySQL para resolver alguns desafios do conector e a sua comparac¸˜ao na tabela 2.4.

• AD: O tipo JSON e as func¸˜oes que o formatam n˜ao permitem a retrocompatibili-dade com as BD com vers˜oes anteriores a agosto de 2015. [4].

• AE: O registo bin´ario dos dados alterados nas tabelas n˜ao permite a retrocompati-bilidade com as BD com vers˜oes anteriores a novembro de 2008. [6].

• AF: O registo bin´ario das operac¸˜oes realizadas nas tabelas n˜ao permite a retrocom-patibilidade com as BD com vers˜oes anteriores a janeiro de 2001. [5].

2.3

Discuss˜ao

Devido aos problemas identificados nos trabalhos relacionados e nas funcionalida-des existentes conclui-se que ´e necess´ario funcionalida-desenvolver os conectores para SQL Server

(34)

Cap´ıtulo 2. Estado da arte 18

Tabela 2.4: Comparac¸˜ao entre as funcionalidades existentes no MySQL Problemas

Bibliografia AD AE AF

[4] X

[6] X

[5] X

e MySQL. Nem todos os problemas identificados tˆem a mesma relevˆancia uma vez que o prec¸o de aquisic¸˜ao ´e suficiente para impedir a sua utilizac¸˜ao neste projeto mas a falta de suporte ou de retrocompatibilidade poder´a ser adaptada.

N˜ao foi adoptada a soluc¸˜ao proposta em nenhum dos trabalhos relacionados mas utilizaram-se e adaptaram-se algumas funcionalidades disponibilizadas pelos SGBD.

No conector SQL Server utilizou-se o registo de alterac¸˜oes nas tabelas, a integrac¸˜ao de c´odigo C# e a convers˜ao do formato das marcas temporais.

No conector MySQL adaptou-se a funcionalidade de registo bin´ario das alterac¸˜oes [6], convertendo o ficheiro bin´ario que esta produz para texto leg´ıvel utilizando a ferramenta do SGBD mysqlbinlog [3] e pesquisando as alterac¸˜oes nesse texto. Como descrito nos casos especiais de instalac¸˜ao do manual de instalac¸˜ao do conector MySQL [70], tamb´em ´e poss´ıvel implementar o conector tendo apenas o registo bin´ario de operac¸˜oes. Para tal deve ser utilizada uma BD auxiliar que seja uma r´eplica da que est´a em produc¸˜ao onde se apliquem todas as operac¸˜oes que surjam no ficheiro de registo bin´ario.

(35)

An´alise

Em seguida ´e fornecida uma descric¸˜ao detalhada deste projeto acompanhada pelos re-quisitos que foram identificados para auxiliar a compreens˜ao dos desafios impostos por este projeto.

3.1

Descric¸˜ao do projeto

Neste projeto pretende substituir-se o sistema antigo por um mais atual que satisfac¸a os requisitos dos novos servic¸os. Como os sistemas produtores j´a possuem os pr´oprios mecanismos de detec¸˜ao e tolerˆancia a faltas o mais importante ´e disponibilizarem-se os fluxos de dados recolhidos quase em tempo real, preferencialmente entre dez a quinze minutos.

Apesar de serem recolhidos dados provenientes de sistemas cr´ıticos para a prestac¸˜ao de servic¸os de telecomunicac¸˜oes aos clientes, ´e suficiente obtˆe-los, integr´a-los e public´a-los em intervapublic´a-los de dez a quinze minutos pois a sua utilizac¸˜ao resume-se ao processa-mento por consumidores antigos e por novos consumidores que venham a ser desenvolvi-dos.

Prevˆe-se que os novos consumidores poder˜ao alimentar um sistema complementar de diagn´ostico quase em tempo real da qualidade do servic¸o prestado aos clientes e armaze-nar˜ao todos os dados recolhidos para criar um armaz´em de dados onde se possam aplicar t´ecnicas de prospec¸˜ao de dados. Os sistemas que subscrevem e analisam os dados inte-grados n˜ao foram desenvolvidos neste projeto estando portanto para al´em do ˆambito deste documento.

Para cumprir o prop´osito do sistema ´e necess´ario desenvolver conectores CDC (Change Data Capture) para Oracle, SQL Server e MySQL porque neste momento a empresa multi-nacional de telecomunicac¸˜oes n˜ao utiliza outras tecnologias de BD. Estes dever˜ao funcio-nar em segundo plano para n˜ao afetar os sistemas em operac¸˜ao e ser pouco intrusivos para evitar alterac¸˜oes frequentes. Para cumprir estes requisitos, os procedimentos e as func¸˜oes desenvolvidos foram otimizados para realizarem apenas as operac¸˜oes estritamente

(36)

Cap´ıtulo 3. An´alise 20

cess´arias e sempre que poss´ıvel foram utilizados os mecanismos disponibilizados pelos SGBD.

A miss˜ao de cada conector ´e detetar todas as alterac¸˜oes que ocorrerem nas tabelas em produc¸˜ao que lhe sejam indicadas. Por ´ultimo, convertem os dados alterados para formato JSON e publicam-nos no intermedi´ario Kafka considerando as v´arias especifici-dades de cada SGBD descritas neste relat´orio. Para realizar estas publicac¸˜oes a equipa de desenvolvimento escolheu o interface Kafka-REST-Proxy (consumidor JSON). Esta foi considerada a alternativa mais est´avel que cumpria os requisitos identificados para este projeto evitando assim alocar mais tempo para desenvolver uma nova interface com o intermedi´ario Kafka.

3.2

Requisitos detalhados

Em seguida listam-se os requisitos para os conectores. Foram identificados e siste-matizados com a equipa que iniciou este projeto pois o modelo em cascata seguido n˜ao previa mais fases de an´alise com o cliente.

3.2.1

Requisitos funcionais

Estes s˜ao os requisitos funcionais dos conectores: C-Requisitos

Esta ´e a lista dos requisitos dos clientes:

• CRF1 - Manter a retrocompatibilidade do conector com as BD em produc¸˜ao. - P´os SQL Server 2008.

- P´os MySQL 5.1.5.

• CRF2 - Detetar alterac¸˜oes nas BD em produc¸˜ao.

• CRF3 - Obter alterac¸˜oes sem interferir com o funcionamento dos sistemas em produc¸˜ao.

D-Requisitos

Esta ´e a lista dos requisitos dos programadores:

• DRF1 - Converter alterac¸˜oes para um formato padr˜ao (JSON) escolhido pela equipa que considerava o XML muito prolixo.

(37)

• DRF3 - Testar o funcionamento de todo o sistema de integrac¸˜ao e an´alise com os conectores desenvolvidos:

- Utilizar dados open source num ambiente muito dinˆamico com milhares de operac¸˜oes por segundo em centenas de tabelas.

3.2.2

Requisitos n˜ao funcionais

Estes s˜ao os requisitos n˜ao funcionais dos conectores: 1. Referentes ao seu desempenho:

• RNF1 - a velocidade: para obter, analisar e persistir milhares de operac¸˜oes em poucos minutos (de preferˆencia 5 a 10 minutos).

• RNF2 - a capacidade: para exportar as alterac¸˜oes detetadas em quantidades indexadas `a capacidades restritas dos sistemas em produc¸˜ao.

• RNF3 - a utilizac¸˜ao de mem´oria: deve ser minimizada utilizando mecanismos de registo de alterac¸˜oes embutidos nas BD em produc¸˜ao.

• RNF4 - o tempo de resposta: deve suportar a transmiss˜ao de fluxos de dados em poucos minutos e possibilitar a satisfac¸˜ao de requisitos pr´oximos de tempo real.

2. Referentes `as suas interfaces:

• RNF5 - de hardware: devem ser configuradas para utilizar uma ligac¸˜ao f´ısica `a rede (Ethernet).

• RNF6 - de software: devem comunicar por HTTP usando JSON e o protocolo intermedi´ario Kafka.

• RNF7 - do SGBD: para receber comandos linguagem de consulta estrutu-rada - structured query language (SQL) enviados por um operador e executar PL/SQL para registar e exportar as alterac¸˜oes ocorridas.

• RNF8 - de armazenamento: para receber as alterac¸˜oes por HTTP. • RNF9 - de comunicac¸˜oes: devem ser realizadas por HTTP via Ethernet. 3. Referentes `a utilizac¸˜ao dos recursos dispon´ıveis, estes s˜ao os limites m´aximos que

n˜ao deve ultrapassar num sistema em produc¸˜ao: • RNF13 - Processamento: 10% do CPU. • RNF14 - Mem´oria: 10% da RAM. • RNF15 - Disco: 10% do HDD.

(38)

Cap´ıtulo 3. An´alise 22

3.2.3

Requisitos inversos

Estes s˜ao os requisitos inversos dos conectores, que referem aquilo que n˜ao ´e da res-ponsabilidade deles:

1. N˜ao conhecem o destino final das alterac¸˜oes pois apenas as publicam no inter-medi´ario Kafka definido.

2. N˜ao analisam as alterac¸˜oes detetadas nas BD em produc¸˜ao para o qual foram de-senvolvidos.

3.3

Casos de uso

Em seguida apresentam-se os casos de uso mais comuns em que o sistema utiliza os conectores para formatar o JSON das alterac¸˜oes das BD em produc¸˜ao.

Todos os fluxos principais de eventos terminam com:

• o sistema a guardar os dados resultantes do pedido realizado pelo ator numa BD em produc¸˜ao.

• o conector a capturar, formatar e publicar as alterac¸˜oes registadas no intermedi´ario Kafka.

• um sistema recetor a obter as alterac¸˜oes do intermedi´ario Kafka segundo as suas configurac¸˜oes personalizadas.

1. Efetuar uma chamada • Atores:

– o cliente. • Pr´e-condic¸˜oes:

– o cliente possui telefone ou telem´ovel.

– o cliente subscreveu um servic¸o que lhe permite utilizar esse equipamento para realizar chamadas.

• Fluxo principal de eventos:

– o cliente telefona para um n´umero. – o sistema realiza a chamada. 2. Aceder a uma p´agina na internet

(39)

– o cliente. • Pr´e-condic¸˜oes:

– o cliente possui um dispositivo que lhe permite aceder `a internet.

– o cliente subscreveu um servic¸o que lhe permite utilizar esse dispositivo para aceder `a internet.

– o cliente tem o seu dispositivo ligado `a internet. • Fluxo principal de eventos:

– o cliente abre um navegador da internet no seu dispositivo. – o cliente pede para aceder a uma p´agina na internet. – o sistema permite ao cliente aceder `a p´agina.

3. Adquirir pacotes de dados m´oveis • Atores:

– o cliente. • Pr´e-condic¸˜oes:

– o cliente possui um dispositivo m´ovel. • Fluxo principal de eventos:

– o cliente liga para o atendimento autom´atico. – o sistema apresenta as opc¸˜oes ao cliente.

– o cliente indica qual o pacote m´ovel que pretende adquirir. 4. Assistir a um canal transmitido em direto

• Atores: – o cliente. • Pr´e-condic¸˜oes:

– o cliente possui um dispositivo que reproduz v´ıdeo.

– o dispositivo est´a ligado `a rede da empresa de telecomunicac¸˜oes. • Fluxo principal de eventos:

– o cliente pede a lista de canais dispon´ıveis. – o sistema apresenta a lista de canais.

– o cliente seleciona o canal a que pretende assistir. 5. Rever um programa transmitido nos ´ultimos dias

(40)

Cap´ıtulo 3. An´alise 24

– o cliente. • Pr´e-condic¸˜oes:

– o cliente possui um dispositivo que recebe programas transmitidos. – o cliente subscreveu um servic¸o que lhe permite assistir aos programas

transmitidos nos ´ultimos dias.

– o dispositivo est´a ligado `a rede da empresa de telecomunicac¸˜oes. • Fluxo principal de eventos:

– o cliente pede a lista de programas dispon´ıveis. – o sistema apresenta a lista de programas.

– o cliente seleciona o programa a que pretende assistir.

6. Sincronizar conte ´udos multim´edia entre a televis˜ao e um dispositivo m´ovel • Atores:

– o cliente. • Pr´e-condic¸˜oes:

– o cliente possui uma televis˜ao e um dispositivo m´ovel. – o cliente subscreveu um pacote de canais para a televis˜ao. – o dispositivo m´ovel est´a junto `a televis˜ao.

• Fluxo principal de eventos:

– o cliente pede a lista de conte´udos dispon´ıveis na televis˜ao. – o sistema apresenta os conte´udos armazenados.

– o cliente seleciona o conte´udo que pretende sincronizar. 7. Mudar o tarif´ario do telem´ovel na ´area de cliente

• Atores: – o cliente. • Pr´e-condic¸˜oes:

– o cliente possui um dispositivo que pode aceder `a internet.

– o cliente subscreveu um servic¸o que lhe permite utilizar esse dispositivo para aceder `a internet.

– o cliente tem o seu dispositivo ligado `a internet. – o cliente possui telefone ou telem´ovel.

– o cliente subscreveu um tarif´ario que lhe permite utilizar esse equipa-mento para realizar chamadas.

(41)

– o cliente tem acesso a uma ´area de cliente disponibilizada pela empresa de telecomunicac¸˜oes.

• Fluxo principal de eventos:

– o cliente abre um navegador da internet no seu dispositivo.

– o cliente acede `a sua ´area de cliente na p´agina da empresa de telecomunicac¸˜oes. – o cliente escolhe outro tarif´ario na lista de tarif´arios dispon´ıveis.

– o sistema confirma a mudanc¸a do tarif´ario do cliente. 8. Adquirir um filme na aplicac¸˜ao dom´estica ou m´ovel

• Atores: – o cliente. • Pr´e-condic¸˜oes:

– o cliente possui um aparelho que lhe permite assistir a televis˜ao digital. – o cliente subscreveu um servic¸o que lhe permite utilizar esse aparelho

para adquirir filmes num videoclube digital. • Fluxo principal de eventos:

– o cliente abre uma lista de filmes no seu aparelho. – o cliente escolhe e compra um filme da lista. – o sistema disponibiliza o filme.

9. Registar uma nova instalac¸˜ao • Atores:

– um t´ecnico de telecomunicac¸˜oes. • Pr´e-condic¸˜oes:

– o t´ecnico instalou um servic¸o da empresa de telecomunicac¸˜oes a um cli-ente.

– o t´ecnico tem o seu dispositivo m´ovel ligado `a internet.

– o t´ecnico tem acesso ao sistema de registo de novas instalac¸˜oes. • Fluxo principal de eventos:

– o t´ecnico preenche os dados de uma nova instalac¸˜ao. – o t´ecnico regista uma nova instalac¸˜ao no sistema. – o sistema confirma o registo da nova instalac¸˜ao. 10. Registar um novo cliente

(42)

Cap´ıtulo 3. An´alise 26

– um assistente. • Pr´e-condic¸˜oes:

– o assistente trabalha numa loja f´ısica da empresa de telecomunicac¸˜oes. – o assistente tem um computador ligado `a internet.

– o assistente tem acesso ao sistema de registo de novos clientes. • Fluxo principal de eventos:

– o assistente preenche os dados do novo cliente. – o assistente regista um novo cliente no sistema. – o sistema confirma o registo do novo cliente. 11. Atualizar uma instalac¸˜ao dom´estica pr´e-existente

• Atores:

– um t´ecnico de telecomunicac¸˜oes. • Pr´e-condic¸˜oes:

– o t´ecnico alterou os servic¸os prestados pela empresa de telecomunicac¸˜oes a um cliente.

– o t´ecnico tem o seu dispositivo m´ovel ligado `a internet. – o t´ecnico tem acesso ao sistema de registo de alterac¸˜oes. • Fluxo principal de eventos:

– o t´ecnico pesquisa o cliente.

– o sistema apresenta os dados da instalac¸˜ao antiga.

– o t´ecnico atualiza os dados com as alterac¸˜oes que realizou. – o sistema confirma a atualizac¸˜ao dos servic¸os do cliente. 12. Disponibilizar o v´ıdeo de v´arias cˆamaras num evento

• Atores:

– um t´ecnico de telecomunicac¸˜oes. • Pr´e-condic¸˜oes do t´ecnico:

– verificou o funcionamento das v´arias cˆamaras. – tem uma ligac¸˜ao `a internet de ´ultima gerac¸˜ao. – tem o seu dispositivo m´ovel ligado `a internet. – tem acesso ao sistema de transmiss˜ao de v´ıdeo. • Fluxo principal de eventos:

(43)

– o sistema verifica as condic¸˜oes da rede. – o t´ecnico inicia a transmiss˜ao.

– o sistema confirma que a transmiss˜ao se est´a a realizar com sucesso. – o t´ecnico termina a transmiss˜ao.

13. Mudar o tarif´ario de um cliente por telefone • Atores:

– um cliente. – um telefonista. • Pr´e-condic¸˜oes:

– o telefonista trabalha numa central de atendimento. – o telefonista tem um computador ligado `a internet.

– o telefonista tem acesso ao sistema com as ´areas dos clientes. – o cliente subscreveu um servic¸o da empresa de telecomunicac¸˜oes. • Fluxo principal de eventos:

– o cliente telefona para a central de atendimento. – o cliente fornece os seus dados pessoais ao telefonista. – o telefonista pesquisa a conta do cliente.

– o cliente indica o tarif´ario que pretende.

– o telefonista muda o tarif´ario do cliente no sistema. – o sistema confirma a mudanc¸a do tarif´ario do cliente. 14. Adicionar um novo tarif´ario

• Atores:

– um t´ecnico de suporte. • Pr´e-condic¸˜oes:

– o t´ecnico trabalha na equipa de suporte da empresa de telecomunicac¸˜oes. – o t´ecnico tem acesso ao sistema para realizar a sua manutenc¸˜ao.

– o t´ecnico recebe os dados do novo tarif´ario. • Fluxo principal de eventos:

– o t´ecnico insere os dados do novo tarif´ario. – o t´ecnico adiciona o novo tarif´ario ao sistema. – o sistema confirma a adic¸˜ao do novo tarif´ario.

(44)

Cap´ıtulo 3. An´alise 28

3.4

Diagramas de fluxos de dados

Estes diagramas permitem observar as transformac¸˜oes realizadas sobre os dados cap-turados pelos conectores.

Os produtores de dados representados nos diagramas s˜ao os aparelhos dom´esticos de telecomunicac¸˜oes e as lojas de vendas ou apoio ao cliente. Estes alteram dados nas BDs em produc¸˜ao e s˜ao maioritariamente sistemas propriet´arios da empresa de telecomunicac¸˜oes ou sistemas adquiridos `a Ericsson1, Cisco2e CGI3.

O intermedi´ario Kafka situa-se entre publicadores e subscritores permitindo-lhes res-petivamente escrever e ler fluxos de dados. Os dados publicados s˜ao armazenados de forma persistente e tolerante a faltas. O seu funcionamento num grupo de m´aquinas (cluster) permite-lhe oferecer uma boa escalabilidade e suportar fluxos de comunicac¸˜ao em tempo real.

Figura 3.1: Diagrama de Fluxos de Dados do Sistema n´ıvel 0

1Communication Services - Ericsson, https://www.ericsson.com/ourportfolio/digital-services-solution-areas/communication-services

2Managed Services - Cisco, https://web.archive.org/web/20180730203455/https://www.ericsson.com/ourportfolio/digital-services-solution-areas/communication-services

3Customer Service and Billing: Telco and Media - CGI UK,

(45)

No diagrama de fluxos de dados de n´ıvel 0, figura 3.1, ´e poss´ıvel observar que as alterac¸˜oes provenientes dos produtores s˜ao convertidas para o formato JSON e publicadas no intermedi´ario Kafka.

Figura 3.2: Diagrama de Fluxos de Dados do Sistema n´ıvel 1

No diagrama de fluxos de dados de n´ıvel 1, figura 3.2, est´a representada a captura das alterac¸˜oes das BDs de produc¸˜ao, a utilizac¸˜ao de uma base de dados auxiliar para cada conector para estes obterem parˆametros de configurac¸˜ao e manterem os dados das ´ultimas alterac¸˜oes sem sobrecarregarem as BDs de produc¸˜ao, e a publicac¸˜ao do JSON no intermedi´ario Kafka depois de formatado.

Com a continuac¸˜ao do funcionamento dos conectores espera-se que, quando tiverem sido capturadas alterac¸˜oes em todas as linhas, as tabelas auxiliares se tornem r´eplicas das que est˜ao em produc¸˜ao.

(46)

Cap´ıtulo 3. An´alise 30

(47)

realizadas pelo conector desenvolvido pela equipa, desde a recec¸˜ao das notificac¸˜oes das alterac¸˜oes, `a obtenc¸˜ao das mesmas seguida do seu registo numa tabela auxiliar e posterior convers˜ao para publicac¸˜ao no intermedi´ario Kafka.

O conector Oracle foi desenvolvido pela equipa mas foi analisado neste projeto como parte do sistema e inspirac¸˜ao para a realizac¸˜ao dos outros conectores.

No diagrama de fluxos de dados SQL Server, figura 3.4, ´e descrito o funcionamento interno do conector com maior detalhe, nomeadamente a captura de dados a partir das tabelas auxiliares preenchidas pelo mecanismo de CDC integrado e a sua formatac¸˜ao em JSON antes de ser publicado no intermedi´ario Kafka.

No diagrama de fluxos de dados MySQL, figura 3.5, descrevem-se as operac¸˜oes inter-nas do conector que obt´em as alterac¸˜oes a partir do ficheiro de registo bin´ario atualizado pelo SGBD.

3.5

Diagrama de transic¸˜ao de estados dos conectores

O diagrama na figura 3.6 apresenta as diversas fases do funcionamento dos conectores: desde a captura de alterac¸˜oes, `a sua obtenc¸˜ao, convers˜ao e publicac¸˜ao. O estado em que se obt´em as alterac¸˜oes inclui as pesquisas para as completar e a sua inserc¸˜ao nas tabelas auxiliares. Estas interac¸˜oes com as BDs n˜ao foram representadas como estados pois s˜ao realizadas quando o conector est´a a obter alterac¸˜oes. Como a publicac¸˜ao de alterac¸˜oes no intermedi´ario Kafka n˜ao bloqueia os conectores, eles podem esperar mais alterac¸˜oes sempre que existam atrasos.

3.6

Diagramas de atividades

O diagrama de atividades geral, na figura 3.7, ilustra as atividades realizadas pelo sis-tema para receber as publicac¸˜oes dos conectores e entreg´a-las aos subscritores conforme as suas preferˆencias. Nos diagramas seguintes que s˜ao espec´ıficos de cada tecnologia de base de dados ´e poss´ıvel observar as atividades realizadas por cada um dos conectores antes de formatarem e publicarem o JSON.

No diagrama de atividades do conector Oracle desenvolvido pela equipa, figura 3.8, ´e poss´ıvel observar a utilizac¸˜ao da funcionalidade disponibilizada pelo SGBD Oracle Noti-fications para conhecer que linhas s˜ao alteradas.

No diagrama de atividades do conector SQL Server, figura 3.9, observa-se a im-portˆancia das atividades realizadas pelo mecanismo de captura de dados (CDC) disponi-bilizado pelo SGBD para detetar e registar as alterac¸˜oes em tabelas auxiliares. O conector tem a responsabilidade de identificar as que ainda n˜ao foram enviadas para o intermedi´ario Kafka, formatar o JSON e public´a-las.

(48)

Cap´ıtulo 3. An´alise 32

(49)
(50)

Cap´ıtulo 3. An´alise 34

(51)

as alterac¸˜oes previamente registadas pelo SGBD no ficheiro de log bin´ario e consulta as BD para completar os dados recolhidos.

O diagrama do conector Oracle foi inclu´ıdo para realc¸ar as diferenc¸as entre os v´arios conectores que resultaram das especificidades de cada tecnologia de base de dados.

3.7

Diagramas de sequˆencia

Nos diagramas de sequˆencia ´e poss´ıvel observar a ordem das chamadas executadas pelos procedimentos e func¸˜oes de cada conector que culminam no envio das alterac¸˜oes em formato JSON para o intermedi´ario Kafka.

O diagrama do conector Oracle, figura 3.11, foi inclu´ıdo para realc¸ar as diferenc¸as en-tre as chamadas espec´ıficas de cada conector e permite observar as notificac¸˜oes enviadas pelo SGBD ao conector PL/SQL desenvolvido pela equipa.

O diagrama do conector SQL Server, figura 3.12, ilustra a pesquisa de alterac¸˜oes nas tabelas auxiliares preenchidas pelo SGBD enquanto o do MySQL apresenta a pesquisa no ficheiro de log bin´ario e na BD para reunir todos os dados sobre as alterac¸˜oes.

O diagrama do conector MySQL, figura 3.13, permite observar que o conector pes-quisa o registo bin´ario de alterac¸˜oes, que j´a ´e realizado por defeito nas vers˜oes mais recen-tes, para obter as ´ultimas alterac¸˜oes que depois completa com uma pesquisa nas tabelas.

3.8

Diagramas de classes

Estes diagramas permitem observar a organizac¸˜ao das tabelas em cada BD. • Os diagramas UML das tabelas nas BDs s˜ao:

- o diagrama da BD auxiliar dos conectores, figuras 3.14, 3.15, 3.16 onde estes guardam:

- as linhas alteradas.

- as informac¸˜oes do mecanismo de captura de dados (CDC). - os parˆametros de configurac¸˜ao dos conectores.

- os diagramas de exemplo das tabelas existentes nas BDs em produc¸˜ao nas figuras 1 e 2 em anexo.

• Nas tabelas onde existem reticˆencias ap´os o nome das colunas [67], a quantidade total de colunas ´e vari´avel pois depende das colunas da tabela de produc¸˜ao onde se detetam alterac¸˜oes.

(52)

Cap´ıtulo 3. An´alise 36

(53)
(54)

Cap´ıtulo 3. An´alise 38

(55)
(56)

Cap´ıtulo 3. An´alise 40

Figura 3.11: Diagrama de Sequˆencia do Conector Oracle

(57)

Figura 3.13: Diagrama de Sequˆencia do Conector MySQL

(58)

Cap´ıtulo 3. An´alise 42

Figura 3.15: Diagrama de Classes do Conector SQL Server

(59)

Planeamento

Seguidamente ser´a apresentado o planeamento do projeto, desde os recursos humanos e as tecnologias envolvidas at´e ao modelo de desenvolvimento utilizado e a distribuic¸˜ao de tarefas.

4.1

Recursos

Os recursos associados ao projeto s˜ao os mencionados nas pr´oximas secc¸˜oes.

4.1.1

Recursos humanos

• As pessoas envolvidas foram:

– o autor que ficou respons´avel pelo desenvolvimento dos conectores SQL Ser-ver e MySQL e testes do sistema.

– os membros da equipa de desenvolvimento do sistema.

• O esforc¸o do autor iniciou-se em janeiro e terminou em setembro: 8h por dia e 5 dias por semana durante 9 meses, como vis´ıvel no diagrama de alocac¸˜ao de recur-sos, figura 4.1.

• A organizac¸˜ao da equipa foi:

– o autor que desenvolveu os conectores para as BD SQL Server e MySQL e re-alizou os testes ao sistema seguindo as indicac¸˜oes da equipa que desenvolveu o conector para as BD Oracle e os outros componentes do sistema.

• As justificac¸˜oes para o esforc¸o do autor e para a organizac¸˜ao j´a referida resultam: – da candidatura a este projeto apenas na segunda fase.

– da equipa de desenvolvimento do sistema j´a n˜ao estar alocada a este projeto a tempo inteiro porque j´a conclu´ıram a sua parte do trabalho.

(60)

Cap´ıtulo 4. Planeamento 44

– na lista das tarefas em que se divide este trabalho e no tempo previsto para cada uma que est˜ao apresentados no diagrama Gantt, figura 3 em anexo no final deste documento.

4.1.2

Tecnologias envolvidas

Na pr´oxima lista est˜ao presentes todas as tecnologias envolvidas no trabalho. No ˆambito do projeto

• Os servidores que contribuem para a persistˆencia dos dados capturados pertencem a uma estrutura (framework) de processamento distribu´ıdo (Hadoop) :

– consumidor JSON: que estabelece a ligac¸˜ao entre PL/SQL e o intermedi´ario Kafka traduzindo JSON enviado por HTTP para o protocolo do intermedi´ario Kafka.

– intermedi´ario Kafka: que ´e o local onde se publicam, subscrevem, processam e persistem as alterac¸˜oes convertidas para JSON pelo conector.

– escalonador de tarefas (Oozie): que ´e a agenda de trabalhos Hadoop.

– sistema de ficheiros Hadoop - Hadoop File System (HDFS): que ´e o sistema utilizado para guardar os ficheiros.

– HIVE: que ´e o local onde se persistem todos os dados publicados pelos conec-tores.

– interface Web de an´alise de dados (HUE): que ´e a interface web para analisar os dados integrados.

– gestor de recursos (YARN) com MapReduce2: que ´e o gestor de recursos e a agenda de trabalhos Hadoop com biblioteca de processamento de grandes quantidades de dados.

– servic¸o de informac¸˜oes de configurac¸˜ao (ZooKeeper): que ´e o servic¸o de informac¸˜oes de configurac¸˜ao, sincronizac¸˜ao e registo de nomes.

No ˆambito do conector

• Os servidores de BDs em produc¸˜ao s˜ao: – Oracle SQL: BD Oracle.

– SQL Server: BD Microsoft. – MySQL: BD OpenSource/Oracle. • As linguagens utilizadas nos conectores s˜ao:

(61)

– SQL. – PL/SQL. – T-SQL. – C#. – C.

• Os ambientes de desenvolvimento onde se implementaram os conectores s˜ao: – Oracle SQL Developer.

– Microsoft SQL Server Management Studio. – MySQL Workbench.

– Visual Studio. – CodeBlocks.

Tabela 4.1: Competˆencias pr´evias nas linguagens utilizadas

Linguagem SQL PL/SQL e T/SQL Java C# C

Dom´ınio Bom Muito reduzido Bom Muito reduzido Bom

4.2

Estimac¸˜ao

Em seguida s˜ao apresentadas as estimac¸˜oes para este trabalho.

4.2.1

Do esforc¸o dispon´ıvel

O autor deste projeto est´a dispon´ıvel:

8(horas) ∗ 22(dias) ∗ 9(meses) = 1584(horas)

4.2.2

Modelos emp´ıricos (COCOMO)

Esta ´e a estimac¸˜ao utilizando o modelo emp´ırico Constructive Cost MOdel (COCOMO): • num Projeto Orgˆanico a equipa e a dimens˜ao do projeto s˜ao reduzidas.

- Estas s˜ao as constantes caracter´ısticas deste tipo de projeto: a = 2.4; b = 1.05; c = 2.5; d = 0.38

Imagem

Tabela 2.1: Comparac¸˜ao entre os trabalhos relacionados com o conector SQLServer Problemas Bibliografia A B C D E F G H I [73] X X X X [59] X X [16] X X [49] X X [68] X X X [15] X [36] X X [26] X [28] X X [27] X [35] X X X X
Tabela 2.3: Comparac¸˜ao entre os trabalhos relacionados com o conector MySQL Problemas Bibliografia P Q R S T U V X Z AA AB AC AD [74] X X X [58] X X [42] X X [40, 66] X X X X [39, 69] X X [14, 34] X X X [38] X X X [48] X [41] X [43] X X [37] X X [19] X X
Figura 3.1: Diagrama de Fluxos de Dados do Sistema n´ıvel 0
Figura 3.2: Diagrama de Fluxos de Dados do Sistema n´ıvel 1
+7

Referências

Documentos relacionados

Frequencia Atribuição Cipro Neutra Bending OutHOCARBOXILATO Bending InHOCARBOXILATO Bending InCOCARBOXILATO Bending InHOCARBOXILATO Bending InCOCARBOXILATO TwistingHCHAlifatico

Considerando a importância dos tratores agrícolas e características dos seus rodados pneumáticos em desenvolver força de tração e flutuação no solo, o presente trabalho

A simple experimental arrangement consisting of a mechanical system of colliding balls and an electrical circuit containing a crystal oscillator and an electronic counter is used

Objetivo da Pesquisa: A pesquisa tem como objetivo geral avaliar a qualidade de vida dos participantes do projeto social “Idoso Sim, Velho Não” do 2º Batalhão de Bombeiros Militar

No entanto, para aperfeiçoar uma equipe de trabalho comprometida com a qualidade e produtividade é necessário motivação, e, satisfação, através de incentivos e política de

nesta nossa modesta obra O sonho e os sonhos analisa- mos o sono e sua importância para o corpo e sobretudo para a alma que, nas horas de repouso da matéria, liberta-se parcialmente

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

3.3 o Município tem caminhão da coleta seletiva, sendo orientado a providenciar a contratação direta da associação para o recolhimento dos resíduos recicláveis,