Curso – Sistemas de Informação, 5º Período, Noturno.
Disciplina – Banco de Dados II.
Docente - Prof. Dr. Geraldo Corrêa.
Discentes - Lucas Cortes, Marlon Moro,
Rodrigo Ramos,
Wellington Gonçalves.
Data – 30/09/2016
Trabalho – NoSql.
BANCO DE DADOS NOT ONLY SQL
Introdução
O mundo está cada dia
mais conectado, isso se deve ao fato da constante evolução tecnológica, tal
evolução é impulsionada muitas vezes pela possibilidade de automatização de
determinadas ações.
No princípio o avanço teve como
berço grandes empresas com um cenário de rotinas repetitivas e geralmente com
alto custo, como por exemplo o armazenamento e indexação de arquivos. Nesse
cenário que a IBM, na década de 1960 e 1970, iniciou pesquisas com o intuito de
tornar tal processo mais eficiente e eficaz.
Através das pesquisas promovidas
foram descobertos modelos de dados hierárquicos, de rede, relacionais entre
outros. Ted Codd, um dos pesquisadores da equipe, foi o responsável por
publicar o primeiro artigo sobre banco de dados relacionais.
A partir da publicação do artigo a
IBM constituiu um grupo de pesquisa conhecido como System R que tinha o
propósito de criar um banco de dados relacional. Com a evolução do projeto e
protótipos criou-se uma linguagem chamada Structured Query Language (SQL) que
acabou por tornar o padrão de linguagem para banco de dados.
Sistemas de banco de dados são
projetados para gerir grandes volumes de informações. O gerenciamento de
informações implica a definição das estruturas de armazenamento das informações
e a definição dos mecanismos para a manipulação dessas informações. Ainda, um
sistema de banco de dados deve garantir a segurança das informações armazenadas
contra eventuais problemas com o sistema, além de impedir tentativas de acesso
não autorizadas.
Um sistema de gerenciamento de banco
de dados é uma coleção de arquivos e programas inter-relacionados que permitem
ao usuário o acesso para consultas e alterações desses dados. O maior benefício
de um banco de dados é proporcionar ao usuário uma visão abstrata dos dados.
Isto é, o sistema acaba por ocultar determinados detalhes sobre a forma de
armazenamento e manutenção desses dados.
Sob a estrutura do banco de dados
está o modelo de dados: um conjunto de ferramentas conceituais usadas para
descrição de dados, relacionamentos entre dados, semântica de dados e regras de
consistência.
Modelo Relacional
O modelo relacional foi
introduzido a partir das pesquisas de Codd e tornou-se um padrão para
aplicações comerciais, devido a sua simplicidade e performance, com suas
características formais baseadas na teoria matemática das relações.
Tal modelo usa um conjunto de tabelas para representar tanto os dados
como a relação entre eles. Cada tabela possui múltiplas colunas e cada uma
possui num nome único, sendo que cada coluna descreve apenas um tipo de dado.
Desta forma um modelo com garantias de integridade. A integridade dos
dados é obtida a partir do relacionamento entre as tabelas utilizando das
chaves primárias de cada um, impossibilitando desta forma duas tuplas
diferentes corresponderem a mesma informação.
Um banco de dados relacional
consiste de uma coleção de relações, cada uma designada por um único nome. A
linguagem SQL permite a manipulação dos dados armazenados a partir de sua
estrutura padronizada.
Além da IBM, que iniciou as
pesquisas, outras grandes empresas têm seus próprios SGBD, como Oracle, Microsoft
e apesar de todos utilizarem o SQL cada um tem suas próprias peculiaridades na
forma de implementação.
Devido a esta ampla adesão das
empresas este modelo foi e ainda é amplamente utilizado, porém nem sempre o
mais adequado, dependendo dos tipos de aplicações que serão utilizadas.
O cenário tecnológico atual difere
bastante para o cenário do surgimento do banco de dados relacional, sendo
atualmente o volume de dados bem maior devido a aplicações como facebook,
twitter entre outros. Devido a este novo cenário outro modelo de banco de dados
vem ganhando espaço denominado NoSQL (Not Only SQL) que é o tema do trabalho em
questão.
NOSQL
NoSQL é uma abreviação de not only SQL(não somente sql), sigla utilizada para nomear bancos de dados
não relacionais de alta perfoamce, que surgiu em 1998, mais esse método começou
a ser usado nos anos 90, em banco de dados orientados a objeto, prometendo
poupar o trabalho de converter os objetos em linhas de código, mais atualmente
esse modelo é mais utilizado por empresas que processam uma quantidade
exorbitante de dados e necessitam de um armazenamento distribuído, como o Twitter que processa 7 TB de dados por dia.
Esse modelo utiliza um escalonamento horizontal, que distribui os dados
em múltiplos nós (servidores), porem ele não suporta as propriedades ACID
(Atomicidade, Consistência, Isolamento e Durabilidade), então geralmente o
bancos de dados é desenvolvido para atender as necessidades sigulares de um
projeto ou sistema em especifico.
Com o crescimento exponencial dos bancos de dados e aplicações,
aplicações que trabalham em larga escala atendendo milhares de usuários ao
mesmo tempo, surgiu a necessidade de um novo modelo de banco de dados, um não
relacional que consiga processa uma enorme quantidade de dados de forma
eficiente e eficaz, para atende à necessidade dessas aplicações e seus
usuários, e é open source.
Desenvolvimento
Os SGBDs que usam o NoSQL trabalham com
processamento escalonado, alocando vários
processos em paralelo em diversos servidores que trabalham em conjunto para
trazer mais agilidade de forma eficiente
no processamento e armazenamento
dos dados. Esse modelo de bd surgiu por causa da necessidade de empresas como o
twitter que processa cerca de 7 Tera Bytes de dados por dia, um modelo
relacional não consegue atender de forma eficiente as necessidades de um banco
como este, portanto a utilização do NOSQL satisfaz tal demanda.
O NoSQL é uma tecnologia muito cara pois exige uma demanda muito maior de
equipamentos, pessoas para seu desenvolvimento e execução, porém a única opção
para bancos de dados com muito trafico de dados, cada projeto NoSQL é
desenvolvido de forma impar ou seja é feito especificamente para atender as
necessidades de uma determinada aplicação, e BD não tão flexível quanto a
mudanças como o BD relacional, portanto se haver muitas mudanças estruturais na
aplicação, talvez haverá a necessidade de refazer quase por completo o banco de
dados, para atender as necessidades do projeto em questão, mais na grande
maioria a um grande reaproveitamento.
Existem vários
modelos de NoSQL, pois algumas empresas desenvolve seu próprio modelo como o
Project Valdermort da Linkedin, Redis da Google, HBase da apache, mais algumas
empresas adotam um modelo já existente para facilitar o desenvolvimento e
implementação do projeto.
Portanto podemos perceber que esse
modelo não relacional de banco de dados, surgiu para atender à necessidade de
grandes empresas com BDs Gigantes e com uma alta taxa de leitura e gravação em
larga escala. Assim tendo como principal característica a performace,
possibilitando que as mesmas rodem suas aplicações com um desempenho aceitável.
No entanto o modelo não relacional NoSQL não veio para substituir o
modelo relacional de Banco de dados mais sim para atender à necessidade que
surgiram ao longo do tempo, como alta disponibilidade dos dados,
escalabilidade, esquema flexível, alto desempenho e gerenciamento de dados
semiestruturados, é importante frisa que nem sempre será possível garantir a
consistência dos dados, portanto cabe a equipe desenvolvedora avaliar qual é a
tecnologia mais adequada para seu sistema.
Tabela de Comparação SQL x NoSQL
Banco de dados relacional
|
Banco de dados NoSQL
|
|
Modelo de dados
|
Este modelo relacional utiliza uma estrutura de tabelas,
que contem linhas e colunas. Um schema define estritamente as tabelas,
colunas, índices e relações entre tabelas.
|
Modelo não relacional que não aplica um schema, uma chave
de partição é utilizado para recuperar os valores, conjunto de colunas ou
documentos semiestruturado JSON, XML.
|
Propriedades ACID
|
Sistemas de gerenciamento de banco de dados relacionais
(RDBMS) tradicionais são compatíveis com um conjunto de propriedades definido
pela sigla ACID:
Atomicidade: uma interação é concluída completa ou não
conclui.
Constância: deve estar conforme o schema do BD.
Isolamento: transações simultâneas executadas uma separada
da outra
Durabilidade: capaz de se recuperar de uma falha do
sistema ou queda de energia.
|
No NoSQL trocam algumas propriedades do ACID por um modelo
mais flexível que escala horizontalmente, essas características fazem com que
o NoSQL uma excelente opção em situações que o relacional se depara, como
desempenho, escalabilidade, complexidade e custos.
|
Desempenho
|
É necessário a otimização de consultas, índices e
estrutura para alcançar o máximo desempenho.
|
Depende do tamanho do cluster do hardware adjacente, da
latência da rede e da aplicação que faz a chamada.
|
Escalas
|
Mais fácil de aumentar a escala "verticalmente"
com hardware mais rápido. Outros investimentos são necessários para
tabelas relacionais para abranger um sistema distribuído.
|
Projetado para aumentar a
escala "horizontalmente" usando clusters distribuídos de hardware
de baixo custo para aumentar a transferência sem aumentar a latência.
|
APIs
|
As solicitações para armazenar e recuperar dados são
comunicadas usando consultas compatíveis com SQL. Essas consultas são
analisadas e executadas por sistemas de gerenciamento de bancos de dados
relacionais (RDBMS)
|
APIs baseadas em objetos
permitem que desenvolvedores de aplicações armazenem e restaurem facilmente
estruturas de dados na memória. As chaves de partição permitem que os
aplicativos procurem pares de chave-valor, conjuntos de colunas ou documentos
semiestruturados contendo objetos e atributos de aplicativos serializados.
|
Ferramentas
|
Os bancos de dados SQL oferecem varias ferramentas poderosas para
simplificar o desenvolvimento de aplicações ao banco de dados.
|
Oferecem ferramentas para gerenciar cluster e
escalabilidade.
|
Conclusão
Meu nome e wellington, e a nossa conclusão do trabalho
de noSQL foi que
Bancos de dados NoSQL são amplamente reconhecidos pela
facilidade de desenvolvimento, desempenho escalável, alta disponibilidade e
resiliência.
É possível
elencar vários motivos para uso de um banco de dados NoSQL no seu próximo
projeto. Contudo, são motivos bem específicos e que talvez não seja a realidade
do seu próximo desenvolvimento.
Mesmo
assim, como tudo recentemente tem sido guiado para processamento e
armazenamento de um elevado número de dados com tendências fortes à
modificações rápidas e repentinas vale a pena considerar o estudo da aplicação
de um deles visando aumento de performance e dinamicidade para suas aplicações.
Referências
http://www.fatecsp.br/dti/tcc/tcc0025.pdf
http://www.dicasdeprogramacao.com.br/6-motivos-para-usar-bancos-de-dados-nosql/
C. J. Date, Introdução a Sistemas de Bancos de Dados 8
edição
Abraham Silberschatz, Henry F. Kor
Nenhum comentário:
Postar um comentário