Tipos de bancos de dados NoSQL

Banco de dados não relacionais ou distribuídos, tem como princípio básico não possuírem o conceito de modelagem por tabelas como o relacional, diferenciam-se pela sua utilização horizontal, através da distribuição de dados em diferentes servidores. São indicados para aplicações projetadas com alta carga de dados, onde o modelo relacional não consegue atender. Para a maioria das aplicações de grande escala, a disponibilidade e a tolerância são mais importantes que a consistência, sendo as características BASE mais fáceis de serem alcançadas do que as ACID. Um caso importante a ser citado foi o Banco NoSQL CassandraDB, que inicialmente foi desenvolvido para um recurso do Facebook.

Os bancos de dados NoSQL não são todos iguais. Há grandes diferenças no que se refere como a forma de armazenamento e conceitos de modelagem. Basicamente se subdividem em técnicas de armazenamento diferentes. Há 4 tipos básicos de bancos de dados NoSQL, a seguir eles são descritos.

NoSQL orientado a documento: consiste em uma estrutura baseada em uma coleção de documentos, sendo um documento um objeto que contém um código único com um conjunto de informações, podendo ser strings, documentos aninhados ou ainda listas. Inicialmente pode ser semelhante ao modelo de chave-valor(Key-value), no entanto, diferencia-se m ter um conjunto de documentos e cada um destes recebe um identificador único, assim como as chaves, dentro da coleção. Ao se armazenar os dados em JSON, o desenvolvimento é facilitado, pois há suporte a vários tipos de dados. Exemplos destes são o MongoDB e CouchBase.

Figura 1 – organização de um NoSQL orientado a documento.

 

NoSQL Key-Value (chave-valor): consiste em uma modelagem que indexa os dados a uma chave. Ao se armazenar os dados, sua forma de procura se dá por uma base similar a um dicionário, onde estes possuem uma chave. Esta forma de armazenamento é livre de “schema”, permite a inserção de dados em tempo de execução, sem conflitar o banco e não influenciando na disponibilidade, pois seus valores são isolados e independentes entre si. Alguns exemplos são: Oracle NoSQL, Riak, Azure Table Storage, BerkeleyDB e Redis.

Figura 2 – Exemplo de organização de um banco de dados NoSQL chave-valor.

 

NoSQL representado por Grafos: Este modelo armazenamento utiliza três componentes básicos: um grafo para representar um dado, arrestas ou ligações para representar a associação entre os grafos e os atributos (ou propriedades) dos nós e relacionamentos. Modelo altamente usado onde exijam dados fortemente ligados. Este modelo é vantajoso onde há consultas complexas frente aos outros modelos, pois seu diferencial é o ganho de performance. Alguns exemplos são: Neo4J, OrientedDB, GraphBase e InfiniteGraph.

Figura 3 – Exemplo de organização de um banco de dados NoSQL orientado a grafos.

 

NoSQL modelo Colunar: Este modelo foi inicialmente desenvolvido baseado no Big Table da Google. Basicamente consiste em uma Tabela, onde nela possui várias famílias de colunas, e dentro destas famílias, colunas onde estão as propriedades.  Neste modelo, as entidades são representadas por tabelas e os dados gravados em disco modelo caracteriza-se por indexar um dado por uma Tripla, que consiste em linha, coluna e timestramp, sendo este o que permite verificar as diferentes versões de um dado. Os valores das propriedades das colunas podem são semelhantes ao modelo “Key-Value”.  São bancos de dados indicados para mídias sociais e problemas que envolvem consultas complexas.

Figura 4 – Exemplo de organização de um banco de dados NoSQL orientado a Colunas.

 

Há também o Hadoop, que é um framework paralelo no processamento de dados que tem sido usado para redução de mapas e Jobs. Diferentemente do Spark que armazena os dados em memória, o Hadoop armazena em disco e utiliza a técnica de replicação para garantir tolerância a falhas. Foi projetado para funcionar desde um único servidor até um cluster com milhares de máquinas. È uma solução comcebida para detectar e tartar falhas na camada de aplicação, fornecendo um serviço de alta disponibilidade baseado em um grid de computadores. No entanto o Hadoop possui uma grande latência para as consultas. Há dois componentes principais do Hadoop: Hadoop Distributed File System (HDFS) e o Mapreduce.

Figura 5 – Exemplo de funcionamento do Hadoop.

 

Referências Bibliográficas.

https://pt.slideshare.net/Celio12/trabalho-no-sql-aricelio-de-souza – acessado 17/04/2017

Nosql Essencial – Um Guia Conciso Para o Mundo Emergente da Persistência Poliglota – Martin Fowler, Pramod J. Sadalage – ISBN: 978-85-7522-338-3 – Ano: 2013

https://dzone.com/articles/a-primer-on-open-source-nosql-databases – acessado 17/04/2017

http://aptuz.com/blog/is-apache-spark-going-to-replace-hadoop/ – acessado em 13/05/2017

https://www.ibm.com/developerworks/br/data/library/techarticle/dm-1209hadoopbigdata/   acessado em 12/05/2017

Hospedando aplicação em Laravel em servidor Linux Compartilhado

Neste artigo irei explicar como realizar a publicação de uma aplicação desenvolvida em Laravel em um servidor Linux compartilhado (neste caso utilizarei como exemplo a hospedagem compartilhada da GoDaddy). Iremos realizar o upload da aplicação para o Github, configurar o acesso ssh no servidor Linux compartilhado, criar os dados de acesso a banco de dados e o banco de dados em si.

Continue lendo “Hospedando aplicação em Laravel em servidor Linux Compartilhado”

IDE’s Apache Cordova: Intel XDK, PhoneGap e Evothings

Devido ao crescimento do uso de smartphones e outros dipositivos móveis, a demanda de desenvolvimento nesse seguimento cresceu enormente, logo programadores habituados a softwares e sistemas para desktops foram migrando aos poucos para essa categoria. O apache cordova acabou facilitando essa transição, com desenvolvimento nas linguagens web (HTML, CSS e Javascript) diversos programadores viram nele uma boa saída para programar para os novos dispositivos.

Continue lendo “IDE’s Apache Cordova: Intel XDK, PhoneGap e Evothings”

Projetos de interface e usabilidade – Web x Mobile

Antigamente era raro pessoas terem computadores pessoais ou ainda celulares, com a globalização e a evolução da tecnologia hoje praticamente todas as pessoas tem computadores pessoais e smartphones disponíveis com acesso à internet, o que gerou um problema de como as páginas de internet e aplicações iriam ser exibidas e interagir nos computadores e em aparelhos portáteis.  Continue lendo “Projetos de interface e usabilidade – Web x Mobile”

Frameworks para desenvolvimento móvel multiplataforma

Com a concorrência acirrada e cada vez menos tempo para desenvolver novos produtos, os frameworks tem a finalidade de minimizar o tempo de desenvolvimento e maximizar os recursos já existentes, ou seja, os desenvolvedores ao invés de criar tudo do zero utilizam recursos prontos que irão facilitar o seu desenvolvimento e tendo como principal vantagem de serem multiplataformas. Continue lendo “Frameworks para desenvolvimento móvel multiplataforma”

Design Patterns (Padrões de Projeto)

 

dpNo artigo irei mostrar as principais funções do Design Patterns (padrões de projeto) qual é objetivo da ferramenta e o que ela significa para a empresa.
Padrões de projetos  são soluções para problemas que alguém um dia teve e resolveu aplicando um modelo que foi documentado e que você pode adaptar integralmente ou de acordo com necessidade de sua solução. Vou abordar neste artigo o padrão de modelo MVC que tem por objetivo básico separar a lógica de negócio da apresentação. Continue lendo “Design Patterns (Padrões de Projeto)”

TDD em Java, como funciona!

O presente artigo pretende mostrar ao leitor o caminho das pedras para iniciar com o TDD em Java. Mas antes é preciso saber o que é Desenvolvimento Guiado por Testes? E como ele pode nos ajudar?

Gerenciar a complexidade por meio de testes em pequenas unidades do sistema é a receita desta metodologia para alcançar códigos enxutos, funcionais e livre de bugs, os três pilares do TDD apresentados na figura ao lado nos proporcionam uma visão holística, observamos um ciclo de desenvolvimento simples, verifica-se a falha, correge-se a falha e em seguida otimiza-se o código.

Agora que já compreendemos como funciona a técnica vamos descobrir como podemos trabalha-la com Java. Antes de mais nada precisamos dispor de um IDE com suporte ao JUnit sugiro o Eclipse um dos mais populares para o desenvolvimento em Java, mas o que é mesmo esse tal de JUnit? Continue lendo “TDD em Java, como funciona!”