Turma Online 19 - Todas em Tech | Back-end | Semana 12 | 2022 | Gaia Maria
Antes de começar, vamos organizar nosso setup.
- Fork esse repositório
- Clone o fork na sua máquina (Para isso basta abrir o seu terminal e digitar
git clone url-do-seu-repositorio-forkado
) - Entre na pasta do seu repositório (Para isso basta abrir o seu terminal e digitar
cd nome-do-seu-repositorio-forkado
)
Olá, meu nome é Gaia Maria. Sou uma travesti graduada em História Licenciatura (UNESP) e graduanda em Análise e Desenvolvimento de Sistemas (Faculdade Descomplica). Sou uma Bruxa devota a Hecate, ocultista e pagã. Tambem sou uma pessoa neurodiversa, gamer, viciada em RPG e desenvolvedora.
- Bebam água meninas
- Qualquer pergunta é válida, principalmente aquela que a gente pensa que não faz sentido.
- Deixe a camera ligada
- Banco de Dados
- Introdução a MongoDB
- MongoCompass, Shell e Robo3T
- Projeto com mongo
ReprogramaMusic
├── r-library
│ ├─ src
│ │ ├─ controllers
│ │ │ └─ booksController.js
│ │ ├─ database
│ │ │ └─ moogoseConnect.js
│ │ ├─ models
│ │ │ └─ booksModel.js
│ │ ├─ routes
│ │ │ └─ booksRoute.js
│ │ └─ app.js
│ ├─ package-lock.json
│ ├─ package.json
│ ├─ .gitignore
│ └─ server.js
│
└─README.md
- Mongoose
- Cors
- Express
- Nodemom
- Node
~> 14
- Mongodb >
~> 4
A motivação de criar um sistema para armazenagem de dados surgiu devido ao alto custo de leitura/escrita de arquivos no HD. Os primeiros fundamentos de banco de dados relacionais surgiram entre as décadas de 1960 a 1970 pela IBM. Na década de 80, a Oracle, com a permissão da IBM, foi a primeira empresa a desenvolver o banco utilizando o padrão SQL para consulta/escrita como é conhecido hoje. Após a explosão da web, também conhecida como web 2.0, foi necessário uma alternativa ao SQL(relacional), assim, a partir de 1998, foi criado o conceito de banco nosql( não relacional )
SQL é uma linguagem de programação usada por quase todos os bancos de dados relacionais para consultar, manipular e definir dados e fornecer controle de acesso. O SQL foi desenvolvido pela primeira vez na IBM nos anos 1970, com a Oracle como principal contribuinte, o que levou à implementação do padrão SQL ANSI; o SQL estimulou muitas extensões de empresas como IBM, Oracle e Microsoft. Embora o SQL ainda seja amplamente usado hoje em dia, novas linguagens de programação estão começando a aparecer.
Exemplo de consulta em SQL com MySQL:
$ SELECT from books
WHERE writers = "J. R. R. Tolkien"
- Os mais conhecidos são o MySQL, PostgreSQL e o Oracle.
O termo 'NoSQL' se refere a tipos não relacionais de bancos de dados, e esses bancos de dados armazenam dados em um formato diferente das tabelas relacionais. No entanto, os bancos de dados NoSQL podem ser consultados usando APIs de linguagem idiomática, linguagens de consulta estruturadas declarativas e linguagens de consulta por exemplo, razão pela qual também são chamados de bancos de dados "não apenas SQL".
Os bancos de dados NoSQL são amplamente usados em aplicativos da web em tempo real e big data, porque suas principais vantagens são alta escalabilidade e alta disponibilidade. Os bancos de dados NoSQL também são a escolha preferida dos desenvolvedores, pois eles naturalmente aceitam um paradigma de desenvolvimento ágil, adaptando-se rapidamente aos requisitos em constante mudança. Os bancos de dados NoSQL permitem que os dados sejam armazenados de maneiras mais intuitivas e fáceis de entender, ou mais próximas da maneira como os dados são usados pelos aplicativos - com menos transformações necessárias ao armazenar ou recuperar usando APIs no estilo NoSQL. Além disso, os bancos de dados NoSQL podem aproveitar ao máximo a nuvem para oferecer tempo de inatividade zero.
Exemplo de consulta em NOSQL com Mongo
$ db.books.find({ writers: "J. R. R. Tolkien"})
- Os mais conhecidos são o MongoDB, Redis e o Firebase.
O MongoDB é um banco de dados orientado a documentos que possui código aberto (open source) e foi projetado para armazenar uma grande escala de dados, além de permitir que se trabalhe de forma eficiente com grandes volumes. Ele é categorizado no banco de dados NoSQL (not only SQL) pois o armazenamento e a recuperação de dados no MongoDB não são feitas no formato de tabelas.
Um banco de dados é uma coleção organizada de informações - ou dados - estruturadas, normalmente armazenadas eletronicamente em um sistema de computador. Um banco de dados é geralmente controlado por um sistema de gerenciamento de banco de dados (DBMS). Juntos, os dados e o DBMS, juntamente com os aplicativos associados a eles, são chamados de sistema de banco de dados, geralmente abreviados para apenas banco de dados
Nossa collection
é uma coleção(lista) de document
, similar a array, onde armazenamos, por exemplo, as nossos livros. Nesse exemplo, uma biblioteca seria a collection
, enquanto cada livro seria um document
, contendo as informações dele.
exmplo:
[
{
"id": 1,
"title": "O Hobbit",
"launchYear": "1937",
"available": true,
"gender": "adventure",
"writer": "J. R. R. Tolkien",
"pages": "335"
},
{
"id": 2,
"title": "Blade Runner",
"launchYear": "1968",
"available": false,
"gender": "sci-fi",
"writer": "Philip K. Dick",
"pages": "316"
},
{
"id": 3,
"title": "Frankenstein",
"launchYear": "1818",
"available": true,
"gender": "sci-fi",
"writer": "Mary Shelley",
"pages": "250"
}
]
O mongoose utiliza a Schema
para pôr ordem na na collection, é necessario por Ordem no Barraco. Para isso precisamos de um schema( espelho ) de como será salvo nosso document
.
exemplo de schema:
const mongoose = require('mongoose');
const BooksSchema = monogoose.Schema({
title: string,
launchYear: number,
available: boolean,
publisher: string,
gender: [string],
writer: string,
pages: number
});
A Model
( modelo ) é a nossa representação da Collection ( coleção ), nele assim como no Array, possuímos métodos
( funções ) que nos permite realizar as operações do CRUD:
OPERAÇÃO | DESCRIÇÃO | HTTP |
---|---|---|
C | criar/gerar | POST |
R | ler/obter | GET |
U | atualizar/substiuir | PUT/PATCH |
D | remover/deletar | DELETE |
Exemplo de como criar uma model
const BookModel = mongoose.model('book', BookSchema);
Obs: Não é necessário salvar como books, pois o ORM cria no plural.
O ObjectID é um identificador único para cada documento, ele é gerado automaticamente, podemos pensar nele como um CPF, único por dado, é por ele que consegue identificar um Document
realizar as operações do CRUD.
const bookId = new moogose.Types.ObjectId();
Uma breve introdução sobre classes e objetos, para que possamos entender melhor o nosso ORM.
Quando possuímos uma classe, podemos utilizar a palavra reservada new
para instanciar um objeto, ou seja, construir um novo documento a partir da classe( nossa Schema
), afinal, não queremos que a música da Anitta tenha altere as informações da música da Ludmila né? 🤔
const book = new BookModel({
title: string,
launchYear: number,
available: boolean,
publisher: string,
gender: [string],
writer: string,
pages: number
});
Assim como o objeto, as classes possuiem métodos, que são funções que nos auxiliam a realizar ações como por exemplo: salvar um livro, ou mudar de pagina, no nosso dia-a-dia usamos o console.log
, .log("hello word") é um método que nos permite imprimir no terminal uma mensagem de texto.
Nosso constructor
é responsável por inicializar a nossa classe, ele recebe os parametros para criar construir a instancia da classe, como por exemplo, o livro, é assim que nossa Schema gera o livro no formato que o banco espera, no caso do mongo, um BJSON.
Na programação, existem tipos primários, que são responsáveis por definir o tipo de informação ( dado ) que estamos trabalhando, por exemplo um número de celular Number
, ou um email que é texto String
, ou até mesmo se é verdadeiro(true) ou falso(false) que é um Boolean
, além disso, temos o Date
que representa uma data.
- String -> representa texto ->
""
- Number -> representa número
0
- Boolean -> representa
true
oufalse
- Date -> representa uma data, por exemplo, 1970-01-13 ->
Date
class Book {
title: string,
launchYear: number,
available: boolean,
publisher: string,
gender: [string],
writer: string,
pages: number
};
- https://www.gartner.com/en/information-technology/glossary/object-data-model
- https://developer.mozilla.org/pt-BR/docs/Learn/Server-side/Express_Nodejs/mongoose
- https://docs.mongodb.com/
- https://docs.mongodb.com/manual/crud/
- https://docs.atlas.mongodb.com/tutorial/create-new-cluster/
- https://studio3t.com/academy/topic/mongodb-vs-sql-concepts/
- https://mongoosejs.com/docs/index.html
- Resumo Mongodb - Codigo Fonte TV
- nodeJs Express Mongo - Api rest full Turitorial
- O que é banco de dados? - Curso em Video
- Rota GET: Crie um rota que encontre um livro pelo titulo
- Rota de Patch: Crie um rota que atualize as informações de um determinado livro utilizando de parâmetro o ID
- Rota de Delete: Crie um rota que delete um livro cadastrado pelo ID
- Rota GET:Crie um rota que encontre uma editora pelo estado da sede
- Rota de POST: Crie um rota que crie uma nova editora
- Rota de PATCH: Crie um rota que atualize as informações de um editora utilizando de parâmetro o ID