﻿1
00:00:01,090 --> 00:00:03,210
‫Instructor: Al igual que en

2
00:00:03,210 --> 00:00:05,810
‫las secciones anteriores, antes de sumergirnos en

3
00:00:05,810 --> 00:00:08,590
‫una nueva tecnología, aprendamos de qué se trata.

4
00:00:08,590 --> 00:00:12,180
‫Entonces, en este caso, aprendamos qué es realmente MongoDB, cómo

5
00:00:12,180 --> 00:00:14,750
‫funciona y una descripción general rápida

6
00:00:14,750 --> 00:00:18,600
‫de cómo se compara con las bases de datos más tradicionales.

7
00:00:18,600 --> 00:00:21,340
‫Y comencemos con una descripción general simple.

8
00:00:21,340 --> 00:00:24,830
‫Entonces, MongoDB es obviamente una base de datos, y

9
00:00:24,830 --> 00:00:27,870
‫es la llamada base de datos NoSQL.

10
00:00:27,870 --> 00:00:30,930
‫Algunas personas también dicen No S Q

11
00:00:30,930 --> 00:00:34,240
‫L, pero yo seguiré diciendo "no secuela", ¿de acuerdo?

12
00:00:34,240 --> 00:00:37,010
‫Ahora, el otro tipo de base de

13
00:00:37,010 --> 00:00:40,620
‫datos, que es algo más tradicional, es la base de datos

14
00:00:40,620 --> 00:00:43,760
‫relacional, con la que a menudo se compara NoSQL.

15
00:00:43,760 --> 00:00:48,330
‫De todos modos, en Mongo, que también podemos decir en lugar de

16
00:00:48,330 --> 00:00:52,570
‫MongoDB, cada base de datos puede contener una o más colecciones.

17
00:00:52,570 --> 00:00:55,100
‫Entonces, si realmente proviene de uno

18
00:00:55,100 --> 00:00:58,530
‫de estos sistemas de bases de datos relacionales más

19
00:00:58,530 --> 00:01:02,760
‫tradicionales, puede pensar en una colección como una tabla de datos.

20
00:01:02,760 --> 00:01:05,520
‫Luego, cada colección puede contener una o

21
00:01:05,520 --> 00:01:09,130
‫más estructuras de datos llamadas documentos, y nuevamente, en

22
00:01:09,130 --> 00:01:11,870
‫una base de datos relacional,

23
00:01:11,870 --> 00:01:15,380
‫un documento sería una fila en una tabla.

24
00:01:15,380 --> 00:01:17,770
‫Entonces, cada documento contiene los datos

25
00:01:17,770 --> 00:01:20,600
‫sobre una sola entidad, por ejemplo, una

26
00:01:20,600 --> 00:01:24,870
‫publicación de blog o un usuario o una reseña, o cualquier

27
00:01:24,870 --> 00:01:26,780
‫otra cosa, en realidad.

28
00:01:26,780 --> 00:01:29,030
‫Entiendes el punto, ¿verdad?

29
00:01:29,030 --> 00:01:32,270
‫Ahora la colección es como la estructura principal

30
00:01:32,270 --> 00:01:34,730
‫que contiene todas estas entidades.

31
00:01:34,730 --> 00:01:38,120
‫Por ejemplo, una colección de blogs para todas las

32
00:01:38,120 --> 00:01:41,730
‫publicaciones, una colección de usuarios o una colección de reseñas.

33
00:01:41,730 --> 00:01:44,060
‫Y también puede ver aquí que el

34
00:01:44,060 --> 00:01:47,740
‫documento tiene un formato de datos que se parece mucho a

35
00:01:47,740 --> 00:01:49,810
‫JSON, lo que facilitará mucho

36
00:01:49,810 --> 00:01:52,520
‫nuestro trabajo cuando comencemos a trabajar con estos documentos.

37
00:01:52,520 --> 00:01:55,180
‫Y, por supuesto, hablaremos mucho de esto más

38
00:01:55,180 --> 00:01:58,543
‫adelante, pero por ahora, aprendamos sobre las características principales de Mongo.

39
00:01:59,460 --> 00:02:02,260
‫Entonces, según el sitio web de MongoDB,

40
00:02:02,260 --> 00:02:05,990
‫MongoDB es una base de datos de documentos con

41
00:02:05,990 --> 00:02:08,330
‫la escalabilidad y flexibilidad que

42
00:02:08,330 --> 00:02:12,200
‫desea, y con las consultas y la indexación que necesita.

43
00:02:12,200 --> 00:02:14,710
‫Ahora, eso suena un poco exagerado, así

44
00:02:14,710 --> 00:02:17,503
‫que intentemos entender lo que esto realmente significa.

45
00:02:18,490 --> 00:02:23,250
‫Entonces, como vimos antes, MongoDB es una base de datos basada en documentos, por

46
00:02:23,250 --> 00:02:25,750
‫lo que almacena datos en documentos que

47
00:02:25,750 --> 00:02:29,660
‫son estructuras de datos emparejadas con valores de campo como JSON.

48
00:02:29,660 --> 00:02:33,020
‫De nuevo, almacena datos en estos documentos en lugar de

49
00:02:33,020 --> 00:02:34,840
‫filas en una tabla

50
00:02:34,840 --> 00:02:37,530
‫como en las bases de datos relacionales tradicionales.

51
00:02:37,530 --> 00:02:39,930
‫Por lo tanto, es una base de

52
00:02:39,930 --> 00:02:42,190
‫datos NoSQL y no relacional.

53
00:02:42,190 --> 00:02:45,690
‫Además, MongoDB tiene escalabilidad incorporada, lo que facilita la

54
00:02:45,690 --> 00:02:48,360
‫distribución de datos en múltiples máquinas

55
00:02:48,360 --> 00:02:50,920
‫a medida que sus aplicaciones obtienen

56
00:02:50,920 --> 00:02:52,620
‫más y más

57
00:02:52,620 --> 00:02:56,090
‫usuarios y comienzan a generar una tonelada de datos.

58
00:02:56,090 --> 00:02:59,710
‫Entonces, hagas lo que hagas, MongoDB te facilitará

59
00:02:59,710 --> 00:03:01,110
‫el crecimiento.

60
00:03:01,110 --> 00:03:04,010
‫A continuación, otra gran característica de MongoDB

61
00:03:04,010 --> 00:03:06,360
‫es su gran flexibilidad.

62
00:03:06,360 --> 00:03:10,210
‫Por lo tanto, no es necesario definir un esquema de datos de

63
00:03:10,210 --> 00:03:12,210
‫documento antes de completarlo con datos,

64
00:03:12,210 --> 00:03:15,460
‫lo que significa que cada documento puede tener un número

65
00:03:15,460 --> 00:03:17,160
‫y tipo de campos diferente.

66
00:03:17,160 --> 00:03:20,120
‫Y también podemos cambiar estos campos todo el tiempo.

67
00:03:20,120 --> 00:03:22,130
‫Y todo esto está realmente en

68
00:03:22,130 --> 00:03:24,460
‫línea con algunas situaciones comerciales del mundo real

69
00:03:24,460 --> 00:03:26,690
‫y, por lo tanto, puede resultar bastante útil.

70
00:03:26,690 --> 00:03:31,550
‫MongoDB también es un sistema de base de datos muy eficaz.

71
00:03:31,550 --> 00:03:34,680
‫Gracias a características como modelos de datos

72
00:03:34,680 --> 00:03:37,645
‫integrados, indexación, fragmentación, los documentos flexibles

73
00:03:37,645 --> 00:03:41,290
‫de los que ya hablamos, duplicación nativa y

74
00:03:41,290 --> 00:03:43,010
‫mucho más.

75
00:03:43,010 --> 00:03:45,850
‫Y no necesita saber todo esto, por

76
00:03:45,850 --> 00:03:50,320
‫supuesto, pero es bueno saber que MongoDB tiene un alto rendimiento

77
00:03:50,320 --> 00:03:52,100
‫si es necesario.

78
00:03:52,100 --> 00:03:55,270
‫Finalmente, solo quería agregar que MongoDB es

79
00:03:55,270 --> 00:03:57,710
‫una base de datos gratuita

80
00:03:57,710 --> 00:04:01,350
‫y de código abierto, publicada bajo la licencia SSPL.

81
00:04:01,350 --> 00:04:04,700
‫Entonces, en resumen, podemos decir que MongoDB es un

82
00:04:04,700 --> 00:04:06,770
‫gran sistema de base

83
00:04:06,770 --> 00:04:09,600
‫de datos para construir muchos tipos de

84
00:04:09,600 --> 00:04:11,900
‫aplicaciones web modernas, escalables y flexibles.

85
00:04:11,900 --> 00:04:15,450
‫Y de hecho, Mongo es probablemente la base de datos más

86
00:04:15,450 --> 00:04:18,250
‫utilizada sin JS, por lo que es perfecta para

87
00:04:18,250 --> 00:04:20,690
‫que la usemos en este curso.

88
00:04:20,690 --> 00:04:22,970
‫Bien, ahora hablemos un poco

89
00:04:22,970 --> 00:04:25,910
‫más sobre estos documentos, y volviendo a nuestro

90
00:04:25,910 --> 00:04:28,540
‫ejemplo de publicaciones de blog desde el

91
00:04:28,540 --> 00:04:31,330
‫principio, esta podría ser una representación muy

92
00:04:31,330 --> 00:04:34,140
‫simple de un documento de publicación única, ¿verdad?

93
00:04:34,140 --> 00:04:36,720
‫Y ahora, solo por el bien de la

94
00:04:36,720 --> 00:04:38,930
‫comparación, así es como esos mismos datos

95
00:04:38,930 --> 00:04:42,250
‫podrían verse como una fila en una base de datos relacional

96
00:04:42,250 --> 00:04:45,580
‫como MySQL, o incluso en una hoja de cálculo de Excel,

97
00:04:45,580 --> 00:04:47,640
‫si está más acostumbrado a eso.

98
00:04:47,640 --> 00:04:49,730
‫Entonces, como mencioné un poco

99
00:04:49,730 --> 00:04:53,190
‫antes, MongoDB usa un formato de datos similar a JSON

100
00:04:53,190 --> 00:04:56,070
‫para el almacenamiento de datos llamado BSON.

101
00:04:56,070 --> 00:04:58,970
‫Se ve básicamente igual que JSON, pero

102
00:04:58,970 --> 00:05:01,650
‫está escrito, lo que significa

103
00:05:01,650 --> 00:05:05,450
‫que todos los valores tendrán un tipo de datos como

104
00:05:05,450 --> 00:05:09,050
‫cadena, booleano, fecha y profesor, objeto doble o más.

105
00:05:09,050 --> 00:05:11,890
‫Aprenderemos todo sobre esto más adelante en la práctica.

106
00:05:11,890 --> 00:05:15,030
‫Entonces, lo que esto significa es que todos

107
00:05:15,030 --> 00:05:16,700
‫los documentos MongoDB realmente

108
00:05:16,700 --> 00:05:20,220
‫se escribirán, lo cual es diferente de JSON, ¿de acuerdo?

109
00:05:20,220 --> 00:05:23,830
‫Ahora, al igual que JSON, estos documentos BSON también

110
00:05:23,830 --> 00:05:26,570
‫tendrán campos y los datos se almacenan

111
00:05:26,570 --> 00:05:28,270
‫en pares clave-valor.

112
00:05:28,270 --> 00:05:30,840
‫Por otro lado, en una base

113
00:05:30,840 --> 00:05:33,730
‫de datos relacional, cada campo se llama columna.

114
00:05:33,730 --> 00:05:35,400
‫Entonces, aquí nuevamente puede

115
00:05:35,400 --> 00:05:38,920
‫ver cómo estas bases de datos organizan los datos en estructuras

116
00:05:38,920 --> 00:05:42,590
‫de tablas, mientras que nuestros datos JSON son mucho más flexibles.

117
00:05:42,590 --> 00:05:44,300
‫Tomemos, por ejemplo, el

118
00:05:44,300 --> 00:05:46,170
‫campo de etiquetas, donde en realidad

119
00:05:46,170 --> 00:05:50,470
‫tenemos una matriz, por lo que básicamente tenemos varios valores para un campo, ¿verdad?

120
00:05:50,470 --> 00:05:54,140
‫Entonces MongoDB, espacio y DV en este caso.

121
00:05:54,140 --> 00:05:57,040
‫Pero en las bases de datos relacionales, eso no está realmente permitido.

122
00:05:57,040 --> 00:06:00,020
‫No podemos tener varios valores en un campo, por

123
00:06:00,020 --> 00:06:03,100
‫lo que tendríamos que encontrar soluciones alternativas para esto,

124
00:06:03,100 --> 00:06:05,150
‫lo que podría implicar más

125
00:06:05,150 --> 00:06:07,550
‫trabajo y una mayor complicación general.

126
00:06:07,550 --> 00:06:10,540
‫Ahora, otra característica extremadamente importante en MongoDB es

127
00:06:10,540 --> 00:06:13,040
‫el concepto de documentos incrustados, que

128
00:06:13,040 --> 00:06:16,120
‫es, nuevamente, algo que no está presente en

129
00:06:16,120 --> 00:06:18,290
‫las bases de datos relacionales.

130
00:06:18,290 --> 00:06:19,970
‫Entonces, en nuestro campo

131
00:06:19,970 --> 00:06:23,050
‫de comentarios aquí, tenemos una matriz que contiene tres objetos.

132
00:06:23,050 --> 00:06:24,500
‫Uno para cada

133
00:06:24,500 --> 00:06:26,280
‫documento, y cada uno de

134
00:06:26,280 --> 00:06:28,700
‫ellos podría ser su propio documento, ¿verdad?

135
00:06:28,700 --> 00:06:31,360
‫Así que imagina que tuviéramos una colección

136
00:06:31,360 --> 00:06:34,550
‫de comentarios que contenía un montón de documentos de comentarios.

137
00:06:34,550 --> 00:06:37,670
‫Cada uno de ellos podría verse exactamente así, por lo

138
00:06:37,670 --> 00:06:40,600
‫que con un autor y con el texto del

139
00:06:40,600 --> 00:06:42,200
‫comentario, pero en lugar

140
00:06:42,200 --> 00:06:45,850
‫de hacer eso, incluimos estos comentarios directamente en el documento de

141
00:06:45,850 --> 00:06:49,610
‫publicación del blog, por lo que, en otras palabras, incrustamos los documentos

142
00:06:49,610 --> 00:06:52,270
‫de comentarios directamente en el Publicar documento.

143
00:06:52,270 --> 00:06:55,410
‫Entonces, este proceso de incrustación, o desnormalización,

144
00:06:55,410 --> 00:06:59,070
‫como también podemos llamarlo, consiste básicamente en incluir, por

145
00:06:59,070 --> 00:07:01,930
‫lo tanto, incrustar, algunos datos relacionados

146
00:07:01,930 --> 00:07:04,040
‫en un solo documento.

147
00:07:04,040 --> 00:07:07,540
‫En este ejemplo, los comentarios están relacionados con la publicación,

148
00:07:07,540 --> 00:07:10,880
‫por lo que se incluyen en el mismo documento.

149
00:07:10,880 --> 00:07:13,380
‫Y esto hace que una base de datos sea

150
00:07:13,380 --> 00:07:15,760
‫más eficiente en algunas situaciones porque de esta

151
00:07:15,760 --> 00:07:17,340
‫manera, puede ser más fácil

152
00:07:17,340 --> 00:07:20,150
‫leer todos los datos que necesitamos todos a la vez.

153
00:07:20,150 --> 00:07:23,270
‫Y esto es algo de lo que hablaremos mucho cuando

154
00:07:23,270 --> 00:07:25,320
‫aprendamos sobre el modelado de datos,

155
00:07:25,320 --> 00:07:28,720
‫pero por ahora, espero que esto todavía tenga sentido para usted.

156
00:07:28,720 --> 00:07:31,850
‫Ahora, lo opuesto a incrustar o desnormalizar es normalizar,

157
00:07:31,850 --> 00:07:35,520
‫y así es como los datos siempre se modelan en

158
00:07:35,520 --> 00:07:37,200
‫bases de datos relacionales.

159
00:07:37,200 --> 00:07:40,430
‫Entonces, en ese caso, no es posible incrustar datos, por

160
00:07:40,430 --> 00:07:42,070
‫lo que la solución

161
00:07:42,070 --> 00:07:44,480
‫es crear una tabla completamente nueva para

162
00:07:44,480 --> 00:07:47,320
‫los comentarios y luego unir las tablas haciendo

163
00:07:47,320 --> 00:07:50,250
‫referencia al campo ID de la tabla de comentarios.

164
00:07:50,250 --> 00:07:52,590
‫Ahora no vamos a utilizar bases de datos

165
00:07:52,590 --> 00:07:55,460
‫relacionales en este curso, pero creo que aún es importante

166
00:07:55,460 --> 00:07:57,510
‫conocer las diferencias si quieres

167
00:07:57,510 --> 00:07:59,630
‫convertirte en un buen desarrollador de back-end.

168
00:07:59,630 --> 00:08:01,940
‫De todos modos, y ahora solo

169
00:08:01,940 --> 00:08:04,810
‫para terminar, dos cosas más sobre los documentos BSON.

170
00:08:04,810 --> 00:08:07,510
‫Primero, el tamaño máximo de cada

171
00:08:07,510 --> 00:08:12,120
‫documento es actualmente de 16 MB, pero podría aumentar en el futuro.

172
00:08:12,120 --> 00:08:16,180
‫Y en segundo lugar, cada documento contiene una identificación única,

173
00:08:16,180 --> 00:08:19,900
‫que actúa como clave principal de ese documento.

174
00:08:19,900 --> 00:08:23,780
‫Se genera automáticamente con el tipo de datos de ID de objeto cada

175
00:08:23,780 --> 00:08:26,000
‫vez que hay un documento nuevo,

176
00:08:26,000 --> 00:08:28,605
‫por lo que no tenemos que preocuparnos por eso.

177
00:08:28,605 --> 00:08:32,240
‫Muy bien, y esa debería ser una descripción general lo suficientemente

178
00:08:32,240 --> 00:08:33,610
‫breve como para

179
00:08:33,610 --> 00:08:37,210
‫comenzar y para usar MongoDB de la próxima lección en adelante.

180
00:08:37,210 --> 00:08:38,873
‫Entonces, sigamos adelante.

