TCC Final
TCC Final
TCC Final
Palhoça
2018
EDUARDO NIENKOTTER BOEING
RICARDO NIENKOTTER BOEING
Palhoça
2018
AGRADECIMENTOS
Companies that does not have expirience in development area or have the need of generate
resources quickly, skip an important part of the project, the planning, and with that,
sometimes the best tools are no chosen to fit the software needs. In this study scenario we
analyze the database. In the beginning of the development of the application there was no
problems with performance in queries because the quantity of data and accesses was small,
but, with time, this scenario changed and the first problems with performance appears. In this
study the authors applied two alternatives to solve the query problems in a table of database
postgreSQL. The first solution was the partition and the second was the application of a
extension for column oriented database. After Analise benchmarks of the current scenario and
the others solutions proposed by the authors, it was concluded that the partition had no
significant gains, but the column oriented database solution manage to reduce the query time
approximately by half for the main queries of the system.
1 INTRODUÇÃO....................................................................................................................................9
1.1 PROBLEMÁTICA..........................................................................................................................10
1.2 OBJETIVOS.....................................................................................................................................10
1.2.1 Objetivos Gerais...........................................................................................................................11
1.2.2 Objetivos específicos....................................................................................................................11
1.3 JUSTIFICATIVA..............................................................................................................................11
1.4 ESTRUTURA DO TRABALHO......................................................................................................12
2 FUNDAMENTAÇÃO TEÓRICA....................................................................................................13
2.1 SGDB – SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS.......................................13
2.1.1 Histórico........................................................................................................................................14
2.1.2 Propriedades ACID......................................................................................................................17
2.1.3 BD Relacionais: BD por linhas e por colunas............................................................................17
2.1.4 Particionamento...........................................................................................................................21
2.1.4.1 Particionamento horizontal.........................................................................................................21
2.1.4.2 Particionamento vertical.............................................................................................................21
2.2 POSTGRES......................................................................................................................................22
2.2.1 Particionamento no PostgreSQL................................................................................................23
2.2.2 PostgreSQL orientação a coluna.................................................................................................24
2.3 CONSIDERAÇÕES FINAIS...........................................................................................................26
3 MÉTODO...........................................................................................................................................27
3.1 CARACTERIZAÇÃO DO TIPO DE PESQUISA...........................................................................27
3.2 ATIVIDADES METODOLÓGICAS................................................................................................28
3.3 DELIMITAÇÔES.............................................................................................................................29
4 RESULTADOS OBTIDOS................................................................................................................30
4.1 FLUXOGRAMA..............................................................................................................................30
4.2 REQUISITOS...................................................................................................................................32
4.2.1 Requisitos funcionais...................................................................................................................32
4.2.2 Requisitos não funcionais............................................................................................................32
4.3 CENÁRIO ATUAL...........................................................................................................................33
4.4 CENÁRIO PROPOSTO...................................................................................................................33
4.4.1 Particionamento...........................................................................................................................34
4.4.2 Extensão colunar..........................................................................................................................34
4.5 RESULTADOS OBTIDOS...............................................................................................................35
4.6 CONCLUSÕES DOS RESULTADOS.............................................................................................40
5 CONCLUSÕES E TRABALHOS FUTUROS................................................................................41
5.1 CONCLUSÕES................................................................................................................................41
5.2 TRABALHOS FUTUROS...............................................................................................................42
1 INTRODUÇÃO
9
1.1 PROBLEMÁTICA
1.2 OBJETIVOS
Este trabalho realiza uma pesquisa na área de banco de dados a fim de juntar
conhecimento necessário para solucionar o problema de pesquisa.
10
1.2.1 Objetivos Gerais
1.3 JUSTIFICATIVA
11
realizados por usuários e micro serviços deste sistema. Com isso surgiu a necessidade de ser
realizada uma pesquisa para avaliar, dentre as soluções encontradas, qual seria a ideal para ser
aplicada no cenário contextualizado.
12
2 FUNDAMENTAÇÃO TEÓRICA
13
• Alterar dados em arquivos existentes
• Remover arquivos existentes do banco de dados
Sendo assim os SGDBs fornecem essas operações para facilitar a manipulação dos
dados que são armazenados. Com o constante crescimento na área tecnológica não é difícil
perceber o armazenamento de dados sendo realizado em computadores e sendo deixado de
lado antigos métodos de armazenamento de informação. Segundo Ramakrishnan e Gehrke
(2008) “Desde os primeiros computadores, armazenar e manipular dados tem sido o principal
foco dos aplicativos”. Os mesmos autores ainda afirmam que “Um sistema de gerenciamento
de banco de dados, ou SGDB, é um software projetado para auxiliar a manutenção e
utilização de vastos conjuntos de dados.”
2.1.1 Histórico
14
possuam formatos e linguagens diferentes. (SILBERSCHATZ; KORTH;
SUDARSHAN, 2008, p.2).
• Dificuldade de acesso aos dados: caso seja necessário acessar algum dado específico
ou até mesmo realizar algum filtro sobre os dados armazenados em arquivos, será
necessário a criação de um programa para realizar o filtro ou a busca necessitada. Não
existe uma maneira mais eficiente de se realizar tais pesquisas. (SILBERSCHATZ;
KORTH; SUDARSHAN, 2008, p.3).
15
O autor finaliza dizendo que: “Estas dificuldades, entre outras, provocam o
desenvolvimento dos SGBDs”.
Quando se escuta a palavra “histórico” vem à cabeça algo antigo. Porém, quando
diz respeito a de banco de dados é algo bem recente. O primeiro sistema de gerenciamento de
banco de dados de propósito geral foi projetado por Charles Bachman no início da década de
1960, e foi nomeado “depósito de dados integrados”. Ele constituiu a base do modelo de
dados de rede, que influenciou muito os sistemas de banco de dados na década de 1960.
(Ramakrishnan e Gehrke, 2008).
O mesmo autor ainda fala que no final da década de 1960, a IBM desenvolveu o
SGBD Sistema de gerenciamento de Informação (IMS --- Information Management System),
ainda usado atualmente em diversas instalações. O IMS constituiu a base da estrutura de
representação alternativa de dados, chamada modelo de dados hierárquico.
Foi na década seguinte que nasceu o banco de dados que é utilizado na maioria
das aplicações hoje, como continua descrevendo o autor a respeito. Em 1970, Edgar Codd
propôs uma nova estrutura de representação denominada modelo de dados relacional, que foi
muito importante no desenvolvimento de vários sistemas de banco de dados que tomaram
como base o modelo relacional. Porém, foi na década de 1980, que o modelo relacional
consolidou sua posição como o paradigma dominante de SGBD, e o uso dos sistemas de
banco de dados continuou a se difundir cada vez mais, como afirma o mesmo autor.
O autor continua o histórico cronológico dizendo que, no final da década de 1980
e no início da década de 1990 houve muitos avanços nos sistemas de banco de dados.
Investiu-se em diversas pesquisas em busca de linguagens de consulta mais poderosas.
Diversos fabricantes atribuíram a seus sistemas a capacidade de armazenar imagens texto e
consultas mais complexas. Um dos períodos mais importantes foi o início do uso dos SGBD
nos sistemas web, onde houve uma transição de sistemas que armazenam seus dados em
arquivos dos sistemas operacionais, para o uso dos SGBD para armazenar dados acessados
através de um navegador. Foi quando todos os fabricantes investiram em seus bancos de
dados para torná-los mais adequados para o desenvolvimento web.
Ramakrishnan e Gehrke (2008) afirmam que “O gerenciamento de banco de dados
continua a ganhar importância conforme mais e mais dados tornam-se disponíveis on-line e
ainda mais acessíveis através da rede”.
16
2.1.2 Propriedades ACID
1. Os usuários devem ser capazes de enxergar cada execução como atómica, ou seja,
todas as transações são executadas ou nenhuma delas é executada. Os usuários não
devem se preocupar com transações incompletas (RAMAKRISHNAN; GEHRKE,
2008, p.435).
3. Os usuários devem ser capazes de realizar uma transação sem se preocupar com o
efeito de outras transações em execução, mesmo que o SGBD intercale as ações de
várias transações por motivos de desempenho. Essa propriedade é conhecida como
isolamento (RAMAKRISHNAN; GEHRKE, 2008, p.435).
4. Segundo Ramakrishnan e Gehrke (2008, p.436) “Uma vez que o SGBD informe ao
usuário que uma transação foi concluída com êxito, seus efeitos devem persistir,
mesmo que o sistema falhe antes que todas as suas alterações sejam refletidas no
disco”. Esta propriedade é conhecida como durabilidade.
17
SQLServer e Oracle. Segundo Ramakrishnan e Gehrke (2008, p.49) “Os sistemas de banco de
dados relacional são onipresentes no mercado e representam um negócio de bilhões de
dólares”.
Como o seu próprio nome diz, a base do modelo de dados relacional é a relação:
os dados são organizados com uma tabela simples de linhas e colunas, de forma que a leitura
nos dados dessa tabela seja tão simples que até uma pessoa leiga no assunto consiga
compreender os dados ali contidos. Segundo (RAMAKRISHNAN; GEHRKE, 2008, p.49)
“As principais vantagens do modelo relacional em relação aos modelos de dados mais antigos
são sua representação de dados simples e a facilidade com que mesmo consultas complexas
podem ser expressas.
No modelo relacional, podemos comparar a relação com uma tabela de valores, na
qual a tupla da relação será a linha de dados da tabela e o atributo é o cabeçalho da coluna.
Amadeu (2015, p. 62)
Na figura 1 pode-se observar uma relação no banco de dados:
18
• Restrições baseadas em esquema ou restrições explícitas, que podem ser expressas
diretamente nos esquemas do modelo de dados.
• Restrições sobre valores NULL – Garante que o atributo da tupla possua um valor
válido diferente de NULL
19
Com essas restrições no modelo de dados relacional, algumas regras de
integridade são aplicadas para que a confiabilidade dos dados armazenados possa ser
validada, a fim de garantir a qualidade do banco de dados.
Um SGBD orientado à coluna se difere no fato de suas consultas de pesquisa
serem superiores ao modelo orientado à linhas.
JOSKO (2014) também conclui que esse modelo faz com que o tempo de resposta
de operações de cálculo e/ou agregações massivos seja inferior àquele da abordagem por
linhas.
A figura 2 mostra a diferença na estrutura de um banco de dados relacional por
linhas e um banco de dados relacional por colunas.
2.1.4 Particionamento
Particionamento não condiz apenas em divisão de tabelas, ele também pode ser
alcançado através de alocação de tabelas fisicamente em unidades individuais de disco.
Dividir tabelas relacionadas em unidades físicas distintas pode melhorar as consultas, pois
quando é necessário o uso de junções diversos cabeçotes de disco lerão os dados ao mesmo
tempo (MICROSOFT, 2016).
21
2. Particionamento de linhas: o particionamento por linhas divide a tabela original
verticalmente em tabelas com menos colunas. Como afirmado por (MICROSOFT,
2016) “Cada linha lógica em uma tabela dividida coincide com a mesma linha lógica
das outras tabelas conforme é identificado por uma coluna UNIQUE KEY idêntica,
em todas as tabelas particionadas” .
2.2 POSTGRES
22
Figura 3: Limites PostgreSQL
• Criar uma tabela “pai”, a partir do qual todas as partições herdaram o seu
comportamento. Esta tabela não deve conter nenhum dado e nenhuma restrição,
apenas se for pretendido que todas as tabelas que a herdaram também tenham essas
restrições.
• Criar várias tabelas “filhas” nas quais cada uma herdará a tabela “pai”. Normalmente
esses quadros não irão adicionar as colunas ao conjunto herdado.
• Para cada partição, criar um índice na coluna de chave(s), bem como quaisquer outros
índices que o usuário quiser.
23
• Opcionalmente, definir um disparador ou regra para redirecionar os dados inseridos na
tabela pai para a partição apropriada.
• Compressão: reduz em memória e em disco tamanho de dados por 2-4x. Pode ser
estendido para oferecer suporte a diferentes codecs.
24
• Suporta mais de 40 tipos de dados do Postgres. O usuário também pode criar novos
tipos e usá-los.
25
Figura 6: Gráfico comparativo sobre leitura de disco
26
3 MÉTODO
Com base no que foi proposto anteriormente pode-se classificar esta pesquisa
como aplicada, pois ela busca apresentar uma solução imediata a um problema real, com base
nas delimitações apresentadas. Barros e Lehfeld (2008, p.93) afirmam que a pesquisa
“aplicada” é aquela em que o pesquisador é movido pela necessidade de conhecer para a
aplicação imediata dos resultados. Contribui para fins práticos, visando à solução mais ou
menos imediata do problema encontrado na realidade.
Como a pesquisa que é realizada tem como base dados brutos de natureza real e
que a solução se da sobre uma análise de desempenho sobre estes mesmos dados e também
existência da necessidade de implantação desta solução, pode-se classificar a pesquisa como
quantitativa. Fonseca (2002, p.20) esclarece que a pesquisa quantitativa se centra na
objetividade. Influenciada pelo positivismo, considera que a realidade só pode ser
compreendida com base na análise de dados brutos, recolhidos com auxílio de instrumentos
padronizados e neutros.
27
Também pode-se classificar a pesquisa como experimental, pois através de dados
selecionados, serão observados e analisados valores estatísticos sobre o desempenho de
diferentes metodologias aplicadas sobre um banco de dados, e com base nestes valores
obtidos será descoberto a que se aplica na necessidade apresentada. Fonseca (2002, p.38)
afirma que a pesquisa experimental seleciona grupos de assuntos coincidentes, submete-os a
tratamentos diferentes, verificando as variáveis estranhas e checando se as diferenças
observadas nas respostas são estatisticamente significantes. Este trabalho também pode ser
classificado como uma pesquisa bibliográfica, pois o embasamento para este trabalho é feito
com base em livros, artigos e documentações.
3.3 DELIMITAÇÕES
29
Os dados são transmitidos dos módulos através de sinal GPRS, item 3 do
fluxograma, para um sistema desenvolvido na linguagem Delphi, item 4 do fluxograma, como
cada tecnologia transmite os dados em um padrão diferente, esse sistema é responsável por ler
esses dados, e gerar informações brutas, tais como : estado da ignição do veículo, velocidade
atual, temperatura, entre outras.
Os dados gerados pelo sistema Delphi são armazenados em uma base de dados
Postgres, item 5 do fluxograma, essa base de dados serve para alimentar dois sistemas a parte,
um sistema desktop, representado pelo item 6, no qual não iremos nos aprofundar, e um
sistema web, sendo esse o sistema onde os testes foram realizados, representado pelo item 9
do fluxograma.
Com os dados das posições dos veículos armazenadas no banco de dados da web,
vários serviços as consomem, gerando informação para o usuário final. Essas informações são
geradas em tempo real (rastreamento), em relatórios pré processados, relatórios em tempo real
demonstrados nos itens 10, 11 e 12. Logo as consultas na tabela de posições de veículos se dá
a todo momento por muitos usuários. Ao mesmo tempo que outras milhares de posições estão
sendo importadas pelos pelos serviços de importação, ou seja, a tabela possui uma grande
quantidade de escrita e leitura.
31
4.2 REQUISITOS
Para que o sistema consiga atender, tanto às expectativas dos usuários que visam
uma melhora na usabilidade, quanto às expectativas da equipe de desenvolvimento, que visam
uma solução simples e eficaz para o problema. Alguns requisitos foram levantados a fim de
guiar a escolha da melhor alternativa.
Estes requisitos foram divididos em requisitos funcionais e requisitos não
funcionais.
• Diminuir o tempo de processamento dos relatórios com dados de até 30 dias em 20%
• Diminuir o tempo de processamento dos relatórios com dados de um dia em 40%
• Diminuir o tempo de processamento dos serviços que processam dados da tabela de
posições em tempo real em 20%
32
4.3 CENÁRIO ATUAL
33
4.4.1 Particionamento
Com a estrutura da tabela criada, se deu necessário realizar a inclusão dos dados,
porém a inserção de dados nesta nova tabela colunar não pode ser realizada por scripts como
34
na proposta anterior, existe a necessidade de todos os dados a serem inseridos estarem em um
arquivo csv pois esta extensão não possui suporte a inserções de dados através de queries. A
partir disso, foi gerado um arquivo com todos os dados do banco atua e executada a query de
inserção a partir deste arquivo.
35
4.6 CONCLUSÕES DOS RESULTADOS
40
5 CONCLUSÕES E TRABALHOS FUTUROS
Neste capítulo são apresentadas as conclusões finais deste trabalho, tendo como
base o objetivo proposto. Assim como os resultados obtidos com este trabalho e a proposta de
trabalhos futuros.
5.1 CONCLUSÕES
41
De modo geral, o trabalho atingiu os objetivos propostos, já que a solução de base
de dados colunar se mostrou muito performática na busca de dados para alimentar os serviços
do sistema. E por ser uma implementação que não ocasionará grandes mudanças na
arquitetura atual do sistema, também se enquadra nos objetivos buscados pelo trabalho.
42
REFERÊNCIAS
DATE, C. J.. Introdução a sistemas de Banco de Dados. 8. ed. Rio de Janeiro: Pearson, 2004.
<http://unisul.bv3.digitalpages.com.br/users/publications/9788579361081/pages/_1> Acesso
em: 30 agost. 2016.
<http://unisul.bv3.digitalpages.com.br/users/publications/9788543006833/pages/-12> Acesso
em: 30 agost. 2016
CITUSDATA (Org.). PostgreSQL Columnar Store for Analytic Workloads. Disponível em:
JOSKO, João Marcelo Borovina. SGBD relacionais orientados a coluna: uma nova roupagem
ao Data Warehousing. 2014. Disponível em:
<http://www.devmedia.com.br/sgbd-relacionais-orientados-a-coluna-uma-nova-roupagem-ao-
data-warehousing-parte-01/11349>. Acesso em: 23 out. 2016
43
POSTGRES (Org.). About. 2016. Disponível em: <https://www.postgresql.org/about/>.
Acesso em: 23 out. 2016.
44
GIL, Antonio Carlos. Como Elaborar Projetos de Pesquisa. 4. ed. São Paulo: Atlas, 2007.
Disponível em:
<https://professores.faccat.br/moodle/pluginfile.php/13410/mod_resource/
content/1/como_elaborar_projeto_de_pesquisa_-_antonio_carlos_gil.pdf>. Acesso em: 16
nov. 2016.
45
APÊNDICES
46
APÊNDICE C – INSTALAÇÃO CSTORE_FDW
Tutorial completo
https://github.com/citusdata/cstore_fdw
Instalação de dependencias:
# Ubuntu 10.4+
sudo apt-get install protobuf-c-compiler
sudo apt-get install libprotobuf-c0-dev
PATH=/usr/local/pgsql/bin/:$PATH make
sudo PATH=/usr/local/pgsql/bin/:$PATH make install
shared_preload_libraries = 'cstore_fdw'
Criar extensão
50