Escolar Documentos
Profissional Documentos
Cultura Documentos
Banco de Dados NoSQL
Banco de Dados NoSQL
SISTEMAS DE INFORMAÇÃO
Recife – Pernambuco
2022
EDUARDO SANTANA CANAVARRO DO NASCIMENTO, Matrícula: 201802256075
________________________________________
Prof. Bruno Felipe De França Souza
Recife – Pernambuco
2022
RESUMO
Este trabalho tem como objetivo a realização de uma pesquisa sobre a disciplina
Banco De Dados NoSQL, com finalidade de obter informações sobre Banco De Dados
NoSQL e o entendimento sobre a diferença de um banco relacional para um NoSQL.
Conteúdo do trabalho
1. Sobre
O termo NoSQL foi usado pela vez em 1998, estava relacionado com o nome de um
banco de dados não relacional. Trata-se de um grande código aberto e o seu autor
alega que o movimento NoSQL é diferente do modelo relacional. Ele defende que
era melhor ser chamado de “NoREL” ou algo parecido com isso.
A popularização da internet não estava prevista e dessa forma, foram surgindo
novos dados que precisavam de tratamento. Esse fato fez com que existisse uma
necessidade de tratar e ao mesmo tempo fazer manutenções. Os Bancos NoSQL
entram justamente nisso e o objetivo claro é deixar tudo mais fácil
É do conhecimento de todos que grande parte das aplicações de um software está
relacionado aos bancos relacionais. Algumas situações pedem que o
armazenamento de dados possa ser feito de uma forma muito mais adequada.
Essa modelagem relacional pode vir a se revelar como limitada em situações em
que o formato possa vir a ser variável. Para conseguir superar esse problema, é
preciso criar várias tabelas para atender as necessidades apresentadas.
Os Bancos NoSQL podem ser usados para garantir uma alta disponibilidade e
aumento do poder de processamento. Uma vez que com a utilização crescente da
escalabilidade, tornou-se imperdível atender isso com mais velocidade.
Os investimentos em infraestrutura podem muitas vezes vir a ser requerido e quase
sempre é algo pesado. O aspecto financeiro deve ser analisado, porque gastos
indesejados fazem com que todo o planejamento possa ser afetado.
Uma alternativa eficiente estará ligada diretamente aos Bancos NoSQL, porque ele
engloba várias opções. Como por exemplo, a capacidade que irão além das
características típicas desses sistemas de gerenciadores relacionais.
1.5.1. MongoDB
O modelo MongoDB é o líder de mercado em bancos de dados NoSQL.
Ele também tem alguns recursos de produção sofisticados e modernos. São eles:
replicação, indexação, balanceamento de carga.
O mais importante, e talvez a razão pela qual é líder de mercado, é que o MongoDB
é de código aberto, o que contribuiu muito para a evolução de sua tecnologia.
1.5.2. HBase
O HBase é um banco de dados distribuído orientado a colunas de código aberto.
Atualmente, Spotify e Facebook são algumas das grandes empresas que utilizam
esse modelo de armazenamento.
O HBase é formatado a partir do BigTable do Google e escrito em Java. É por isso
que se integra facilmente com o MapReduce.
Para quem não sabe, MapReduce é uma ferramenta do framework Apache Hadoop,
uma das principais plataformas para processamento de big data.
Como parte do projeto Apache, diretamente relacionado à ciência de dados, o HBase
é outro modelo de armazenamento muito conhecido.
Um de seus pontos fortes é que ele fornece pesquisas de dados rápidas e
responsivas. Converta terabytes em milissegundos.
1.5.4. Cassandra
Muita gente não sabe, mas o Cassandra foi desenvolvido no Facebook. Hoje, o
Cassandra, assim como o HBase, é mantido pela Apache Foundation.
Isso até faz sentido dada a quantidade de dados que as redes sociais geram a cada
milissegundo.
Mas, afinal, por que o Cassandra é tão popular no processamento de big data?
Na verdade, o Cassandra é muito otimizado para clusters, especialmente porque
funciona sem um mestre. O fato de ter um mecanismo distribuído também otimiza
bastante a operação do cluster.
Outra vantagem do Cassandra é o conceito de orientação de coluna, que faz com que
certas consultas tenham latência muito menor.
1.5.5. Redis
Redis é um modelo de armazenamento de dados de código aberto e lançado em 2009.
Os dados são armazenados na memória Redis na forma de valor-chave, que é rápido
e flexível.
Este é o banco de dados NoSQL do tipo chave-valor mais conhecido
Como os dois primeiros, o Redis tem latência muito baixa. Redis também é fácil de
usar e muito rápido.
2.1. SQL
SQL é a sigla para “Structured Query Language” que significa, traduzindo para o
português, “Linguagem de Consulta Estruturada”. Trata-se de uma linguagem de
consulta a banco de dados relacionais. Com o SQL, você pode executar vários
comandos para criar, alterar, gerenciar, consultar, dentre outras informações no seu
banco de dados. Assim os bancos SQL seguem uma modelagem relacional, pois
estes se baseiam no fato de que todos seus dados sejam guardados em tabelas.
9
2.2. NoSQL
O conceito de modelo relacional (SQL) se baseia no fato de que todos os dados
sejam guardados em tabelas. Ao modelo não-relacional (NoSQL) não se aplica o
conceito de schema: uma chave de valor é que é utilizada para recuperar valores,
conjunto de colunas ou documentos. Sendo assim, acaba sendo um banco mais
prático e flexível para tomada de decisões mais variadas.
3. Na prática
Botando a mão na massa, foi utilizado um dos programas de banco de dados que foi
informado. O MongoDB junto com JavaScript para poder demonstrar como o banco
de dados se comporta.
10
require("./models/Artigo");
const Artigo = mongoose.model('artigo');
app.use(express.json());
mongoose.connect('mongodb://localhost/db', {
useNewUrlParser: true,
useUnifiedTopology: true
}).then(() => {
console.log("Conexão realizada com sucesso!");
}).catch((erro) => {
console.log("Error: Conexão não foi realizada com sucesso!")
});
Artigo.findOne({_id:req.params.id}).then((artigo)=>{
return res.json(artigo)
}).catch((erro) => {
11
return res.status(400).json({
error: true,
message: "Nenhum artigo encontrado!"
});
});
});
return res.status(200).json({
error: false,
message: "O artigo foi cadastrado com sucesso!"
});
});
});
return res.json({
erro: false,
message: "Artigo editado com sucesso!"
});
});
});
app.listen(8080, () =>{
console.log("Servidor iniciado na porta 8080: http://localhost:8080")
});
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
module.exports = app;
},
cidade: {
type: String,
required: true
},
estado: {
type: String,
required: true
},
bairro: {
type: String,
required: true
},
email: {
type: String,
required: true
},
genero: {
type: String,
required: true
}
},
{
timestamps: true,
});
mongoose.model('artigo', Artigo);
4. Conclusão
O NoSQL tem muitas vantagens para ser utilizado. Mas não é por isso que devemos
utilizá-lo em todas as situações. Em muitos sistemas, você pode (e até deve) usar o
modelo relacional. 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. Sendo assim,
você pode usar ambas as soluções para diferentes casos de uso. Por isso, o mais
comum em soluções escalares de sucesso é a utilização de uma arquitetura híbrida,
aproveitando o melhor dois modelos.