Dissertação de mestrado integrado em Engenharia de ComunicaçõesEm algumas organizações, a quantidade de dados registados nas suas bases de dados é
grande e continua a aumentar de forma linear ou exponencial ao longo do tempo. Face ao
constante aumento do volume de dados, torna-se necessário assegurar o acesso rápido e
ágil a estes, implementando novas formas de gestão.
A gestão de dados históricos é tipicamente uma tarefa que cada Sistema de Gestão de Base
de Dados (SGBD) efetua de forma muito própria, otimizada para o seu motor, não existindo
nenhuma norma adotada pelos vários SGBDs. Em particular, torna-se cada vez mais
complexo, do ponto de vista aplicacional, gerir os dados históricos guardados pelas
aplicações.
Neste trabalho é apresentada uma ferramenta que foi desenvolvida para permitir, face a um
modelo numa arquitetura MVC (Model View Controller) implementado em Ruby on Rails,
organizar a distribuição lógica dos dados para que, independentemente do SGBD usado, se
possa de forma eficaz retirar os dados antigos do sistema e armazená-los de forma a serem
facilmente recuperados. A ferramenta foi desenvolvida como uma biblioteca genérica, que
pode ser utilizada por qualquer aplicação, e com o objetivo específico de permitir o
particionamento dos dados.
Primeiro, foi realizada uma investigação sobre alguns SGBDs comerciais, como Oracle,
MySQL, MS SQL Server e PostgreSQL. Posteriormente a pesquisa foi direcionada para o ORM
utilizado pelo Ruby on Rails, o Active Record, de forma a perceber quais os métodos
utilizados para implementar os métodos CRUD (Create-Read-Update-Delete). A fim de
resolver os desafios do presente trabalho, foi desenhada e implementada uma biblioteca
que, juntamente com o ORM Active Record, permite particionamento de tabelas. O trabalho
realizado ao longo desta dissertação foi desenvolvido em ambiente empresarial, na Portugal
Telecom Inovação. No final foram realizados e analisados alguns testes para aferir o
desempenho da solução implementada.In some organisations, the amount of data stored in their databases is significantly large and
continues to increase linearly or exponentially over time. In order to respond to the
constant increase of data volume, it is necessary to ensure quick and agile access to the
data, implementing new management methods.
The management of historical data is typically a task that every Database Management
System (DBMS) does on its own way, optimized for its engine. However, from the application
point of view, it becomes increasingly complex to manage the historical data stored by the
applications.
This work presents a tool that was developed to allow, for a model in MVC architecture
(Model View Controller) implemented with Ruby on Rails, to organize the logical distribution
of data so that, independently of the DBMS used, it can be possible in an effective way, to
remove the older data from the system and store it in an easily restorable way. The tool was
developed as a generic library, which can be used by any application, and with the specific
goal of implementing data partitioning.
Firstly, a study was performed based on some commercial DMBS, such as Oracle, MySQL, MS
SQL Server and PostgreSQL. Afterwards, the research has been directed to the ORM used by
Ruby on Rails, the Active Record, in order to determine which methods it uses to implement
the CRUD (Create-Read-Update-Delete) methods. In order to solve the challenges of the
presented work, a library was designed and implemented, which along with the Active
Record ORM, allows table partitioning. The work done along this dissertation was developed
in a business environment, at Portugal Telecom Inovação. In the end some tests were made
and analyzed to assess the performance of the implemented solution