• Nenhum resultado encontrado

Comparação entre Banco de Dados Relacional e NoSql

COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E NÃO- RELACIONAIS – MySQL x NoSql

2. Revisão Bibliográfica

2.1. Banco de Dados

2.1.3. Comparação entre Banco de Dados Relacional e NoSql

A Figura 3 mostra a diferença de desempenho entre o modelo relacional e não relacional, tomando como base linhas inseridas por segundo. Os SGBD’s (Sistemas Gerenciadores de Banco de Dados) utilizados nos testes são: SQL Server da Microsoft como SGBD relacional e o MongoDB da 10gen como SGBD não relacional orientado a documento.

Figura 3. Comparação entre número de Inserções - SQL x NoSQL(Mongo Time).

Fonte: Adaptado de Kennedy (2010).

Já a Figura 4 mostra a diferença de desempenho entre o modelo relacional e não relacional, tomando como base a execução de consultas complexas. Os SGBDs utilizados nos testes são: SQL Servere o MongoDB, conforme exemplo da Figura 3.

Figura 4. Comparação entre número de Consultas Complexas - SQL x NoSQL (Mongo Time).

Fonte: Adaptado de Kennedy (2010).

Estes testes informados acima, nas figuras 3 e 4,foram executados por outros autorese utilizo-ospara demonstrar que outros testes já foram feitos para a comparação entre os bancos de dados relacionais e os não-relacionais.

A tabela abaixo (Tabela 1) cita algumas características dos bancos de dados relacionais e os não relacionais, como consistência, disponibilidade, tolerância ao particionamento e escalonamento, sendo possível fazer uma comparação entre os dois tipos de banco de dados.

Tabela 1: Comparação entre BD’s

Características Modelo Relacional NoSQL Consistência Pelo fato de possuir uma

estrutura mais rígida e garantir em suas transações a existência dessa propriedade, as diversas regras existentes nesse modelo possibilitam uma maior rigidez quanto a garantia de consistência das informações, considerado o ponto mais forte desse modelo.

A consistência nesse modelo possui um caráter eventual, o que não garante que uma determinada atualização, em um dado momento, seja percebida por todos os nós, mas se nenhuma atualização for realizada sobre um item de dados, os acessos a esse item retornarão seu último valor atualizado.

Disponibilidade Devido à dificuldade de se trabalhar de forma eficiente com a distribuição de dados por causa de sua natureza estruturada, situações em que exigem uma maior demanda de um sistema que utiliza esse modelo podem não ser bem suportadas por ele.

Essa propriedade, junto com o alto grau de distribuição desse modelo, possibilita que o sistema fique um menor período de tempo não disponível, assim como também permite que a solicitação aos dados por um número crescente de clientes seja atendida.

Tolerância ao Particionamento

Pelo fato de não terem sido construídos com a finalidade de trabalharem com particionamento de dados, banco de dados que utilizam esse modelo não possuem um grau alto de tolerância ao particionamento, cuja razão principal seria a dificuldade de junções entre as tabelas.

Pela facilidade de se trabalhar de forma eficiente com a distribuição de dados, esse modelo é capaz de suportar grandes demandas de dados, assim como alta tolerância ao particionamento do mesmo entre os nós.

Escalonamento Devido à natureza estrutural do modelo, o escalonamento de bancos tende a ser uma tarefa complexa, onde tem-se como um dos motivos o fato de que a adição de novos nós não é realizada de modo natural.

Pelo fato de ser livre de esquemas, esse modelo possui uma maior flexibilidade, favorecendo, assim, a inclusão de uma quantidade crescente de nós, onde essa alta escalabilidade é considerada uma das principais vantagens desse modelo.

Fonte: Adaptado de Brito (2010).

Na tabela acima (Tabela 1) citamos o escalonamento como uma das características entre os bancos de dados, e o escalonamento é um diferencial muito grande para o desempenho do NoSql.

Existem dois tipos de escalonamentos:o escalonamento vertical (scale up) é uma opção que envolve o upgrade do servidor como um poder maior de processamento, mais memória ou disco numa máquina. Este tipo de escalonamento é mais utilizado em camadas de bancos de dados. O escalonamento horizontal (scale out) envolve o aumento da quantidade de servidores que disponibilizarão os dados de forma paralela, onde a grande quantidade de clientes poderá ter acesso a esses dados mais facilmente, garantindo também que a queda de um determinado servidor não gere indisponibilidade dos dados a todos os seus clientes.

Ambos os tipos de escalonamento são demonstrados na Figura 5.

Do lado esquerdo da figura, temos o escalonamento Horizontal, o qual possui apenas

um servidor e todos os usuários acessam os dados daquele servidor, e, do lado direito da figura, temos o escalonamento Vertical, onde há vários servidores e os usuários acessam apenas os servidores que irão utilizar, fazendo com que o banco de dados fique mais rápido, tendo em vista que menos usuários irão acessar os dados de um determinado servidor.

Figura 5. Exemplo Escalonamento Vertical e Horizontal.

Fonte: Adaptado de Brito (2010).

3.Metodologia

Este trabalho caracteriza-se como uma pesquisa e tem como objetivo comparar o desempenho entre dois tipos de banco de dados, através de vários testes. A princípio foi realizado um Estudo Teórico sobre Desempenho de banco de dados, envolvendo vários tipos de consultas e ambientes.

De acordo com o estudo foi possível aplicar de forma prática o conhecimento adquirido; sendo assim, o passo seguinte foi a instalação dos dois tipos de banco de dados: o MongoDB ,utilizado para testar os procedimentos com o banco de dados não relacional – NoSql e o SQL Server. Serve para testes com o banco de dados relacional – SQL. O MongoDB foi instalado em uma máquina com o sistema operacional Linux e o SQL Server no Windows.

Com a criação das duas máquinas virtuais, serão realizados testes com as consultas para que possam demonstrar resultados como tempo de execução de consultas simples. E também reportar resultados de tempo de execução com consultas mais complexas.

Para que se possa fazer a comparação entre os dois em tempo de execução de várias consultas, serão criados dois ambientes de banco de dados semelhantes para que o resultado seja o mais correto possível.