﻿1
00:00:01,090 --> 00:00:03,210
‫Instrutor: Assim como nas seções

2
00:00:03,210 --> 00:00:05,810
‫anteriores, antes de mergulharmos em uma nova

3
00:00:05,810 --> 00:00:08,590
‫tecnologia, vamos realmente aprender do que se trata.

4
00:00:08,590 --> 00:00:12,180
‫Portanto, neste caso, vamos aprender o que o MongoDB realmente é,

5
00:00:12,180 --> 00:00:14,750
‫como ele funciona e uma rápida visão

6
00:00:14,750 --> 00:00:18,600
‫geral de como ele se compara aos bancos de dados mais tradicionais.

7
00:00:18,600 --> 00:00:21,340
‫E vamos começar com uma visão geral simples.

8
00:00:21,340 --> 00:00:24,830
‫Portanto, o MongoDB é obviamente um banco de dados, e

9
00:00:24,830 --> 00:00:27,870
‫é o chamado banco de dados NoSQL.

10
00:00:27,870 --> 00:00:30,930
‫Algumas pessoas também dizem Não S Q

11
00:00:30,930 --> 00:00:34,240
‫L, mas vou continuar dizendo "sem sequência", certo?

12
00:00:34,240 --> 00:00:37,010
‫Agora, o outro tipo de banco de

13
00:00:37,010 --> 00:00:40,620
‫dados, que é um pouco mais tradicional, é o banco de

14
00:00:40,620 --> 00:00:43,760
‫dados relacional, ao qual o NoSQL é freqüentemente comparado.

15
00:00:43,760 --> 00:00:48,330
‫De qualquer forma, no Mongo, que também podemos dizer em vez de

16
00:00:48,330 --> 00:00:52,570
‫MongoDB, cada banco de dados pode conter uma ou mais coleções.

17
00:00:52,570 --> 00:00:55,100
‫Portanto, se você realmente está vindo

18
00:00:55,100 --> 00:00:58,530
‫de um desses sistemas de banco de dados relacionais

19
00:00:58,530 --> 00:01:02,760
‫mais tradicionais, pode pensar em uma coleção como uma tabela de dados.

20
00:01:02,760 --> 00:01:05,520
‫Então, cada coleção pode conter uma ou

21
00:01:05,520 --> 00:01:09,130
‫mais estruturas de dados chamadas documentos e, novamente, em

22
00:01:09,130 --> 00:01:11,870
‫um banco de dados relacional,

23
00:01:11,870 --> 00:01:15,380
‫um documento seria uma linha em uma tabela.

24
00:01:15,380 --> 00:01:17,770
‫Portanto, cada documento contém os dados

25
00:01:17,770 --> 00:01:20,600
‫sobre uma única entidade, por exemplo, uma

26
00:01:20,600 --> 00:01:24,870
‫postagem de blog ou um usuário ou uma revisão, ou qualquer

27
00:01:24,870 --> 00:01:26,780
‫outra coisa, na verdade.

28
00:01:26,780 --> 00:01:29,030
‫Você entendeu, certo?

29
00:01:29,030 --> 00:01:32,270
‫Agora, a coleção é como a estrutura pai

30
00:01:32,270 --> 00:01:34,730
‫que contém todas essas entidades.

31
00:01:34,730 --> 00:01:38,120
‫Por exemplo, uma coleção de blog para todas as

32
00:01:38,120 --> 00:01:41,730
‫postagens, uma coleção de usuários ou uma coleção de comentários.

33
00:01:41,730 --> 00:01:44,060
‫E você também pode ver aqui que

34
00:01:44,060 --> 00:01:47,740
‫o documento tem um formato de dados muito parecido com JSON, o

35
00:01:47,740 --> 00:01:49,810
‫que tornará nosso trabalho muito

36
00:01:49,810 --> 00:01:52,520
‫mais fácil quando começarmos a lidar com esses documentos.

37
00:01:52,520 --> 00:01:55,180
‫E é claro que falaremos muito sobre isso mais

38
00:01:55,180 --> 00:01:58,543
‫tarde, mas por enquanto, vamos aprender sobre os principais recursos do Mongo.

39
00:01:59,460 --> 00:02:02,260
‫Portanto, de acordo com o site do MongoDB,

40
00:02:02,260 --> 00:02:05,990
‫o MongoDB é um banco de dados de documentos com a

41
00:02:05,990 --> 00:02:08,330
‫escalabilidade e flexibilidade que você

42
00:02:08,330 --> 00:02:12,200
‫deseja, e com a consulta e indexação de que você precisa.

43
00:02:12,200 --> 00:02:14,710
‫Agora, isso soa um pouco exagerado, então

44
00:02:14,710 --> 00:02:17,503
‫vamos tentar entender o que isso realmente significa.

45
00:02:18,490 --> 00:02:23,250
‫Portanto, como vimos antes, o MongoDB é um banco de dados baseado em documentos,

46
00:02:23,250 --> 00:02:25,750
‫portanto, ele armazena dados em documentos que

47
00:02:25,750 --> 00:02:29,660
‫são estruturas de dados emparelhadas com valor de campo, como JSON.

48
00:02:29,660 --> 00:02:33,020
‫Então, novamente, ele armazena dados nesses documentos em vez

49
00:02:33,020 --> 00:02:34,840
‫de linhas em uma

50
00:02:34,840 --> 00:02:37,530
‫tabela, como nos bancos de dados relacionais tradicionais.

51
00:02:37,530 --> 00:02:39,930
‫Portanto, é um banco de dados

52
00:02:39,930 --> 00:02:42,190
‫NoSQL e não relacional.

53
00:02:42,190 --> 00:02:45,690
‫Além disso, o MongoDB tem escalabilidade incorporada, tornando muito

54
00:02:45,690 --> 00:02:48,360
‫fácil distribuir dados em várias máquinas

55
00:02:48,360 --> 00:02:50,920
‫à medida que seus aplicativos obtêm

56
00:02:50,920 --> 00:02:52,620
‫mais e mais

57
00:02:52,620 --> 00:02:56,090
‫usuários e começam a gerar uma tonelada de dados.

58
00:02:56,090 --> 00:02:59,710
‫Portanto, faça o que fizer, o MongoDB tornará muito mais

59
00:02:59,710 --> 00:03:01,110
‫fácil seu crescimento.

60
00:03:01,110 --> 00:03:04,010
‫A seguir, outro grande recurso do MongoDB

61
00:03:04,010 --> 00:03:06,360
‫é sua grande flexibilidade.

62
00:03:06,360 --> 00:03:10,210
‫Assim, não há necessidade de definir um esquema de dados do documento

63
00:03:10,210 --> 00:03:12,210
‫antes de preenchê-lo com dados, o

64
00:03:12,210 --> 00:03:15,460
‫que significa que cada documento pode ter um número e

65
00:03:15,460 --> 00:03:17,160
‫tipo de campos diferente.

66
00:03:17,160 --> 00:03:20,120
‫E também podemos alterar esses campos o tempo todo.

67
00:03:20,120 --> 00:03:22,130
‫E tudo isso está realmente de

68
00:03:22,130 --> 00:03:24,460
‫acordo com algumas situações de negócios do mundo

69
00:03:24,460 --> 00:03:26,690
‫real e, portanto, pode se tornar muito útil.

70
00:03:26,690 --> 00:03:31,550
‫MongoDB também é um sistema de banco de dados de alto desempenho.

71
00:03:31,550 --> 00:03:34,680
‫Graças a recursos como modelos de dados

72
00:03:34,680 --> 00:03:37,645
‫incorporados, indexação, fragmentação, os documentos flexíveis

73
00:03:37,645 --> 00:03:41,290
‫de que já falamos, duplicação nativa e

74
00:03:41,290 --> 00:03:43,010
‫muito mais.

75
00:03:43,010 --> 00:03:45,850
‫E você não precisa saber tudo isso, é

76
00:03:45,850 --> 00:03:50,320
‫claro, mas com certeza é bom saber que o MongoDB tem um

77
00:03:50,320 --> 00:03:52,100
‫alto desempenho, se necessário.

78
00:03:52,100 --> 00:03:55,270
‫Por fim, gostaria apenas de acrescentar que o

79
00:03:55,270 --> 00:03:57,710
‫MongoDB é um banco de dados

80
00:03:57,710 --> 00:04:01,350
‫gratuito e de código aberto, publicado sob a licença SSPL.

81
00:04:01,350 --> 00:04:04,700
‫Portanto, em resumo, podemos dizer que o MongoDB é

82
00:04:04,700 --> 00:04:06,770
‫um ótimo sistema de banco

83
00:04:06,770 --> 00:04:09,600
‫de dados para construir muitos tipos de aplicativos

84
00:04:09,600 --> 00:04:11,900
‫da web modernos, escaláveis e flexíveis.

85
00:04:11,900 --> 00:04:15,450
‫E, na verdade, Mongo é provavelmente o banco de dados

86
00:04:15,450 --> 00:04:18,250
‫mais usado sem JS e, portanto, é uma

87
00:04:18,250 --> 00:04:20,690
‫combinação perfeita para usarmos neste curso.

88
00:04:20,690 --> 00:04:22,970
‫Ok, agora vamos falar um

89
00:04:22,970 --> 00:04:25,910
‫pouco mais sobre esses documentos, e voltando ao

90
00:04:25,910 --> 00:04:28,540
‫nosso exemplo de postagens de blog desde

91
00:04:28,540 --> 00:04:31,330
‫o início, isso poderia ser uma representação muito

92
00:04:31,330 --> 00:04:34,140
‫simples de um único documento de postagem, certo?

93
00:04:34,140 --> 00:04:36,720
‫E agora, apenas para fins de comparação, aqui

94
00:04:36,720 --> 00:04:38,930
‫está como esses mesmos dados podem parecer

95
00:04:38,930 --> 00:04:42,250
‫uma linha em um banco de dados relacional como o

96
00:04:42,250 --> 00:04:45,580
‫MySQL, ou mesmo em uma planilha do Excel, se você

97
00:04:45,580 --> 00:04:47,640
‫estiver mais acostumado com isso.

98
00:04:47,640 --> 00:04:49,730
‫Como mencionei um pouco antes,

99
00:04:49,730 --> 00:04:53,190
‫o MongoDB usa um formato de dados semelhante ao

100
00:04:53,190 --> 00:04:56,070
‫JSON para armazenamento de dados chamado BSON.

101
00:04:56,070 --> 00:04:58,970
‫Parece basicamente o mesmo que JSON, mas

102
00:04:58,970 --> 00:05:01,650
‫é digitado, o que significa

103
00:05:01,650 --> 00:05:05,450
‫que todos os valores terão um tipo de dados como

104
00:05:05,450 --> 00:05:09,050
‫string, booleano, data e professor, objeto duplo ou mais.

105
00:05:09,050 --> 00:05:11,890
‫Aprenderemos tudo sobre isso mais tarde na prática.

106
00:05:11,890 --> 00:05:15,030
‫Então, o que isso significa é que todos

107
00:05:15,030 --> 00:05:16,700
‫os documentos MongoDB serão

108
00:05:16,700 --> 00:05:20,220
‫realmente digitados, o que é diferente de JSON, certo?

109
00:05:20,220 --> 00:05:23,830
‫Agora, assim como o JSON, esses documentos BSON também

110
00:05:23,830 --> 00:05:26,570
‫terão campos e os dados são armazenados

111
00:05:26,570 --> 00:05:28,270
‫em pares de valores-chave.

112
00:05:28,270 --> 00:05:30,840
‫Por outro lado, em um banco de

113
00:05:30,840 --> 00:05:33,730
‫dados relacional, cada campo é chamado de coluna.

114
00:05:33,730 --> 00:05:35,400
‫Portanto, aqui novamente você

115
00:05:35,400 --> 00:05:38,920
‫pode ver como esses bancos de dados organizam os dados em

116
00:05:38,920 --> 00:05:42,590
‫estruturas de tabela, enquanto nossos dados JSON são muito mais flexíveis.

117
00:05:42,590 --> 00:05:44,300
‫Pegue por exemplo o

118
00:05:44,300 --> 00:05:46,170
‫campo de tags, onde na

119
00:05:46,170 --> 00:05:50,470
‫verdade temos uma matriz, então temos basicamente vários valores para um campo, certo?

120
00:05:50,470 --> 00:05:54,140
‫Portanto, MongoDB, espaço e DV neste caso.

121
00:05:54,140 --> 00:05:57,040
‫Mas em bancos de dados relacionais, isso não é permitido.

122
00:05:57,040 --> 00:06:00,020
‫Não podemos ter vários valores em um campo

123
00:06:00,020 --> 00:06:03,100
‫e, portanto, teríamos que encontrar soluções alternativas para

124
00:06:03,100 --> 00:06:05,150
‫isso, o que poderia envolver

125
00:06:05,150 --> 00:06:07,550
‫mais trabalho e mais complicações gerais.

126
00:06:07,550 --> 00:06:10,540
‫Agora, outro recurso extremamente importante no MongoDB é

127
00:06:10,540 --> 00:06:13,040
‫o conceito de documentos incorporados, que

128
00:06:13,040 --> 00:06:16,120
‫é, novamente, algo que não está presente em

129
00:06:16,120 --> 00:06:18,290
‫bancos de dados relacionais.

130
00:06:18,290 --> 00:06:19,970
‫Portanto, em nosso campo

131
00:06:19,970 --> 00:06:23,050
‫de comentários aqui, temos um array que contém três objetos.

132
00:06:23,050 --> 00:06:24,500
‫Um para cada

133
00:06:24,500 --> 00:06:26,280
‫documento, e cada um deles

134
00:06:26,280 --> 00:06:28,700
‫poderia ser realmente seu próprio documento, certo?

135
00:06:28,700 --> 00:06:31,360
‫Imagine que tínhamos uma coleção

136
00:06:31,360 --> 00:06:34,550
‫de comentários que continha vários documentos de comentários.

137
00:06:34,550 --> 00:06:37,670
‫Cada um deles poderia ser exatamente assim, então

138
00:06:37,670 --> 00:06:40,600
‫com um autor e com o texto

139
00:06:40,600 --> 00:06:42,200
‫do comentário, mas

140
00:06:42,200 --> 00:06:45,850
‫em vez de fazer isso, incluímos esses comentários diretamente no

141
00:06:45,850 --> 00:06:49,610
‫documento de postagem do blog, em outras palavras, incorporamos os

142
00:06:49,610 --> 00:06:52,270
‫documentos de comentários diretamente no postar documento.

143
00:06:52,270 --> 00:06:55,410
‫Portanto, esse processo de incorporação, ou desnormalização,

144
00:06:55,410 --> 00:06:59,070
‫como também podemos chamá-lo, é basicamente incluir, portanto,

145
00:06:59,070 --> 00:07:01,930
‫incorporar alguns dados relacionados, todos em

146
00:07:01,930 --> 00:07:04,040
‫um único documento.

147
00:07:04,040 --> 00:07:07,540
‫Neste exemplo, os comentários estão relacionados à postagem

148
00:07:07,540 --> 00:07:10,880
‫e, portanto, são incluídos no mesmo documento.

149
00:07:10,880 --> 00:07:13,380
‫E isso torna um banco de dados mais

150
00:07:13,380 --> 00:07:15,760
‫eficiente em algumas situações porque, dessa forma, pode

151
00:07:15,760 --> 00:07:17,340
‫ser mais fácil ler

152
00:07:17,340 --> 00:07:20,150
‫todos os dados de que precisamos de uma vez.

153
00:07:20,150 --> 00:07:23,270
‫E isso é algo sobre o qual falaremos muito quando

154
00:07:23,270 --> 00:07:25,320
‫aprendermos sobre modelagem de dados,

155
00:07:25,320 --> 00:07:28,720
‫mas, por enquanto, espero que isso ainda faça sentido para você.

156
00:07:28,720 --> 00:07:31,850
‫Agora, o oposto de incorporar ou desnormalizar é normalizar,

157
00:07:31,850 --> 00:07:35,520
‫e é assim que os dados são sempre modelados em

158
00:07:35,520 --> 00:07:37,200
‫bancos de dados relacionais.

159
00:07:37,200 --> 00:07:40,430
‫Nesse caso, não é possível incorporar dados e, portanto,

160
00:07:40,430 --> 00:07:42,070
‫a solução é criar

161
00:07:42,070 --> 00:07:44,480
‫uma tabela totalmente nova para os

162
00:07:44,480 --> 00:07:47,320
‫comentários e, em seguida, unir as tabelas fazendo

163
00:07:47,320 --> 00:07:50,250
‫referência ao campo ID da tabela de comentários.

164
00:07:50,250 --> 00:07:52,590
‫Não vamos usar bancos de dados relacionais

165
00:07:52,590 --> 00:07:55,460
‫neste curso, mas acredito que ainda seja importante conhecer

166
00:07:55,460 --> 00:07:57,510
‫as diferenças se você quiser

167
00:07:57,510 --> 00:07:59,630
‫se tornar um bom desenvolvedor de back-end.

168
00:07:59,630 --> 00:08:01,940
‫De qualquer forma, e agora só

169
00:08:01,940 --> 00:08:04,810
‫para terminar, mais duas coisas sobre os documentos BSON.

170
00:08:04,810 --> 00:08:07,510
‫Primeiro, o tamanho máximo de

171
00:08:07,510 --> 00:08:12,120
‫cada documento é atualmente 16 MB, mas pode aumentar no futuro.

172
00:08:12,120 --> 00:08:16,180
‫E, em segundo lugar, cada documento contém um ID único,

173
00:08:16,180 --> 00:08:19,900
‫que atua como uma chave primária desse documento.

174
00:08:19,900 --> 00:08:23,780
‫Ele é gerado automaticamente com o tipo de dados do ID do objeto

175
00:08:23,780 --> 00:08:26,000
‫cada vez que há um novo

176
00:08:26,000 --> 00:08:28,605
‫documento e, portanto, não precisamos nos preocupar com isso.

177
00:08:28,605 --> 00:08:32,240
‫Tudo bem, e essa deve ser uma visão geral breve o suficiente

178
00:08:32,240 --> 00:08:33,610
‫para nos ajudar a

179
00:08:33,610 --> 00:08:37,210
‫começar e realmente usar o MongoDB a partir da próxima aula.

180
00:08:37,210 --> 00:08:38,873
‫Então, vamos prosseguir agora.

