# data[].attributes.body
(Not Only SQL — Não Somente SQL) é um termo genérico que representa os bancos de dados relacionais.
O NoSQL é uma classe de bancos de dados que diverge do modelo de sistema de gerenciamento de bancos de dados relacionais – não fazendo uso primário de tabelas e não usando, no geral, declarações SQL para efetuar a manipulação de dados. Essa classe de bancos de dados é usada, hoje em dia, para manipular as vastas quantidades de dados que sistemas como os do Google, Facebook, Twitter e outros demandam, com muita rapidez e alta escalabilidade.
Bancos NoSQL são uma classe definida de banco de dados que fornecem um mecanismo para armazenamento e recuperação de dados que são modelados de formas diferentes das relações tabulares usadas nos bancos de dados relacionais.
O NoSQL é um movimento que promove soluções de armazenamento de dados não relacionais. Ele é composto por diversas ferramentas que, de forma particular e específica, resolvem problemas como tratamento de grandes volumes de dados, execução de consultas com baixa latência e modelos flexíveis de armazenamento de dados, como documentos XML ou JSON.
Essas tecnologias não têm como objetivo substituir os bancos de dados relacionais, mas apenas propor algumas soluções que em determinados cenários são mais adequadas. Desta forma, é possível trabalhar com tecnologias NoSQL e banco de dados relacionais dentro de uma mesma aplicação.

# data[].attributes.headline
(Grupo 01 - Deivisson)Tipos de Banco de Dados - Parte 1 (Parte 2 em Samuel) 

# data[].attributes.subject
(Grupo 01 - Deivisson)Tipos de Banco de Dados - Parte 1 (Parte 2 em Samuel) 

# data[].attributes.body
Banco de dados que trabalham no esquema chave/valor (Key/Value): Sistemas distribuídos nessa categoria, também conhecidos como tabelas de hash distribuídas, armazenam objetos indexados por chaves, e possibilitam a busca por esses objetos a partir de suas chaves. Alguns exemplos de bancos que utilizam esse padrão são: DynamoDb, Couchbase, Riak, Azure Table Storage, Redis, Tokyo Cabinet, Berkeley DB.

Bancos de dados orientados a documentos:
Os documentos dos bancos dessa categoria, são coleções de atributos e valores, onde um atributo pode ser multi-valorado. Em geral, os bancos de dados orientados a documento não possuem esquema, ou seja, os documentos armazenados não precisam possuir estrutura em comum. Essa característica faz deles boas opções para o armazenamento de dados semi estruturados.

Alguns bancos que utilizam esse padrão são: MongoDb, CouchDB, RavenDb.

# data[].attributes.headline
(Grupo 01 - Samuel) - Tipos de Bancos de dados NoSql - parte 02(parte 1 em Deivisson)

# data[].attributes.subject
(Grupo 01 - Samuel) - Tipos de Bancos de dados NoSql - parte 02(parte 1 em Deivisson)

# data[].attributes.body
Modelo colunar: Este consiste numa tabela, composta por várias famílias de colunas, cujas colunas apresentam propriedades. Cada entidade é representada por uma tabela, e os dados gravados são indexados por uma tripla (linha, coluna e timestramp). Este tipo é apropriado para mídias sociais e consultas de maior complexidade.

Modelo por grafos: Utiliza três componentes básicos. Pode representar um dado, arrestas ou ligações para representar a associação entre grafos e propriedades dos nós e relacionamentos. Sua maior vantagem é o ganho de performance em consultas complexas.

# data[].attributes.headline
(Grupo 01 - Carlos Eduardo) Quais as vantagens de um banco de dados NoSQL ?

# data[].attributes.subject
(Grupo 01 - Carlos Eduardo) Quais as vantagens de um banco de dados NoSQL ?

# data[].attributes.body
Necessitam de muito menos manutenção, sendo a reparação e distribuição de dados feita, na sua maioria, automaticamente. Numa base de dados Relacional (SQL), é sempre necessário um administrador, responsável pela mesma.

Excelente maneira de lidar com o problema do Big Data (gere bem o armazenamento de grandes quantidades de informação).

Facilidade em adicionar novos dados.

Dados sempre disponíveis.

Base de dados orientada para objetos flexível (não estando presa a um esquema de inter-relação de tabelas).

O custo desta base de dados é mais reduzido.

# data[].attributes.body
(GRUPO 01 - JOÃO VICTOR LOPES) QUANDO UTILIZAMOS ESSA TECNOLOGIA?

O banco de dados não relacional (NoSQL) pelo fato de ser um banco de dados de alta performance é mais indicado para sistemas onde tenham necessidades maiores de desempenho e armazenamento, ele é mais utilizados nas grandes corporações onde há um grande volume de dados.

# data[].attributes.body
O que é Nosql?

Em resumo, bancos NoSQL são uma classe definida de banco de dados que fornecem um mecanismo para armazenamento e recuperação de dados que são modelados de formas diferentes das relações tabulares usadas nos bancos de dados relacionais.

O NoSQL é um movimento que promove soluções de armazenamento de dados não relacionais. Ele é composto por diversas ferramentas que, de forma particular e específica, resolvem problemas como tratamento de grandes volumes de dados, execução de consultas com baixa latência e modelos flexíveis de armazenamento de dados, como documentos XML ou JSON.

NoSQL (Not Only SQL — Não Somente SQL) é um termo genérico que representa os bancos de dados não relacionais.

Tais bancos de dados existem desde o final da década de 1960, mas não obtiveram o apelido de “NoSQL” até atingirem sua onda de popularidade no início do século 21, desencadeada pelas necessidades de empresas como Facebook, Google, Amazon, etc.

Já o termo NoSQL foi usado por Carlo Strozzi em 1998 para nomear seu banco de dados relacional open source, chamado Strozzi NoSQL, que não expôs a interface padrão da linguagem de consulta estruturada (SQL), mas ainda era relacional.

Desde então, o termo tem se popularizado bastante e teve até sua fase de buzzword.

# data[].attributes.body
Quais são os tipos de banco de dados Nosql?

Os principais tipos de bancos de dados no SQL são orientados a:

1. Colunas. Estes, talvez, sejam os mais semelhantes aos bancos de dados relacionais. Entretanto, ao invés de seu armazenamento ser em forma de linhas, este é em forma de colunas. Os principais exemplos deste são:

A) Cassandra: esse exemplo usa um banco de dados descentralizado, em que os dados são armazenados em vários datacenters. Ele é otimizado para cluster e fornece baixa latência em suas atualizações;

B) Hypertable:  É uma implementação de BigTable de código aberto baseada em sistemas de arquivos distribuídos, como Hadoop;

C)MonetDB: direitos de acesso refinados de acordo com o padrão SQL. Suporte geoSpatial otimizado para armazenamento de coluna em memória Suporte para documentos JSON.

2_Chave-Valor: são aquelas que se assemelham a estrutura de dicionário. Tem que todo dado armazenado possui uma chave que o identifica e o valor que ele contém. Os principais exemplos de Chave-Valor são:

A) Table Storage: do microsoft edge, esse é um serviço que armazena dados estruturados não relacionais na nuvem, fornecendo um repositório de chave/atributo com um design sem esquema;

B)DynamoDB: É um serviço de banco de dados NoSQL totalmente gerenciado que fornece desempenho rápido e previsível com escalabilidade contínua.;

C)Redis: esse tipo é bastante utilizado para implementar funcionalidade de cash em aplicações, pois vincula um valor a uma chave na sua estrutura, o que facilita o armazenamento e a busca desses dados.

3_Grafos: É uma estrutura composta por vértices e arestas em que as arestas interligam os vértices e cada vértice, bem como suas arestas, representam dados e os relacionamentos entre esses vértices. Os principais exemplos de Grafos são:

A)Neo4j: é uma implementação de código aberto e pode ser útil para casos de mineração de dados e reconhecimento de padrões;
B)Infinite Graph:é um banco de dados gráfico altamente especializado;

C) ArangoDB: Nos bancos de dados ArangoDB um desenvolvedor armazena os dados como chave-valor, grafos ou documentos e pode acessar as informações utilizando uma única query. Isso se deve ao AQL ou ArangoDB Query Language.

4_ Documentos: armazenam os registros na forma de documentos normalmente JSON ou XML. Os principais exemplos deste são:

A) MongoDB: armazena todas as informações relevantes em um documento e utiliza sistemas avançados de agrupamento e filtragem. Diferentes plataformas e linguagens possuem suporte ao MongoDB, entre elas estão o Java, JavaScript, PHP, Python e Ruby;

B)CouchDB: seu conteúdo é acessado e modificado através de uma API REST;

C)DocumentDB: suporta contêineres para armazenar dados JSON chamados de coleções que podem escalar para tamanhos de armazenamento praticamente ilimitados e throughput provisionado.

Observação: Alguns destes bancos de dados podem implementar mais de um modelo.

# data[].attributes.headline
(Grupo 5 – Núbia)  Vantagens no uso do NoSQL

# data[].attributes.subject
(Grupo 5 – Núbia)  Vantagens no uso do NoSQL

# data[].attributes.body
Como a base de dados não é relacional possui maior flexibilidade, sendo mais simples de gerir.

A maioria das bases de dados desse tipo é open-source.

Não é necessário desenvolver um modelo de dados tão detalhado o que poupa tempo no desenvolvimento .

Facilidade em adicionar novos dados.

Dados sempre disponíveis.

A necessidade de manutenção é menor, sendo a reparação e distribuição de dados feita, na sua maioria, automaticamente.

Menor custo.

# data[].attributes.body
sistemas distribuídos nessa categoria, também conhecidos como tabelas de hash distribuídas, armazenam objetos indexados por chaves, e possibilitam a busca por esses objetos a partir de suas chaves.

# data[].attributes.headline
(Grupo 01 - João Santos) Desvantagens de um banco de dadods NoSQL?

# data[].attributes.subject
(Grupo 01 - João Santos) Desvantagens de um banco de dadods NoSQL?

# data[].attributes.body
⚫ Tem como desvantagem quando for armazenar dados relativos a utilizadores, fazê-lo num sistema NoSQL, colocando o Nome, Idade, Profissão, Morada, etc., tudo junto, mesmo que essa informação vá ser sempre apresentada em conjunto. Se esta informação fosse armazenada em NoSQL, seria praticamente impossível de registar o número de utilizadores no sistema, devido ao facto de estes não estarem numa mesma lista.  A única forma de registar o número de utilizadores seria contá-los um a um.

⚫ Não irão resolver problemas de escalabilidade de um Website.

⚫ Mais recentes do que as bases de dados Relacionais, não contando com tantas alternativas como o modelo Relacional.

⚫ Suporte Técnico: Devido ao facto de grande parte dos sistemas NoSQL serem Open Source, o suporte é geralmente oferecido por empresas muito mais pequenas, sem o peso de grandes nomes existentes no mercado das bases de dados relacionais, como é o caso da Oracle, Microsoft ou IBM.

⚫ Dificuldade de instalação e esforço para manutenção.

⚫ Menos gente com conhecimento em NoSQL do que no modelo Relacional, onde existem milhões de especialistas. Grande parte dos utilizadores de NoSQL está em processo de aprendizagem ainda.

# data[].attributes.body
Quando usar Nosql:

O NoSQL é mais indicado para aqueles sistemas que tenham necessidades maiores de armazenamento e desempenho. O NoSQL não veio para substituir o SQL, mas sim para oferecer mais uma alternativa de um banco de dados mais flexível no suporte de dados.

Referencia.:

https://www.treinaweb.com.br/blog/sql-vs-nosql-qual-usar/

# data[].attributes.headline
Grupo 5 (José Carlos Henriques) - Quando utilizamos essa tecnologia? (Complementando a resposta de Heidiane)

# data[].attributes.subject
Grupo 5 (José Carlos Henriques) - Quando utilizamos essa tecnologia? (Complementando a resposta de Heidiane)

# data[].attributes.body
Os armazenamentos de grandes volumes de dados podem possuir pouca ou nenhuma estrutura. Isso porque os bancos de dados NoSQL não limitam os tipos de dados que podem ser armazenados juntos, além disso, permite também adicionar novos tipos de dados de acordo com as necessidades de cada momento.
é uma excelente opção para que alguma solução em nuvem seja escalável, de forma que os dados fiquem fáceis de compartilhar com outros servidores. Assim, é possível tirar aproveitamento dos armazenamentos na nuvem.

https://www.hitcode.com.br/banco-de-dados-nosql-quando-utilizar/

# data[].attributes.attachment_link.title
Quando usar Relacional e Quando Usar NoSQL?

# data[].attributes.body
Original: Núbia da Fonseca.
Observação: Tipos de banco de dados NoSQL a partir do tempo 1min 44s. (Amanda Leite)

# data[].attributes.attachment_link.title
NoSQL em 5 minutos (Banco de dados não-relacionais)

# data[].attributes.headline
(Grupo 05 - Thiago Barbosa)Desvantagens na Utilização de bancos NOSQL

# data[].attributes.subject
(Grupo 05 - Thiago Barbosa)Desvantagens na Utilização de bancos NOSQL

# data[].attributes.body
O NoSQL foi criado para ter performance e uma escalabilidade mais horizontal para dar resposta às necessidades onde as bases de dados relacionais não são tão eficazes. Contudo, temos que apontar também algumas das desvantagens do seu uso: (PROGRAMAR, 2018)
• Chaves – modelo de base de dados deixa cair a integridade relegando‐a para a aplicação.
o Tipos de Bases de Dados NoSQL não permite consultas complexas, apenas get’s e set’s na sua forma mais purista.
o Perder a capacidade de fazer queries ad‐hoc, que são as queries com um determinado fim, por exemplo: encontrar o nome do empregado que fez mais vendas.
• Colunas – O principal ponto fraco deste modelo é o facto de não suportar relações, o que faz com que os dados de cada pesquisa que se faça terem de estar obrigatoriamente na mesma família de colunas pois não é possível juntar os dados de uma família de colunas com outra.
o Limitadas na filtragem dos dados de uma query.
o Requer um esforço de manutenção adicional ao apagar e atualizar os dados.
o São menos eficientes que um sistema orientado a linhas no acesso a um número elevado de colunas da mesma linha.
• Documentos – Uma necessidade de hardware mais poderoso por comparação com o modelo orientado a colunas pois as queries são mais dinâmicas.
o Há uma clara falta de referencia entre documentos que pode levar a uma redundância dos dados.
• Grafos – Este modelo não se encaixa muito bem no modelo tradicional de negócio com tabelas.
o Existe problema ao fazer queries que implica que se percorra o grafo todo para responder a uma. Não é fácil criar grupos dentro de um grafo.

Cardoso, R. M. (2012). Bases de Dados NoSQL. Fonte: ISEP - DM – Engenharia Informática: https://recipp.ipp.pt/bitstream/10400.22/6375/1/DM_RicardoCardoso_2012_MEI.pdf
PROGRAMAR, R. (02 de 2018). Fonte: https://www.revista-programar.info/artigos/sql-vs-nosql/

# data[].attributes.attachment_link.title
Fundamentos de Big Data: Banco de Dados NoSQL