sexta-feira, 30 de setembro de 2016

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