Full transcript
Repaso Ventajas
0:01[Música]
0:07[Aplausos]
0:08tiempo que son iguales, pero pueden
0:11tener diferentes en en columnas
0:14diferentes
0:15eh valores.
0:17En en ese en ese caso no se podría saber
0:20cuál es el correcto.
0:21Entonces, a eso cómo lo llamamos o cómo
0:24se lo puede llamar ese problema.
0:28Redundancia no controlada,
0:30¿no? Eso es redundancia no controlada,
0:32está bien, pero ese efecto colateral,
0:37inconsistencia de los datos.
0:40Inconsistencia de los datos. Te escucho
0:42muy despacito, no sé por qué será, pero
0:44sí puede ser eso. Nos referimos con
0:47inconsistencia de los datos. ¿Por qué?
0:49Porque acá se refiere a que en dos
0:52lugares distintos tenemos cargada la
0:54misma información.
0:57está. Entonces, e
1:01cuando hablamos de eso, cuando sucede
1:04eso, puede ser que eh puede ser que eh
1:08como mínimo tengamos duplicado esa ese
1:11esos datos, con lo cual perdemos espacio
1:14de almacenamiento. Eso habíamos dicho
1:16que hoy en día en menor escala, en una
1:19escala menor,
1:22no es gran problema. ¿Sí? ¿Por qué?
1:24Porque hoy en día el almacenamiento está
1:26muy barato. Pero así todo los otros dos
1:30problemas, ¿cuáles serían? Uno lo
1:32nombraron que es la inconsistencia, es
1:34decir, puedo llegar a tener, por
1:36ejemplo, dos direcciones eh distintas,
1:40dos correos diferentes para la misma
1:42persona. Sí. Y la otra que no nombramos
1:47todavía,
1:49lo que vamos a tener es duplicación del
1:51trabajo. ¿Sí? Porque al tener, por
1:53ejemplo, dos lugares en donde actualizar
1:56los mismos datos, vamos a tener que
1:57hacerlo dos veces,
2:00¿sí?
2:01Ya sea la misma persona, ¿sí? O dos
2:05personas distintas, con lo cual la
2:06cantidad de obras hombres se termina
2:09duplicando. ¿Sí? Entonces, todo esto que
2:13dijimos son desventajas, por supuesto.
2:16¿Okay?
2:18Entonces, esto que vimos es redundancia
2:20de qué tipo
2:26redundancia no controlada.
2:27Redundancia no controlada, ¿sí? En
2:29definitiva, no deseada. Okay.
2:34Por otra parte, sí podemos tener la
2:38redundancia no siempre es mala. Sí.
2:42a esa redundancia que la hacemos a
2:44propósito, se la llama redundancia
2:47controlada o redundancia deseada.
2:51Sí. Y se hace con qué
2:54propósito
2:56aunque sea uno, por ejemplo, tablas en
2:59este caso
2:59para cotejar,
3:02mejorar el rendimiento de la consulta,
3:03puede ser
3:05la persistencia de datos, ¿no es así?
3:08Bueno, ahí tenemos ahí me nombraron creo
3:11que ya todos los que podrían ser por un
3:13lado mejorar qué el rendimiento, o el
3:16funcionamiento de nuestra base de datos.
3:19Sí, porque a veces es necesario
3:25duplicar la información para que el
3:27acceso sea más rápido. Sí, cuando
3:30tenemos mucha concurrencia.
3:32Sí, siempre y cuando esa esa duplicación
3:36justamente esté controlada, esa
3:37redundancia esté controlada. ¿Sí? Y por
3:41el otro lado
3:43tenemos eh,
3:47¿cómo se llama? Eh, el tema de la
3:49confiabilidad,
3:52¿sí?
3:53que es popularmente tiene que está
3:56vinculado a tener redundancia por si
3:59pasa algo con el resto de los datos. Es
4:02decir, tenemos varios servidores,
4:05¿sí? Con la misma con los mismos datos.
4:08Entonces, si se cae uno, no hay
4:10problema, redireccionamos las consultas
4:12al otro, a los restantes.
4:16Entonces, a eso lo denominamos
4:17redundancia controlada. Sí, puede ser
4:19por performance, ¿sí? Y puede ser por
4:23confiabilidad,
4:25¿sí? Para evitar caídas.
4:28Estamos,
4:31por ejemplo, eso sería una posibilidad
4:36lo que están mencionando en el chat.
4:39Bien, entonces esto es algo que todas
4:42las ventajas en sí seguramente en algún
4:44momento se las pediré. Ya habíamos
4:46hablado esta, pero quería dejar en claro
4:49esta lo que tiene que ver con la
4:52redundancia en sí. Eh, bueno, si no hay
4:57preguntas de
4:59lo que se lo que se habla en espejo es
5:01cuando tenemos eh vamos a decir
5:03configurado el hardware en forma de
5:05discos, por ejemplo, ride y esas cosas.
5:08Exactamente,
5:09exactamente a eso se refiere. Y eh
5:13obviamente hay varias
5:15pensé que había otro tipo de despejado
5:18que no sea eso.
5:20No, no, a eso es básicamente a eso se
5:23refiere, pero ahí más que nada estamos
5:25hablando no es tanto una técnica de base
5:28de datos en sí, sino que ya es más a
5:32nivel de sistema operativo y hardware,
5:34¿no?
5:34Claro, de hardware. Sí, sí, sí. Por eso
5:36le preguntaba.
5:37Mm. Sí, sí.
5:39Eh, acá, a ver, como para mencionar,
5:45se les conocen alguna por ahí, los que
5:48ya usaron conocen alguna técnica que
5:51sirva más vinculada de la base de datos
5:54que sirva para
5:56justamente tener duplicados los datos
5:59por por confiabilidad,
6:03sinceramente, no
6:07escucharon hablar en algún momento de la
6:09replicación.
6:17La replicación de bases de datos es
6:22conocida en el sentido de decir que yo
6:25voy a tener
6:28duplicados
6:30una o más veces eh la misma información
6:33o una parte de mi base de datos en en
6:37los cuales yo puedo tener, por ejemplo,
6:40un esquema maestro esclavo. Sí.
6:44en el sentido de que decir, voy a tener
6:47una tabla, una tabla, una base de datos
6:50principal y se supone que en el esclavo
6:53yo tengo una un espejo o una sección, un
6:58subconjunto de tablas, vamos a decir, de
7:01esos datos
7:03que yo sé que si yo digo que voy a hacer
7:05toda la base de datos, voy a decir,
7:07bueno, esa base de datos va a estar
7:09duplicándose, sincronizándose, se llama.
7:12Sí. voy a tener una sincronización entre
7:14esas bases de datos cada x cantidad de
7:17tiempo. Sí, eso me permite a mí, por
7:21ejemplo, tener un esquema, tener un que
7:24tenga un doble sentido.
7:26Sí, por un lado, al tener un maestro,
7:31yo sé que yo cuento con ese como la
7:33fuente principal en general, donde yo
7:36voy a enviar todas mis actualizaciones.
7:39Sí.
7:41Y los esclavos van a ser en general
7:43donde yo voy a hacer la mayor cantidad
7:45de lecturas.
7:47Sí, obviamente este esquema depende si
7:50mi base de datos va a estar preparada
7:54para hacer más escrituras que lectura o
7:57está. Hay que fijarse bien si me sirve
8:01para eso. La replicación también se da
8:04cuando yo tengo, por ejemplo, un esquema
8:05de sucursales. Hoy en día fue mutando el
8:08uso de esto, pero en un principio se
8:11daba, por ejemplo, también al margen de
8:13esta cuestión para decir, bueno, yo
8:15tengo en mi empresa muchas sucursales
8:19y digo, en cada sucursal yo tengo una
8:23copia o parte de mi base de datos.
8:27pueden ser los registros que le
8:28interesan a esa sucursal nada más.
8:31Entonces, lo que hago cada tanto esa
8:33sucursal envía, ese es otro esquema,
8:36envía las actualizaciones al maestro.
8:40Sí, ahí ya no se hace tanto por eh por
8:45performance, sino por una un tema de
8:48distribución de los datos en sí.
8:51Okay.
8:53Hoy en día con internet y en la
8:56disponibilidad de hardware y la
8:58disponibilidad infraestructura, por ahí
9:00cambió un poco ese enfoque, ¿sí?
9:02Entonces está todo mucho más a su vez
9:05centralizado,
9:07pero dentro de esa centralización
9:09también existen duplicación de datos
9:11para mantener la confiabilidad, la
9:14performance, etcétera. Sí. Bueno, eso es
9:17un poco a lo que se refiere con
9:19replicación, tener ese esquema que me
9:21sirve a diferentes propósitos. ¿Sí?
9:27Este era el ejercicio que ustedes tenían
9:28que hacer. Ahí habíamos visto uno,
9:31algunos de ellos. Sí.
9:34Y ahora lo que me quedó pendiente de
9:36esta diapositiva es básicamente cuándo
¿Por qué no usar BBDD?
9:40no usar una base de datos.
9:43Sí.
9:45Eh, y en realidad las alternativas de
9:49cuándo no usar una base de datos son
9:51pocas,
9:53porque
9:55en un principio el no uso de una base de
9:58datos estaba muy vinculado al costo que
10:01tenían. Sí, pero hoy en día tenemos
10:05disponible bastantes alternativas
10:08abiertas gratuitas.
10:10Sí. Entonces, por un lado, si el costo
10:14es un factor que
10:18para adquirir el producto en sí no sería
10:22no sería un factor decisivo. Obviamente
10:27por ahí sí el costo estaría presente
10:30entre elegir una base de datos o otras.
10:33Sí, pero cuando hablamos de elegir acá,
10:36acá se refiere a usar una base de datos
10:40o usar un enfoque de archivos simple,
10:42¿está? Entonces decimos usar, ¿por qué
10:45no usar una base de datos? porque el
10:48costo de inversión de esa base de datos
10:50o de implementación de la base de datos
10:52es elevado y no me conviene.
10:56Y en ese sentido, hoy son muy pocas las
10:59eh
11:02digamos los casos en que realmente lo
11:05pueda justificar por ese lado. Sí.
11:10Entonces está ahí como para eh como para
11:13tenerlo en cuenta.
11:16El otro punto es la simplicidad o
11:19simpleza del escenario que yo quiero
11:22usar. ¿Sí? Es decir,
11:26si yo tengo una aplicación muy simple en
11:29la cual se persisten muy pocos datos,
11:33entonces debería pensar si es necesario
11:36eh recurrir al uso de una base de datos.
11:40Porque la base de datos quiera o no,
11:42agrega una pequeña sobrecarga
11:45al eh proceso de desarrollo.
11:48Entonces, yo tengo que sopesar si esa
11:50sobrecarga del modelado de de eh, ¿cómo
11:54se llama?, de la utilización o la
11:56implementación dentro de mi dentro de mi
12:00programa, de mi aplicación, vale la pena
12:02que en la mayoría de de los casos lo
12:04vale, porque en realidad me simplifica
12:06muchas veces más el trabajo que
12:08complicármela. Sí. Entonces, si yo digo
12:11que mi aplicación es muy simple, no
12:13tengo que persistir tantos datos, los
12:15datos de persistir son básicos, entonces
12:19no utilizaría base de datos en ese caso.
12:22Sí.
12:24Lo otro
12:27tiene que ver con el desempeño.
12:30Si de nuevo necesito
12:34tener una aplicación que tiene, estamos
12:36hablando de requerimientos muy estrictos
12:38de velocidad, básicamente de tiempo
12:42real, en la cual no puedo soportar la
12:45sobrecarga que conlleva las consultas o
12:48las actualizaciones sobre una base de
12:51datos.
12:52de nuevo, porque quiera o no, hay una
12:55capa ahí agregada. Sí.
13:00Entonces, debería pensar en otro
13:02esquema, por ejemplo, en un esquema de
13:04archivos o una base de datos muy eh
13:08digamos especial o específica para lo
13:11que yo tengo que realizar.
13:15¿Por qué se supone que la base de datos
13:17ahí agregaría un componente
13:19de retardo? ¿Cuál es la cuestión?
13:26Y por los por las relaciones, por las la
13:29forma de buscar las cosas en el índice.
13:33Si hablo de una base de datos
13:35relacional, sí, si hablo por ahí tengo
13:38otro tipo de bases de datos. Por ahí las
13:40bases de datos, no SQL, que están más
13:42orientadas al a grandes volúmenes y a
13:45performance podría mejorar ese esa
13:48cuestión. Pero el tema es que recuerden
13:51que habíamos dicho que las bases de
13:52datos son de propósito
13:56general.
13:57General. Y para hacer esa para ser
14:00general
14:02indefectiblemente necesita contemplar
14:04muchos casos de uso.
14:07Sí,
14:07le agregan más capas.
14:09Claro que tienen que agregar muchas
14:12líneas de código en el medio para poder
14:14resolver ciertas cuestiones. Entonces,
14:17cuando yo tengo algo específico,
14:20que yo sé que necesito hacerlo rápido y
14:25tengo que sopesarlo bien, si estoy
14:27hablando de desempeño, decir yo estoy
14:30debo estar seguro de que lo puedo hacer
14:32mejor sin base de datos,
14:34está
14:36o con una base de datos eh digamos
14:40adaptada o específica para lo que yo
14:42quiero hacer. Sí,
14:45podría dar un ejemplo.
14:47Sí, claro. O sea, vamos a suponer que
14:50estoy hablando de por un lado eh una
14:54aplicación que utiliza fuertemente,
14:58vamos a decir, animaciones en 3D, ¿sí?
15:03que que necesitas tener información
15:06en todo, necesitas recabar información
15:09en todo momento y necesitas hacerlo en
15:12tiempo real porque o si no la gráfica se
15:14va a ver degradada y si esa información
15:17vos la estás consultando una base de
15:19datos por ahí no va a ser lo mejor. Sí,
15:24necesitaría tener algún tipo de archivo
15:27o una base de datos muy adaptada a lo
15:29que voy a usar.
15:31Lo otro es que por ahí sí necesito, por
15:33ejemplo, para
15:35un proceso de fabricación o algo que
15:38necesito hacer un control muy rápido,
15:42¿sí?,
15:42de elementos que estoy desarrollando
15:45y eso esas consultas que tengo que hacer
15:48las tengo que hacer en milisegundos, no
15:51puedo no pueden tardar mucho. Entonces
15:55ahí quizás una base de datos no no va a
15:58ser la mejor opción para este tipo de
16:01cosas. Sí. Entonces tiene que ver con
16:05requerimientos de tiempo real. Sí,
16:08siempre es mucho más rápido acceder a un
16:11archivo pequeño que a una tabla en una
16:14base de datos, ¿entiendes?
16:17o todo lo que tiene que ver con el tema
16:18de caché, que se normalmente se utiliza
16:23por ejemplo, pero piensan más allá de lo
16:25que es una aplicación
16:28común en base, a ver,
16:31a esto me refiero con que por ahí eh
16:33serían aplicaciones muy específicas en
16:36el sentido de decir que quizás no van a
16:38ser masivas, uno por ahí piensa en en en
16:41bases de datos y grandes volúmenes de
16:43datos cuando yo estoy hablando de acceso
16:46concurrente.
16:48Pero ahí se da una cuestión.
16:51Yo al tener acceso en general son muchas
16:55personas, muchos usuarios accediendo
16:57manera concurrente de la cual tengo que
16:59guardar datos y en general los datos
17:00suelen ser complejos, por lo cual no me
17:03queda una no me queda otra alternativa
17:04que usar base de datos. Y ante la
17:06alternativa de usar base de datos, sí o
17:09sí voy a tener que elegir una que tenga
17:11la mejor performance.
17:13Pero a lo que yo voy es por ahí necesito
17:18almacenar datos que no son tan
17:20complejos, pero sí necesito una
17:22velocidad
17:24fenomenal. ¿Sí? Entonces, en ese caso
17:29estamos hablando ni que una base de
17:31datos, vamos a decirlo, clave o valor
17:34puede llegar a servir. Por más simple
17:36que sea su guardado, quizás no me no me
17:40serviría. Por ahí podríamos hablar una
17:42base de datos en memoria RAM, como lo
17:45por ahí lo estás mencionando. Bueno,
17:47podría ser una posibilidad.
17:49Sí,
17:51claro. Sí, a eso me refería.
17:53Eso podría ser una posibilidad, pero ahí
17:55fíjense que estamos disminuyendo la capa
17:58de base de datos del eh del sistema
18:00gestor de base de datos a un mínimo,
18:03entonces sería una chance.
18:06Está.
18:08Pero bueno, esto es una cuestión ahí muy
18:11que hoy en día está un poqu debatible,
18:15así como hoy en día el costo es
18:17debatible, el desempeño es debatible
18:19porque tenemos mucha variedad de base de
18:21datos. Entonces, de nuevo, es eh habría
18:25que analizarlo bien. Sí.
18:29Eh, bien. Y el otro,
18:34la otra cuestión es, por ejemplo, bueno,
18:36voy a tener una aplicación monousuario.
18:39Sí,
18:42esto qué implica vamos, voy a tener un
18:44solo usuario accediendo en todo momento.
18:46Bueno, no voy a tener esa no voy a tener
18:49ese requerimiento de manejo de la
18:51concurrencia,
18:53que las bases de datos están preparadas
18:55para eso. Entonces podría decantar por
18:58otra alternativa. Por supuesto que acá
19:02vuelvo a recalcar, estamos hablando de
19:04que se trata de en general
19:06almacenamiento de datos simples. Sí, no,
19:08no tengo una estructura compleja que voy
19:11a almacenar
19:13porque si yo tuviera un requerimiento,
19:15si yo tuviera una aplicación mono, por
19:17más que tenga una aplicación
19:18monousuario, si tengo ya cierta
19:21cantidad, vamos a decir, de tabla o de
19:23elementos de información almacenar y voy
19:26a elegir una base de datos pequeña, pero
19:28voy a elegir una base de datos en sí
19:30para usarla.
19:32¿Okay?
19:36Y lo otro, bueno, tiene que ver con el
19:38eh con el almacenamiento. Sí. Eh que
19:42esto se refiere a se acuerdan cuando
19:46estuvimos trabajando la el cuatrimestre
19:49pasado y en uno de los ejemplitos muy
19:51pequeños que hicimos, utilizamos una
19:53base de datos atachada.
19:57Sí, en este caso era una base de datos
19:59de SQL, pero también podría ser otra
20:02base de datos como SQLite y demás.
20:05El solo hecho de atachar la base de
20:07datos vacía hace que ocupe un pequeño
20:10espacio,
20:12¿sí? Más o menos, dependiendo de la
20:15implementación de la base de datos y
20:17demás.
20:18Si el espacio
20:22que puede llegar a ocupar la base de
20:24datos es crítico,
20:26estando ya vacía, me refiero, sí, desde
20:29cero.
20:31Entonces, puede ser que una base de
20:33datos no me sirva. Esto en general lo
20:35vamos a esta restricción en general la
20:37vamos a tener en qué tipo de
20:38dispositivos.
20:43Sí, en dispositivos embebidos en
20:45general.
20:47Profe, atachado, ¿qué es?
20:49Que está adosada a una aplicación.
20:53Sí, recuerden que nosotros habíamos
20:55visto, por ejemplo, el ejemplo de una
20:57basecita de datos MDF.
21:00Sí,
21:03ustedes podrían atachar cualquier otro
21:05tipo de base de datos que quisieran,
21:07siempre que esté preparado para eso.
21:09¿Sí? Entonces, si si
21:12el dispositivo en donde yo voy a correr
21:14la aplicación no tiene los recursos
21:17suficientes,
21:20ese podría ser una restricción.
21:23Sí,
21:27estamos. Entonces, estos son los cinco
21:28elementos
21:30o los cinco las cinco cuestiones que
21:33debería analizar al momento de usar una
21:35base de datos. Por supuesto que por
21:38defecto cuando yo tengo que guardar
21:39información en lo primero que pienso es
21:42una base de datos. Sí,
21:45deberían haber razones muy fuertes
21:47vinculadas a estos criterios para que no
21:50las use. ¿Se entiende
21:56bien? Sí, profe.
21:59Bueno,
22:01listo. Entonces, pasemos a la otra
22:05diapositiva.
22:08Deberían estar viendo
22:11una diapositiva que dice modelos.
Modelos
22:16Bien.
22:16Sí, profe.
22:18Perfecto. Entonces,
22:21ahora vamos a empezar. Hoy la idea de
22:24hoy es ver rápidamente o tratar de
22:28determinar, digamos, con
22:32lo vinculado a eh modelos y
22:34arquitecturas en general de bases de
22:37datos. Sí,
22:40una cuestión muy importante cuando
22:43nosotros hablamos de una base de datos
22:45es el modelo en que está basado. Pero
22:47antes de eso, entonces vamos a ir al
22:49concepto de modelo en sí.
22:52¿Cómo podríamos definir a un modelo?
22:55¿Qué es un modelo
22:57en general? No solo de datos.
23:01Representación de datos en este caso o
23:03una representación determinada.
23:05Es una representación de algo. Es una
23:08abstracción.
23:09Sí, el modelo.
23:12Y saliendo un poco de lo que es sistemas
23:15y bases de datos y todo eso, ¿qué eh se
23:20les ocurre un ejemplo en otro ámbito de
23:22lo que es un modelo? No sé que hayan
23:25visto por ahí.
23:34¿Cuál cuál es el
23:36una maqueta? Podría ser de
23:39cómo
23:40una maqueta de algo de
23:44Exactamente.
23:46Por ejemplo, una maqueta es un modelo a
23:50escala de algo.
23:53Sí.
23:55Un plano es un modelo de algo.
23:59Sí. El plano de una casa es un modelo de
24:03ala. Ahora, y ahí para ser un poquito
24:07más quisquilloso, en realidad la maqueta
24:10en sí no es el modelo, ni el plano es el
24:12modelo en sí.
24:14¿Qué son esos que estaba mencionando?
24:20Son representaciones.
24:22Exactamente. Exactamente. Son esa eso
24:26que estaba mencionando son el plano, la
24:28maqueta, son representaciones del modelo
24:32que yo quiero realizar o que valgar la
24:36redundancia, quiero modelar. El
24:38propósito de un modelo es tratar de
24:42estudiar ciertos fenómenos, cierta
24:45estructura
24:47y resaltar aquellos aspectos que son más
24:49importantes. Por eso hablamos de
24:51abstracción, que es el mismo concepto
24:53que nosotros utilizamos en orientación
24:55objetos. ¿Sí?
24:58Entonces, cuando cuando nosotros hacemos
25:00un modelo de algo es porque intentamos
25:04tratar de comprender un fenómeno en que
25:08queremos estudiar. ¿Sí?
25:11Ahora,
25:12ese ese modelo, digamos, es más que nada
25:15algo conceptual, es un conjunto de ideas
25:18fundamentalmente
25:20que yo lo puedo hacer concreto o lo
25:24puedo plasmar en alguna representación.
25:28Esa representación puede ser un dibujo,
25:31un como el plano que estábamos
25:33mencionando. Sí. Y en el caso de la
25:37maqueta es algo físico a escala. Sí,
25:43también podría tener un modelo digital
25:46de un plano de de esa estructura en 3D.
25:50Sí,
25:52eso es lo más conocido.
25:56Y fíjense que no todos los modelos
26:00representan todas las características de
26:02una de de ese fenómeno que yo quiero
26:05estudiar, que en el caso de arquitectura
26:07tiene que ver con con tratar de modelar
26:10la casa que yo quiero construir, ¿sí?, o
26:13el edificio que yo quiero construir.
26:15Fíjense que cuando hablamos de plano, lo
26:18primero que se me viene, lo primero que
26:20nos nos suele venir a la mente es el
26:23plano eh típico
26:26en el cual yo veo las paredes, veo las
26:28puertas, las ventanas y demás. Sí, pero
26:32hay otro tipo de planos además de eso.
26:36Sí, los del suelo que se usan para para
26:40el petróleo sobre todo.
26:41Bueno, pero yendo fundamentalmente a lo
26:44que es esto de de hacer una casa, por
26:46ejemplo,
26:48planos eléctricos,
26:50los planos eléctricos, los planos
26:52sanitarios, por ejemplo. Sí.
26:55Entonces, ese modelo tiene diferentes
26:58facetas y yo me eh concentro,
27:03en una faceta a la vez para tratar de
27:06estudiar eso. Sí,
27:09estamos. Entonces, el modelo se refiere
27:11a esa cuestión. Ahora, cuando
27:15ya eh queremos ser un poco más
27:18específicos y entrando a lo que nos
27:20compete en este caso, un modelo de
27:23datos, ¿sí? Es un conjunto de conceptos
27:27que nos pueden servir a nosotros para eh
27:30describir una estructura de base de
27:32datos, ¿sí? Para tratar de entender esa
27:36base de datos que yo quiero realizar.
27:40Por eso cuando nosotros hagamos los
27:42diagramas y demás, tienen que entender
27:44que eso es la representación del modelo
27:46que nosotros tenemos en la mente. Sí,
27:50estamos.
27:52Y cuando hablamos de modelos, esos
27:54modelos de datos, vamos a tener en
27:57general diferentes eh diferentes escalas
28:02o niveles o tipos de modelos, ¿sí?, de
28:06datos.
28:07Okay.
28:09Pero en particular cuando nosotros
28:11hablamos de modelo, vamos a hablar
28:13entonces de la de la estructura de la
28:16base de datos. ¿Sí? Cuando hablamos de
28:18estructura base de datos, por ejemplo,
28:20¿de qué elementos estamos hablando?
28:25De las tablas, de las filas, las
28:27relaciones. Puede ser
28:29tablas, filas, relaciones. Y dentro de
28:31las tablas, ¿qué tenemos?
28:34Columnas.
28:35Columnas. Y las columnas pueden ser
28:40eh
28:41de determinado tipo. ¿Sí?
28:45Entonces,
28:48nuestro modelo tiene que representar
28:50todo eso de lo que hablamos, ¿okay? Y
28:53ahí es donde aparecen las los diferentes
28:56tipos o categorías de modelo de datos.
29:00¿Si?
29:02Entonces, en el nivel más alto, más
29:06abstracto,
29:08eh tenemos los modelos eh conceptuales.
29:11Una característica que tienen los
29:13modelos conceptuales es que están más
29:15cerca del usuario final, por lo tanto,
29:19es es un son modelos que nos sirven a
29:23nosotros para tratar de comunicarnos,
29:25por ejemplo, con nuestro cliente.
29:28Sí. ¿Por qué decimos esto? Porque ahí eh
29:33eh vamos a estar hablando de cosas tales
29:37como factura, cliente, producto, ¿sí?
29:42Nada muy eh tecnológico, digamos. Sí, va
29:46a estar vinculada a la jerga que conoce
29:50ese usuario, ese cliente. Entonces, a
29:52este modelo se lo conoce como modelo de
29:53alto nivel o conceptual. Sí.
30:00En estos en este nivel, en este en este
30:03en estos tipo de modelo, nosotros vamos
30:05a ver uno en particular vinculado al
30:08modelo de dato que es el MER, ¿sí? en el
30:11cual eh esos conceptos de los que
30:14hablaba se pueden modelar como
30:16entidades,
30:18como atributos
30:20y además para vincular o para relacionar
30:24esas entidades vamos a estar utilizando
30:27vínculos. ¿Sí? Entonces, hay cabe
30:30mencionar que esas entidades representan
30:33conceptos que nosotros tenemos que eh
30:37que que modelar en este en este
30:41minimundo o en este dominio que estamos
30:43tratando de entender. Sí,
30:47por eso que les decía palabras como
30:49factura, producto,
30:51cliente, sí son conceptos. Ahora, no
30:56todo concepto es una entidad porque hay
30:58conceptos más pequeños, ¿sí? Quizás no
31:01tan importantes, que me ayudan en
31:04realidad a describir esa entidad y a eso
31:06lo denominamos atributo. ¿Sí?
31:11Y cuando en realidad estamos encontrando
31:14no tanto concepto, sino más algo
31:16vinculado a acciones, a verbos, en
31:19general estamos hablando de vínculos.
31:22Sí.
31:26Entonces, ¿podríamos decir que el mer es
31:28lo mismo que el modelo relacional?
31:33No,
31:36no está. El mer no es lo mismo que el
31:39modelo relacional. Esa es una cuestión
31:41que ya el cuatrimestre pasado yo se los
31:43mencioné muy por arriba, pero sí o sí
31:47tenemos que hacer énfasis en tratar de
31:49comprender de que no lo es. Sí. Sií. son
31:53modelos diferentes, tienen diferentes
31:55niveles de abstracción,
31:58¿okay?
32:00Que están muy relacionados, seguro,
32:04está,
32:06pero están a diferentes niveles de eh de
32:09abstracción en esta en esta escala de
32:11modelos, ¿sí?
32:15si se quiere por ahí un modelo un un
32:18modelo de entidad relación es como es
32:21como el eh la fase previa
32:26a un modelo de objetos,
32:30nada más que acá no tenemos la parte de
32:33comportamiento.
32:35Sí,
32:38está más hacia ese lado.
32:42De hecho, van a ver cuando veamos en
32:44detalle el modelo de entidad relación
32:47que muchas de las construcciones que
32:51tiene se parecen mucho a orientación
32:53objeto.
32:55Sí,
32:58pero bueno, el modelo de entidad
33:00relación surgió primero. Okay.
33:05Ahora, el siguiente son el siguiente
33:08nivel son los modelos de representación.
33:13Sí,
33:15son un nivel intermedio en el cual
33:18todavía
33:20nos sirve a nosotros para comunicarnos
33:22con nuestro cliente, pero a su vez
33:24también están ya un poco más cerca de lo
33:27que yo tengo que llevar a la base de
33:30datos o de la forma en que yo voy a
33:32almacenar esa información, esos datos en
33:34sí. Entonces, se llaman modelos de
33:38representación o de implementación. Sí.
33:41Y en este nivel es donde se encuentra
33:44específicamente el modelo relacional,
33:47¿sí? El modelo de tablas
33:51el es aquel que nosotros vamos a estar
33:54eh guardando en nuestra base de datos.
33:57¿Sí?
34:01Fíjense que aquí en este en este nivel
34:03también tenemos otros otros modelos de
34:05datos que quizás no lo escucharon
34:08ustedes se los menciono. No voy a hacer
34:10hincapié ahí porque son viejos. Yo jamás
34:12lo utilicé. Si hice los conceptos
34:15eh de qué se trata, pero nunca nunca los
34:19utilicé en realidad. Uno es eh si
34:22alguien lo escuchó por ahí me dice, uno
34:24es el modelo de red y el otro es el
34:27modelo jerárquico.
34:29Sí, que también se encuentran en este
34:32nivel de eh de abstracción. ¿Sí
34:37escucharon hablar de esos otros modelos
34:39de datos?
34:44No, profe.
34:45Bueno, son son modelos bastante viejos.
34:48Uno, de hecho, son de eh se se
34:53fueron muy famosos y se utilizaron mucho
34:56en a partir de los 60, de los años 60.
34:59Sí. Y de hecho todavía existen grandes
35:04sistemas eh vinculados a esto, a estos
35:08tipos de modelos. Obviamente son
35:10sistemas legacy, ¿no?
35:13Bien,
35:16nada, lo que tienen en común es que
35:19cuando eh los datos aquí se representan
35:22a través de registros,
35:25¿sí?
35:27Y esos registros tienen elementos de
35:29información adentro que lo podemos
35:31llegar a llamar campo, por ejemplo.
35:34Sí.
35:37Y antes de pasar al físico, voy a meter
35:40aquí el modelo orientado objetos, porque
35:43sí, efectivamente, en base de datos
35:45existe los modelos orientados objetos.
35:49El tema es que en el camino se perdieron
35:52en algún momento y no se hicieron
35:54popularmente
35:56comerciales.
35:58Entonces, eh
36:01por ahí hoy en día, fíjense que uno
36:03hubiera pensado que íbamos a pasar de
36:06los relacionales a los orientados objeto
36:08directamente o iba a ser el la gran las
36:13grandes bases de datos iban a estar
36:15ubicadas allí. Sin embargo, pasó que nos
36:17fuimos para otros lugares. ¿Sí?
36:22Entonces, un modelo orientado objeto, yo
36:25sinceramente si lo tendría que ubicar lo
36:28vería como uno conceptual, pero el libro
36:31menciona que está ubicado en realidad en
36:34algún lugar entre los conceptuales y los
36:36de representación. Sí, es como un
36:39intermedio así.
36:42Okay.
36:47Sí, profe.
36:48Bien. Y eh
36:53puse autodescriptivos acá, pero lo voy a
36:56dejar para el final como para que se
36:57entiendan los tres principales, porque
37:00el tercero principal son los físicos,
37:03digamos. Nosotros
37:06cuando hablamos de modelo de datos
37:08físicos y nosotros en la materia no nos
37:10vamos a estar centrando en decir
37:12exactamente
37:13cómo se va a almacenar esto, pero sí hay
37:16muchas cuestiones que vamos a tener que
37:18tener en cuenta o ciertas cuestiones, al
37:20menos. Por ejemplo, fíjense que cuando
37:22hablamos de la representación física, ya
37:24directamente estamos hablando de cómo se
37:26están guardando esos modelos en la base
37:29de datos, en el disco. O sea, es
37:33ya estamos hablando de un nivel más bajo
37:35que el relacional. O sea, que cuando
37:38nosotros hablamos de un modelo
37:39relacional, ya estamos hablando, estamos
37:41hablando ya de tipos de datos y demás,
37:44pero acá ya no estamos e estamos
37:47diciendo, por ejemplo, qué tipo, cuál va
37:51a ser la forma en que vamos a guardar
37:52esos datos internamente, si vamos a
37:55utilizar índices o no, si vamos a cifrar
37:58esos datos o no. ¿Se entiende?
38:02Entonces, ya estamos hablando de
38:04cuestiones de implementación que en el
38:06modelo relacional
38:08ni nos preocupábamos.
38:11¿Okay?
38:13Entonces, cuando ya hablamos de cosas
38:15físicas, sí ya estamos hablando de
38:17cuestiones de bajo nivel.
38:20Bien.
38:22Y los modelos autodescriptivos, que en
38:24realidad eso no lo van a encontrar en
38:27todas las versiones del libro. ¿Por qué?
38:29Porque más que nada son estos modelos
38:33vinculados a varias bases de datos,
38:35¿no?, SQL, ¿sí?
38:39Es decir, que están ahí en algún lugar
38:41entre se podría decir que están cerca de
38:44los de representación, ¿sí? Y ahí vamos
38:47a ver entran todos esos tipos de datos,
38:50¿sí? como pueden ser base de datos
38:52basadas en XML, en clave de valor. Sí,
38:57como para darle algunos ejemplos.
39:00Fíjense que en esos tipos de en esos
39:03tipos de modelos en sí, la forma en que
39:05están almacenados los datos eh puede
39:08variar grandemente la formalidad. Sí,
39:14en algunos importa bastante la forma en
39:17que se guarda y en otros esa forma, esa
39:19estructura es un poco más laxa. Sí, no
39:23importa tanto.
39:26Eso sí hay que tener en claro. Cuando
39:27estamos hablando de modelos
39:28relacionales, la estructura con que se
39:31guarda es fundamental.
39:35Bien,
39:38eso es una es una gran diferencia.
39:43Okay.
Esquemas y ejemplares
39:52Y estos son algunos conceptos
39:55vinculados. Sí,
39:58hoy habíamos dicho entonces que cuando
40:00hablábamos en modelo de datos, un
40:03concepto que estaba ahí muy cercano es
40:05el es el esquema de la base de datos.
40:08¿Sí?
40:10Entonces, cuando se acuerdan que
40:12nosotros habíamos visto,
40:15no sé si es el que sigue este, ¿no?
40:20Bueno, nada, porque si no voy a contar
40:22el final de la película.
40:24Eh, habíamos visto eh un
40:29enfoque de de la arquitectura simple de
40:32una base de datos de la clase pasada, en
40:34la cual teníamos estaban los datos y el
40:38catálogo.
40:42El esquema de esa base de datos, de cada
40:44base de datos, se encuentra almacenado
40:47en el catálogo y lo que hace es
40:51justamente contener la descripción de la
40:55base de datos en sí. Sí, son los
40:57metadatos.
40:59O sea, que si yo voy a guardar, por
41:00ejemplo, allí un producto, ahí voy a
41:05decir que mi producto va a tener un
41:06código, va a tener un nombre, voy a va a
41:10tener un precio, ¿sí? Y de qué tipo de
41:14datos vas a hacer, ¿sí? O sea, código va
41:18a ser entero, nombres va a ser un string
41:21o una cadena. Sí, precio va a ser tipo
41:25money o float o decimal, si se quiere.
41:32Float, obviamente es un ejemplo porque
41:34no es la mejor forma de almacenar
41:36precios ya que estamos. Sí.
41:40Bien. Entonces, eso es el esquema. Sí,
41:44esos esquemas. Estábamos mencionando que
41:48cada una de esas partes que yo voy a
41:51tener en mi esquema se llaman elementos
41:55del esquema. ¿Sí? Vamos a decir, si
41:59tengo una tabla cliente, si tengo una
42:01tabla factura. Esos son elementos de ese
42:04esquema de base de datos. ¿Sí?
42:07Y para tratar de estudiar ese esquema,
42:10yo puedo recurrir a los diagramas.
42:12Fíjense que yo nombré un montón de
42:15conceptos,
42:18¿sí? Estoy nombrando el esquema, estoy
42:20nombrando los elementos, les di ejemplos
42:22de lo que pueden ser. Todo eso, conforma
42:24mi modelo. ¿Sí? Y ahora les nombro el
42:27diagrama. ¿Sí? Y el diagrama es la forma
42:30en que yo voy a representar gráficamente
42:33ese modelo.
42:35Sí,
42:37ese diagrama del esquema. Entonces, me
42:39va a servir a mí para entender el
42:41esquema de la base de datos. Sí, al
42:44menos gráficamente.
42:46Okay.
42:48Ahora,
42:51cuando nosotros
42:54Disculpe, profe,
42:55el diagrama de esquema sería algo así
42:58como un UML, ¿verdad?
43:00Sí. o directamente
43:03como para ir directo al grano. Cuando
43:06hablamos de un esquema relacional,
43:10estamos hablando de las cabeceras
43:12básicamente de la de las tablas.
43:16Sí,
43:18pero tu ejemplo también es válido.
43:22Okay.
43:28Y entonces ahí viene el concepto de
43:31ejemplares.
43:33¿Sí?
43:34Cuando nosotros hablamos de eh
43:40del estado de una base de datos, eso se
43:44refiere al conjunto de los valores
43:48posibles o los valores específicos,
43:50mejor dicho, que tienen determinado
43:52momento esa base de datos. ¿Sí?
43:55Entonces, un sistema gestor de base de
43:58datos tiene que controlar que todos los
44:01estados, todos los estados de una base
44:04de datos sean estados válidos. Sí,
44:08estamos. Entonces, el esquema, el
44:11perdón, el estado de una base de datos
44:13es el conjunto de valores de todas las
44:16tablas, de todos los registros,
44:17etcétera, etcétera, en determinado
44:19momento. ¿Okay?
44:23Ah.
44:25al conjunto de esos valores, ¿sí? Se lo
44:29denomina ejemplares.
44:31Sí, es como como para hacer una
44:35analogía. Hablamos de clases y hablamos
44:38de instancias, bueno, hablamos de
44:40esquemas y hablamos de ejemplares.
44:43¿Se comprende
44:44con eso? Se comprendió bastante bien.
44:46Perfecto. Está
44:49bien.
44:53Y lo importante sí o sí acá el concepto
44:56de estado, fíjense que hablamos de el
44:59valor de todos de todos los de todas las
45:03tablas y sus registros en determinado
45:05momento. Decimos que tienen que ser
45:07válidos y eso es el encargado de
45:09controlarlo es el sistema gestor de base
45:12de datos.
45:14Eso como por ejemplo cuando eh querés
45:16ingresar un valor y ponés nulo en alguna
45:20columna y esa columna no permite nulo,
45:23¿sería algo de eso.
45:25Exactamente. Exactamente. Controlar, por
45:27ejemplo, que las restricciones se
45:29cumplan.
45:30Por ejemplo, querés eliminar eh un
45:33registro que su ID o clave de primaria
45:36está en otra tabla como clave de fogía.
45:40Exactamente.
45:41Sin hacer la cascada. Exacto. Vamos a ir
45:43al ejemplo que uso siempre, que es el de
45:46la factura y el cliente.
45:48Eh, si yo elimino un cliente,
45:54tengo que ver qué hago con la factura,
45:57¿sí? Porque no puedo dejarla colgada.
46:01Entonces, la base de datos se tiene que
46:03encargar de decirme, hay un error. El
46:06desarrollador es el encargado de decir
46:08cómo va a solucionar esa circunstancia.
46:12Okay.
46:16Entonces, cuando nosotros eh otra forma
46:20de mencionar esto sí es al esquema
46:22llamarlo intención
46:25y al conjunto o al estado completo de la
46:28base de datos se la llama extensión de
46:31ese esquema.
46:32¿Sí?
46:35Esto como ya habíamos hablado antes de
46:37los conjuntos, intención o barra
46:39comprensión, digamos. Definir un
46:41conjunto por intención o por comprensión
46:44es lo mismo. Decimos que la intención o
46:47la comprensión es el esquema y el
46:49conjunto de todos los valores en
46:50determinado momento también es la
46:53extensión de ese esquema.
46:56¿Sí?
46:59Bien, esto es en general
47:02eh
47:06son conceptos que van apareciendo que
47:08después vamos a ir vamos a ir eh
47:13viendo un poquito más en profundidad
47:14cuando avancemos con en particular el
47:16modelo relacional. ¿Sí?
47:21Bien, esto es lo que ustedes tenían que
47:23hacer como
47:26eh ejercicio. Sí. Así que yo por lo que
47:30vi no lo alcanzaron a completar. Vamos a
47:34tomarnos 15 minutos, completamos este
47:37ejercicio y retomamos. Sí. Mientras
47:41tanto, vayan posteándolo ahí en la en el
47:45en el aula virtual y después lo
47:47conversamos acá. Okay, 15 minutos.
47:50¿Le puedo hacer una consulta?
47:52Sí, dime.
47:53En el aula virtual había un trabajo
47:55práctico para eh presentar que yo no lo
47:58había visto, que es ventajas y roles,
48:00que es grupal.
48:02Mm.
48:02Era lo de la clase anterior, ¿verdad?
48:05Claro.
48:07Ajá. Y eso tenemos tiempo hasta
48:09No, no hay problema. Pero es la idea era
48:12que lo tengan medio terminado para hoy,
48:14pero presentarlo cuando puedas.
48:17Ah, perfecto, profe, disculpe.
48:20Eh, bueno, eh, comprendido. Entonces,
48:24hacemos un una pausa de 15 minutos y nos
48:26volvemos a conectar. O sea, nos
48:28estaríamos conectando aproximadamente
48:30a las 20
48:3440 20. Pongamos para redondear. Sí.
Arquitectura ANSI-SPARC
48:39Entonces, eh de vuelta para recapitular
48:42esta última parte, eh
48:46lo que les decía es se puede hacer un un
48:51una relación entre los las abstracciones
48:54de modelo que teníamos hoy al principio
48:56y esto. Y la respuesta es más o menos
49:00por qué. Porque sí tenemos una relación
49:03entre el modelo interno, entre el modelo
49:05físico y el esquema interno, ¿sí? Porque
49:09hablamos de los mismos elementos,
49:12pero no en el esquema conceptual y el
49:15modelo conceptual, porque fíjense que
49:17ahí se perdió. ¿Qué es lo que no está?
49:19¿Qué es lo que en teoría no aparece acá?
49:22El modelo de implementación o de
49:24representación.
49:27Okay.
49:32Entonces, esto que acá nombra esquema
49:34conceptual se representa con lo que
49:38nosotros vimos recién o hace algunos
49:41minutos atrás como el modelo de
49:44implementación
49:46o el modelo de
49:49representación.
49:51Está acá es donde yo voy a encontrar el
49:54digamos un esquema relacional si se
49:56quiere.
49:59¿Se entiende?
50:04Recuerden que esto no es de no viene
50:07todo una misma fuente, por eso hay esa
50:09por eso están esas divergencias. Sí.
50:12En esta arquitectura Ania Spark,
50:15al esquema conceptual se lo vincula
50:19con el modelo relacional. En cambio, hoy
50:23cuando hablamos al principio, estábamos
50:26hablando de modelo conceptual, modelo
50:30relacional o mejor dicho modelo de de
50:33implementación o de representación y
50:35modelo físico. El modelo físico va bien
50:38con el esquema interno. Ahora, tenemos
50:40problemas en el esquema conceptual
50:42porque allí en realidad estamos hablando
50:44de un esquema de implementación o de
50:46representación.
50:50Sí. ¿Se
50:54se comprende esa parte o no, chicos?
50:56Sí, profe.
50:57Sí. Bueno, ahora
51:03al nivel de vistas, entonces es el la
51:06parte ya externa,
51:09¿sí? es lo que los usuarios van a ver
51:12directamente,
51:15¿okay? Y allí es donde vamos a tener un
51:19esquema fragmentado, es decir, cada
51:22vista va a mostrar una parte de toda la
51:27base de datos, la parte que le interesa
51:31al usuario para el cual está destinada
51:32esa vista,
51:35¿sí? O la que puede ver. Es decir, por
51:38eso ahí habla de confidencialidad.
51:41Estamos allí nos concentramos en
51:46hablar de eh de digamos particionar
51:51esa esas vistas. Sí, cada uno ve lo que
51:55tiene que ver.
51:56De nuevo,
51:59allí tenemos que otro mapeo más, pero
52:01desde el esquema conceptual
52:05al esquema externo de vistas.
52:08Sí, la parte de arriba es el esquema
52:10externo.
52:15Bien,
52:17ahora la pregunta es, ¿tengo un relación
52:21uno a uno entre el esquema conceptual y
52:24la vista? Es decir, yo lo que hago es si
52:27tengo, por ejemplo, vamos a ir un
52:29ejemplo concreto, yo tengo una lista de
52:32precios que la tengo almacenada en
52:34productos. Yo voy a del esquema
52:37conceptual, ¿va a pasar tal cual a la
52:39vista o hay algo ahí en el medio?
52:45Otro mapeo.
52:46Hay otro mapeo.
52:49Sí.
52:50Entonces, los datos no se van a pasar de
52:52manera cruda, va a haber otra
52:54transformación.
52:56Sí. Así como yo tengo una transformación
52:58entre el esquema interno y conceptual,
52:59también voy a tener esa transformación
53:01entre el conceptual y la vista, ¿sí? O
53:04los externos.
53:05Eso dependería de cómo se arma la vista.
53:08Eso depende de cómo se arma la vista en
53:11sí.
53:13Una vista es un agregado
53:17que puede ser de una o más tablas,
53:21¿sí?, del esquema conceptual.
53:26Okay.
53:30Y acá ni siquiera está y para que se
53:33entienda bien, esto está muy apuntado a
53:35lo relacional, pero ni siquiera habla
53:38específicamente del modelo relacional y
53:40ni siquiera para aquellos que ya tienen
53:42experiencia en base de datos y ni
53:43siquiera está hablando de la palabra
53:46vista, del view o de esa construcción
53:48que nosotros que algunos habrán visto en
53:51SQL. Sí, por supuesto que el concepto de
53:55vista en SQL viene de acá,
53:58¿sí?
54:00Pero puede estar basado en otras eh en
54:03otra en otros tipos de construcciones o
54:05de tecnologías. Sí.
54:08Lo que me está diciendo es entonces todo
54:10esto me expresa que los datos guardados
54:13en sí se encuentran en la parte física.
54:16El resto son todos transformaciones que
54:18yo voy haciendo.
54:22¿Comprendido?
54:26Entonces,
54:30esto nos lleva a tener dos
54:31características o una característica
54:34dependiendo de cómo lo querramos ver
54:39o una propiedad, si se quiere,
54:44que viene de la mano y que justamente es
54:47el objetivo que hoy al principio
54:49estábamos hablando, viene de la mano de
54:51lo que es esta arquitectura de tres
54:52niveles. ¿Cuáles o cuáles son
55:02el MBC, si no me equivoco,
55:04no no eso es demasiado moderno.
55:07Claro,
55:14lo tuvieron que haber leído cuando
55:15estaban investigando esto.
55:18¿Cuál fue la pregunta, profe? Disculpe,
55:22esta organización arquitectural de An
55:25Spark, nosotros decíamos que buscábamos
55:28algo con esto, que lo mencionamos de
55:31alguna manera, pero específicamente
55:34son
55:36esto lleva a que surjan dos propiedades
55:39específicas o una propiedad específica
55:42cuando aplicamos esta arquitectura.
55:44¿Cuál es?
55:47Poder tener independencia de cada parte.
55:50Exactamente. Sí.
55:51De los datos.
55:53Entonces, independencia de los datos.
55:56Sí. Y allí van a ver que existen dos
55:59tipos de independencias. ¿Cuáles son?
56:05La física y la lógica.
56:06La física y la lógica. Perfecto. Bueno,
56:09ahora quiero que
56:13me den. Ah, bueno, primero vamos a ir a
56:16lo conceptual y después vamos al
56:18ejemplo.
56:21¿Qué significa?
56:23¿Qué quiere decir independencia lógica
56:26respecto de los datos?
56:29Que modificar los tipos de datos o las
56:31relaciones entre los datos no debería
56:33alterar e la vista del,
56:36o sea, de un grupo de usuarios, por
56:38ejemplo.
56:39Ajá.
56:41Perfecto. O sea, que una una alteración,
56:45el ideal es que una alteración en el
56:48esquema conceptual
56:52no me altere las vistas.
56:57Sí.
57:00Y la independencia física, ¿a qué se
57:02refiere?
57:05la capacidad de cambiar en el esquema
57:07interno sin que haya alteración en el
57:10esquema conceptual.
57:11Perfecto.
57:14A ver si se entendió esto. Vayamos,
57:16díganme un ejemplo que se les ocurra
57:19entre el esquema conceptual y el de las
57:21vistas.
57:28Cambiar un tipo de datos.
57:32Ajá.
57:34Dame, dame inventarme un escenario bien,
57:37bien concreto.
57:43Supongamos que yo separo de una tabla eh
57:46unas columnas porque quiero que estén en
57:48otra tabla. el usario debería poder
57:51seguir viendo esos datos, pero la
57:54estructura en la que está armado eso va
57:55a ser diferente.
57:59Bien, o sea, por ejemplo, podríamos
58:01llegar a decir que
58:04vamos, vamos a dar el ejemplo más
58:06sencillo,
58:08decir, podría yo en la tabla cliente
58:13agregar un campo.
58:16Vamos a suponer que hasta el momento no
58:18guardaba
58:20eh
58:22un segundo
58:24teléfono de contacto. Sí. Entonces
58:27agrego eso. Eso
58:32según este esquema debería ser que no
58:35deba cambiar, no afecte a las vistas o
58:38el usuario no debería percibirlo.
58:41¿Creen que eso es posible?
58:47Sí, sí, profe, es posible.
58:49Claro, porque la vista está bien. Ah,
58:52no, disculpe.
58:54Perdón.
58:56Es posible cuando nosotros podemos
58:58podemos llegar a agregar datos en las
59:00tablas que sean, por ejemplo, campos que
59:03permitan nulos, entonces no afecta
59:05directamente al a la, vamos a decir, a
59:08la estructura que ya teníamos.
59:10Perfecto. O sea, ahí es lo que me está
59:12diciendo. Bueno, yo tenía mi tabla
59:13original que tenía el quid, el nombre y
59:17apellido del cliente y un teléfono.
59:20Ahora vamos a suponer que eso estaba en
59:23la vista uno. Sí.
59:28Las aplicaciones que utilizan la vista
59:30uno van a seguir ocupando esas tres esos
59:33tres datos.
59:34Y ahora yo agrego un cuarto, un tercer
59:37un cuarto dato que lo voy a ocupar en la
59:39vista dos. Vamos aar. Entonces no afecta
59:43para nada la vista uno y no tengo que
59:45cambiarlo.
59:47Sí, a eso se refiere.
59:50Ahora
59:52puede darse el caso de que modificar
59:56restricciones. También puede ser.
1:00:00Puedes darse el caso de que elimine un
1:00:04campo y no afecte a la vistas,
1:00:09a las vistas, perdón.
1:00:15Si ese campo es llamado en una de las
1:00:18vistas. Sí, profe.
1:00:19Exactamente. O sea, este esta esta
1:00:22independencia se puede lograr hasta
1:00:24cierto punto.
1:00:27Sí.
1:00:29Si ese campo no es utilizado en en
1:00:34todas las vistas, bueno, vamos a suponer
1:00:36que ese campo que elimino es solamente
1:00:39utilizado en la vista N. Bueno, va a ser
1:00:42afectada esa vista N, pero el resto de
1:00:44las vistas no. Sí.
1:00:47Entonces tiene mucho que ver también
1:00:50como yo construyo esas vistas. O sea, en
1:00:54cada vista tengo que colocar
1:00:57la información específicamente que
1:00:59necesito.
1:01:02Bien,
1:01:03profe, le le hago una consulta ahí. Eh,
1:01:06yo entiendo que no estamos hablando
1:01:08directamente, por ejemplo, de hacer un
1:01:09select, pero vamos a suponer,
1:01:11pero sí, no, vayamos a ese ejemplo
1:01:13concreto. Sí.
1:01:15Ajá. Vamos a suponer que yo estoy
1:01:16haciendo un select asterisco. En ese
1:01:18caso, no me implicaría un error, sería
1:01:23en la vista,
1:01:25¿no? Ni digamos. ¿Por qué? Porque ese C
1:01:28asterisco lo que va a hacer es, fíjate
1:01:30vos que depende de ahí como yo tenga
1:01:32hecho el programa ya. Y justamente eso
1:01:36es
1:01:36de cómo consuma la la aplicación sería
1:01:40exactamente.
1:01:42Okay. Tirar, va a traer todo no más.
1:01:44Claro, en este caso traería todo,
1:01:46simplemente que no me daría error la
1:01:48consulta, sino ya el error estaría en la
1:01:51capa superior.
1:01:53Exactamente.
1:01:54Claro.
1:01:54Exactamente. Sí, sí.
1:01:58Profe, una pregunta.
1:01:59Dime.
1:02:00Yo no entiendo bien la diferencia que
1:02:01hay entre la
1:02:04en la independencia de los datos físicos
1:02:06y lógicas. No, no entiendo la diferencia
1:02:08entre una y otra.
1:02:09Es que recién hablamos de la lógica.
1:02:13Sí. con,
1:02:15o sea,
1:02:17por ahora dijimos, bueno, yo hago
1:02:19cambios a nivel de los datos que yo
1:02:21quiero guardar esa cuestión conceptual,
1:02:24es decir, le saco el DNI, voy ahora sí
1:02:26voy a colocar DNI, voy a utilizar un
1:02:28teléfono o le agrego un email, ese tipo
1:02:31de cosas, voy a tener una relación entre
1:02:33tablas.
1:02:35Eso, eso es lo que vimos hasta ahora.
1:02:37Ahora vamos a la parte física.
1:02:40Ah, claro, yo había entendido que ya
1:02:41vimos física, por eso no entendía. No,
1:02:43hablamos del concepto nada más, pero si
1:02:47vamos a un ejemplo,
1:02:50¿sí?
1:02:52¿Qué podríamos qué ejemplo podríamos dar
1:02:55de independencia entre el esquema
1:02:58interno y el esquema conceptual?
1:03:02Este es un es dependiendo obviamente de
1:03:05los cambios que hagamos, es más fácil y
1:03:08fíjense que de lograr
1:03:10entre el interno y el conceptual. Profe.
1:03:12Sí. Sí,
1:03:13cuando tenemos almacenado ya el dacto
1:03:16específico, seríam
1:03:18si nosotros eh en este caso sería que si
1:03:21nosotros llegamos a cambiar algo en un
1:03:24que no afecte al al esquema conceptual,
1:03:26sería,
1:03:27¿qué decíamos? ¿Qué qué qué cuestiones
1:03:29teníamos que tener en cuenta en el a
1:03:33nivel físico? Lo habíamos dicho.
1:03:36Fíjense lo siguiente. Obviamente todo
1:03:39esto,
1:03:42vamos, vamos al ejemplo de SQL Server.
1:03:45Sí,
1:03:49SQL Server guarda mayormente su
1:03:53información en dos archivos.
1:03:56Para cada base de datos que creo, crea
1:03:58dos archivos,
1:04:00un MDF y un LDF.
1:04:03Sí,
1:04:05el esquema conceptual está enterado de
1:04:07eso,
1:04:11¿no?
1:04:13Cuando yo cuando yo decido poner una
1:04:15factura a un cliente, ni me importa eso.
1:04:20Sí.
1:04:21Ahora,
1:04:23¿qué pasa si el día de mañana por
1:04:25cuestiones de performance yo decido que
1:04:27en vez de dos archivos voy a crear tres
1:04:29o cuatro archivos?
1:04:32Eso afectaría al esquema conceptual.
1:04:37No, no debería.
1:04:39No debería.
1:04:40¿Qué pasa si esos archivos se volvieron
1:04:42gigantes? Porque después de mucho tiempo
1:04:47tuve muchas transacciones, borrados,
1:04:49agregados y demás y quedó basura en el
1:04:53medio,
1:04:55quedaron huecos
1:04:57y necesito comprimir eso para salvar
1:05:00espacio.
1:05:02Eso afecta al esquema conceptual.
1:05:07Tampoco
1:05:08no debería,
1:05:09¿no?
1:05:10Porque el método de acceder a los datos
1:05:12sigue siendo el mismo. Si no me
1:05:14equivoco,
1:05:15es que yo voy a estar almacenando los
1:05:17mismos conceptos y el sistema de gestor
1:05:20para el sistema el sistema de gestor de
1:05:22base de datos hace que eso sea
1:05:24transparente para el esquema conceptual.
1:05:28¿Sí?
1:05:29Y justamente este enfoque de esta
1:05:32arquitectura de tres esquemas
1:05:36es la inspiración para este tipo de
1:05:39sistema de gestores base decir
1:05:43recuerden lo más el peor diseño que
1:05:46podríamos tener es que tengamos nuestra
1:05:50aplicación esté atada de la forma en que
1:05:53esto se almacena físicamente.
1:05:57Sí.
1:06:00Es decir, que en vez de tener tres
1:06:02archivos, ahora tengo dos, entonces
1:06:04tengo que cambiar mi aplicación.
1:06:06Entonces ahí esto no va. La arquitectura
1:06:09de tres esquemas me dice ya de entrada,
1:06:11el sistema, incluso el sistema de gestor
1:06:13de base de datos se encarga de
1:06:15separarlo. Lo que yo tengo que saber es
1:06:16dónde está la dónde está la base de
1:06:18datos particularmente no el sistema
1:06:21gestor de base de datos el que se
1:06:22encarga de decir de si esto lo tiene que
1:06:25buscar en tal o cual archivo.
1:06:29Sí. O de comprimir el archivo o de
1:06:32reorganizar el archivo.
1:06:35Sí. o descifrar ese archivo.
1:06:42Se comprendió la diferencia entonces
1:06:44entre
1:06:46entre lo que es independencia
1:06:50física y lógica
1:06:53y qué significa cada una.
1:07:02Bien,
1:07:04¿alguna pregunta?
1:07:08Bueno, hoy mi idea eh
1:07:12no no quiero pasarme de no quiero
1:07:15pasarme mucho de tiempo porque creo que
1:07:17acá hay muchas personas que mañana
1:07:19tienen que rendir el recuperatorio. No
1:07:21sé si estoy
1:07:24equivocado,
1:07:26¿eh? Así que
1:07:31por eso voy, vamos a tratar de hacerlo
1:07:33un poco más corto. Sí.
1:07:36Bueno,
1:07:38esto nos lleva a los lenguajes genéricos
1:07:41que deberían estar presentes en todo
1:07:43sistema gestor de base de datos
1:07:47y creo que habíamos hablado de las 9:30,
1:07:50¿no? El horario del recuperatorio.
1:07:57Bien.
1:08:00Sí, por supuesto,
1:08:03¿no? A las 9:30 de la noche un sábado,
1:08:05¿no? Todavía
Lenguajes
1:08:08bien. Eh,
1:08:12lenguajes,
1:08:13sí, cuando hablamos de lenguajes, en
1:08:16toda base de datos deberían existir
1:08:18algunos lenguajes genéricos. No estamos
1:08:20hablando acá de un lenguaje específico
1:08:22en particular, ¿sí?
1:08:25sino que deberían existir diferentes
1:08:27categorías de lenguajes. Entonces,
1:08:31uno de ellos es el lenguaje DDL.
1:08:36Sí, el DDL significa lenguaje de
1:08:39definición de datos.
1:08:41está. Y este concepto está vinculado con
1:08:45lo que veníamos viendo antes. Entonces,
1:08:47nosotros decimos que una base de datos
1:08:49va a tener su estructura en un catálogo.
1:08:51El DDL impacta en ese catálogo porque lo
1:08:53que a lo que me ayuda es a definir la
1:08:56estructura de esa base de datos. Por
1:08:57ejemplo, cuando quiero agregar una
1:08:59tabla, cuando quiero agregar un campo en
1:09:01determinada tabla, cuando quiero sacar
1:09:04un campo en determinada tabla.
1:09:06Eso es parte de eso debería ser parte de
1:09:10lo que es el lenguaje de definición de
1:09:12datos. Sí,
1:09:14esto sería el create, el el alter
1:09:18truncate.
1:09:20Ex truncate, no
1:09:24truncate.
1:09:25El drop también entraría acá,
1:09:28¿eh?
1:09:28Drop
1:09:29drop, sí, drop, sí.
1:09:32Está típicamente create, alter y drop.
1:09:37Okay.
1:09:43Ahora, eso como mínimo. Después vamos a
1:09:46hablar de otras posibilidades.
1:09:48El otro lenguaje es el DML,
1:09:52¿sí? El lenguaje de manipulación de
1:09:55datos. Acá ya no hablamos de la
1:09:57estructura, sino que estamos hablando de
1:09:59los datos en sí. Por lo tanto, esto va a
1:10:01tener impacto directamente en la base de
1:10:03datos almacenadas.
1:10:05Cuando dice manipulación de datos se
1:10:06refiere tanto a la actualización de
1:10:08datos, ya sea por inserción,
1:10:12eh modificación
1:10:14o borrado, consultas, básicamente
1:10:17o por consultas de obtención. Sí,
1:10:21exactamente.
1:10:24El tronquate es un ejemplo
1:10:27de esto.
1:10:30Sí.
1:10:34Estamos. Entonces, tenemos estos dos DL
1:10:36y DML.
1:10:39Sí,
1:10:39en el DML también entraría select y eso.
1:10:43DML select para los que hablan de SQL.
1:10:46Select, insert, update y delete.
1:10:51A ver, gracias.
1:10:58Si tenemos una estructura completamente
1:11:00separada, o sea, que cumple
1:11:05con todos con este esquema de tener de
1:11:10tener lenguajes para la parte de
1:11:13implementación o de la parte física y la
1:11:16de vistas, podríamos llegar a tener
1:11:19lenguajes de BDL y SDL. Sí, el lenguaje
1:11:23de definición de vistas
1:11:26y el lenguaje de eh definición de
1:11:29almacenamiento.
1:11:33¿Okay? Normalmente estos dos lenguajes
1:11:38en la práctica se encuentran dentro de
1:11:39lo que es el DDL.
1:11:43¿Sí?
1:11:46¿Por qué? Porque el hecho de definir una
1:11:48vista,
1:11:50si bien no estamos hablando de que vamos
1:11:53a almacenar datos para eso, sí es parte
1:11:56del esquema esa vista. No van a existir
1:12:00datos almacenados de esa vista porque
1:12:02van a estar los datos crudos. Lo que se
1:12:05genera con una vista es calculado. Sí,
1:12:09pero sí va a estar cómo está formada esa
1:12:12vista.
1:12:15para para ir a algo concreto,
1:12:19eh
1:12:21podríamos tener una vista que sea el
1:12:25cliente y sus facturas. Entonces
1:12:26podríamos tener en esa vista, yo podría
1:12:30tener una tabla que sea cliente, ¿sí?
1:12:32Con, vamos a poner número, el quid, el
1:12:35nombre y el teléfono. Y en otra tabla
1:12:38puedo tener factura. Para hacerla
1:12:40simple, vamos a poner el número de
1:12:41factura, la fecha,
1:12:44el tipo de factura y el total. Estoy
1:12:47dando un ejemplo muy muy por arriba.
1:12:50Entonces, la vista BDL podría llegar a
1:12:53tener podría generar una vista que sea
1:12:58listar
1:13:00todos los clientes con el total
1:13:02facturado de ese cliente. ¿Sí?
1:13:08Entonces yo obviamente no voy a el total
1:13:11entre todas las facturas. Sí, vamos a
1:13:14suponer que le vendí generé 10 facturas.
1:13:17Bueno, la sumatoria de ese total.
1:13:19Entonces eso puede ser una vista y eso
1:13:21se define con el lenguaje de definición
1:13:23de vista. Y el SDL va a lo físico,
1:13:28¿eh?
1:13:30No, a ver, en la actualidad DDL, el SDL
1:13:35está implementado parcialmente porque
1:13:38eh conviene más que esto se encuentre en
1:13:41forma de comandos más que de sentencias,
1:13:45¿sí?
1:13:47Es decir, en el S, ¿qué cosas
1:13:50particularmente encontramos vinculadas a
1:13:52SDL? Por ejemplo, la creación de
1:13:54índices,
1:13:57¿okay?
1:14:00Pero por ejemplo, para comprimir un
1:14:02archivo, ya estamos hablando de un
1:14:04comando particular de ese motor de base
1:14:09de datos.
1:14:11¿Sí?
1:14:14Y en la actualidad
1:14:17la representación
1:14:20total o cabal de todo esto es el
1:14:23lenguaje SQL.
1:14:25Sí, el lenguaje SQL contempla todos
1:14:29estos lenguajes genéricos.
1:14:32Sí.
1:14:36Una cuestión que tiene que quedar clara
1:14:39de acá
1:14:42es que cuando hablamos de eh por ejemplo
1:14:48el lenguaje DML,
1:14:51podemos hablar de
1:14:53lenguajes
1:14:55por procedimientos
1:14:58o no por procedimientos
1:15:02o de conjuntos.
1:15:04Sí. ¿Qué significa esto cuando hablamos
1:15:07de DML de alto nivel y esto saliéndonos
1:15:10y corriéndonos un poquito de SQL en sí,
1:15:13que es el ejemplo y es el concepto a su
1:15:16vez?
1:15:20Nosotros decimos que un DML de alto
1:15:23nivel es aquel que me dice
1:15:25al cual en el cual yo por eso qué es lo
1:15:28que tengo que hacer y no cómo hacerlo.
1:15:31Sí.
1:15:37Entonces
1:15:39ese lenguaje de Tony Bets es sin duda
1:15:42SQL
1:15:44porque cuando, fíjense lo siguiente,
1:15:47cuando yo digo select
1:15:50de tales campos, de tales tablas, yo le
1:15:52estoy diciendo qué hacer.
1:15:55No sé cómo el motor hace para encontrar
1:15:57eso.
1:16:02Puedo repetirlo, profe. Me perdí un
1:16:04poquito. Ahí
1:16:05bien. Cuando hablamos de DML en
1:16:09particular y también puede estar
1:16:10incluido el DDL, pero bueno, vayamos a
1:16:13la parte DML.
1:16:16Yo puedo tener dos tipos de DML,
1:16:19¿sí?
1:16:21Uno es de alto nivel y el otro de bajo
1:16:24nivel.
1:16:27O podríamos decir, para hacerlo más
1:16:31claro, quizás,
1:16:33el DML alto nivel es declarativo
1:16:37y el DML bajo nivel es procedural.
1:16:42¿Conocen las diferencias entre los dos,
1:16:44entre esos dos?
1:16:50Bueno,
1:16:52sería qué quiere hacer y cómo se hace,
1:16:56hacerlo
1:16:57exactamente, tengo que
1:16:59expresarlo concretamente.
1:17:02Por eso les daba el ejemplo de SQL. Sí,
1:17:07yo digo que SQL tiene esa parte DML, ese
1:17:11lenguaje de consultas,
1:17:14¿sí? es declarativo y de alto nivel
1:17:18porque yo le estoy diciendo, hacemos un
1:17:21select de tales campos, de tal tabla.
1:17:24Sí, no le digo cómo.
1:17:30Ahí está, ahí lo entendí.
1:17:32Sí. En cambio, sería procedural si yo le
1:17:36si yo dijera de tal archivoá
1:17:40tantas veces
1:17:42hasta encontrar cierto campo, ¿se
1:17:44entiende?
1:17:45Eso es procedural
1:17:53y también se dice entonces que SQL y lo
1:17:57en general
1:18:01son es un lenguaje de conjuntos
1:18:05y esto es realmente importante.
1:18:09¿Qué significa eso?
1:18:12Quizás para los que no trabaja, para la
1:18:15gran mayoría que está acá, que no
1:18:16trabajaron con base de datos
1:18:19relacionales, es difícil de entender en
1:18:21este momento,
1:18:24pero tiene que ver también tiene no es
1:18:27exactamente que sea declarativo, pero
1:18:29tiene que mucho que ver con el hecho de
1:18:31serlo.
1:18:33Sí.
1:18:35Es decir, que cuando yo, fíjense en el
1:18:39ejemplo de vuelta, yo digo seleccionar
1:18:41todos los clientes,
1:18:44yo estoy especificando cada registro en
1:18:47sí,
1:18:48estoy yendo por cada registro en sí o
1:18:50digo, "Traeme el conjunto de registros
1:18:53que cumplen con ese criterio?"
1:18:56En definitiva, nosotros al poner
1:18:57asterisco, eh, SQR interpreta que traiga
1:19:01cada uno de los registros. Claro, pero
1:19:05y suponete que no le pongais código,
1:19:08pongo select.
1:19:09Ah,
1:19:10select nombre from cliente.
1:19:14Y ahí estoy trayendo un subconjunto.
1:19:17Mi universo sería el clientes.
1:19:19Exactamente. Un fragmento de la tabla.
1:19:22Estoy trayendo una parte de la tabla,
1:19:24pero así todo sigue siendo sigue siendo
1:19:27un conjunto completo porque no le digo
1:19:30tal o cual registro.
1:19:32Sí,
1:19:34no le digo el registro que está ubicado
1:19:37en tal lugar. Tráeme todo este conjunto
1:19:40y ya.
1:19:43Y
1:19:44cuando yo quiero proces el lenguaje SQL
1:19:48por ahí no es el más adecuado cuando yo
1:19:51requiero hacer un procesamiento
1:19:54pormenorizado registro a registro.
1:19:58Sí,
1:19:59eso lo voy a ver cuando normalmente hay
1:20:02consultas que se vuelven superclicadas
1:20:04con SQL,
1:20:06que en realidad serían más eficientes,
1:20:09procesadas
1:20:11con un lenguaje de programación
1:20:13procedural, es decir, en el cual tenga
1:20:15un for, un if o lo que fuera. SQL, si
1:20:19bien presenta esas estructuras
1:20:22o mejor dicho transac SQL, que es la
1:20:25versión de SQL Serverpad, tiene if,
1:20:28tiene un for,
1:20:32la performance
1:20:34no es buena para eso porque fueron
1:20:36creados para trabajar con conjunto de
1:20:38registros y no para recorrerlos uno a
1:20:41uno, ¿se entiende?
1:20:43Claro, en este caso también sería algo
1:20:46similar como cuando tenemos eh en
1:20:49programación eh vamos a decir los ORM,
1:20:53que por ahí también nos sucede que el
1:20:55ORM hace muy lenta la, o sea, hay veces
1:20:58que no la performance es demasiado baja
1:21:01porque la consulta al querer armar entre
1:21:04las relaciones que tenés en la tabla se
1:21:07es muy grande. Entonces necesitas más
1:21:09vale recorrer con for o hacer if. y
1:21:13otros tipos de de controles antes de de
1:21:15realizar.
1:21:16Exactamente. O hacer la consulta a vos
1:21:18mismo en vez de hacer dejársela hacer al
1:21:20ORM.
1:21:22Claro. Tirarla directamente. Exacto.
1:21:25Bueno, acá es es va por el lado de eso
1:21:28que por ahí yo necesito hacer un
1:21:30procesamiento registro a registro cuando
1:21:33en realidad SQL funciona por conjuntos.
1:21:36Entonces estoy queriendo utilizarlo para
1:21:38otra cosa que no es
1:21:40que no fue pensado para eso.
1:21:44Está
1:21:47Sí, se entiende, profe.
1:21:50Bueno,
1:21:52los demás chicos, ¿se comprendió esta
1:21:54parte o no?
1:21:55Sí, profe. Sí, profe.
1:22:00Bueno, vamos a lo siguiente.
1:22:04Esto queda como tarea para ustedes. Si
1:22:06yo lo voy a saltear ahora.
1:22:09Está bueno que lo conozcan y además.
1:22:12Liste las diferentes interfaces de un
1:22:15SGBD.
1:22:17Caracterice y ejemplifique una de ellas.
1:22:21¿Sí? Fíjense en el libro cuáles son las
1:22:23diferentes interfaces que hay.
1:22:27Tomen una de esas, dicen qué
1:22:30características tienen y den un ejemplo
1:22:33en particular.
1:22:35¿Okay? Eso les queda como tarea para
1:22:38ustedes.
Arquitectura detallada de un SGBD
1:22:43Bueno,
1:22:47¿se acuerdan de este gráfico?
1:22:54Se les hace conocido. Esto lo vimos la
1:22:56clase pasada. Sí.
1:22:59un sistema gestor,
1:23:01sí, me está representando en alto nivel
1:23:06cuáles son los componentes
1:23:10de un sistema de base de datos y el
1:23:12lugar del sistema del sistema gestor de
1:23:15base de datos allí adentro, ¿no? Ya que
1:23:18estamos, fíjense que la sumatoria de las
1:23:21bases de datos almacenadas al catálogo
1:23:23más el sistema gestor, más las
1:23:25aplicaciones
1:23:26y eso un poquito ahí en duda, conforman
1:23:29el sistema de base de datos completo.
1:23:32¿Sí?
1:23:35¿Por qué les muestro esto ahora? Porque
1:23:37la idea es ir poquito más allá, es
1:23:40decir, no no es que vamos a ir al
1:23:41detalle, pero sí vamos a hablar un
1:23:43poquito más respecto de
1:23:47cuáles son los componentes. Y esto viene
1:23:51vinculado también a lo que vimos hace un
1:23:54ratito de la arquitectura. Entonces,
1:23:56¿cuál es el entorno que va a surgir de
1:23:58una base de datos?
1:24:02Siempre hablando de la arquitectura de
1:24:04una base de datos genérica y estamos
1:24:06hablando de los componentes, en
1:24:08particular, los módulos que componen esa
1:24:10base de Sí. Entonces, fíjense esto
1:24:14porque esto es como una abstracción de
1:24:17alto nivel y ahora lo que vamos a hacer
1:24:19es bajar un poquito más. ¿Qué es lo que
1:24:22viene después?
1:24:24Esto sí,
1:24:29fíjense. Vamos, vamos a ir, vamos a Mi
1:24:33es hacerlo con con una animación, pero
1:24:35no me alcanzó el tiempo, así que lo voy
1:24:37a ir explicando por por parte.
1:24:41Eh, bueno, ¿qué identificamos acá a
1:24:44priori respecto de lo que teníamos en el
1:24:48en el diagrama anterior?
1:24:50Vemos que tenemos los dos tamborcitos
1:24:52acá que están representando exactamente
1:24:54lo mismo, ¿sí? El catálogo
1:24:59y la base de datos almacenada.
1:25:01Sí,
1:25:04fíjense que toda la parte superior,
1:25:07vamos a decir esto que está en un
1:25:09celeste, un lila,
1:25:12eh,
1:25:14es que parte acá
1:25:17sí son las aplicaciones
1:25:22o consultas que tenemos allí arriba.
1:25:25Sí.
1:25:29Y en el medio, y acá algunas partes
1:25:33tenemos que tomarlas con pinzas porque
1:25:35en diferentes
1:25:38ediciones del libro las muestra de
1:25:40diferentes maneras. Sí. Así que por eso
1:25:43digo, tomémoslo con pinzas.
1:25:46Este recuadro estaría delimitando
1:25:50el sistema gestor de base de datos.
1:25:53Sí.
1:25:57Fíjense que lo que se encuentra en
1:26:00Celeste. Entonces, vamos a empezar por
1:26:02hablar en lila, perdón, vamos a empezar
1:26:05por hablar de las interfaces con el
1:26:09administrador de base de datos.
1:26:12Un administrador de base de datos, ¿qué
1:26:14es lo que puede
1:26:17hacer en sí?
1:26:19Por un lado, el administrador de base de
1:26:21datos va a ser el encargado de
1:26:23implementar
1:26:25aquellas estructuras que el diseñador
1:26:28propuso. ¿Sí?
1:26:30Entonces, esas estructuras, ¿cómo se van
1:26:32a poder implementar? ¿A través de qué
1:26:34tipo de sentencias?
1:26:38A través de sentencias
1:26:40DDL. Sí, esas sentencias DDL
1:26:45son pasadas al compilador
1:26:50del sistema gestor de base de datos y
1:26:53almacenadas,
1:26:55¿sí?, dentro del catálogo.
1:27:00Y ahí tenemos esa primer parte.
1:27:03Profe, le hago una consulta ahí
1:27:06en base a esta definición. Cuando
1:27:08nosotros tenemos, por ejemplo, ORMs eh
1:27:11de alto nivel, eh vendría a caer en el
1:27:15mismo lugar de la sentencias DDL y que
1:27:18de ahí se, vamos a decir, pasa por el
1:27:20compilador.
1:27:22Fije, ahora ya ahora ya llegamos a eso.
1:27:26Sí. una parte de una si nuestra
1:27:30sentencia cuando hablamos de aplicativos
1:27:33o de programadores,
1:27:35vamos a estar generando al inicio, ¿sí?
1:27:39Una estructura de base de datos, por lo
1:27:41tanto, parte de ello pasaría por este
1:27:43compilador de DL,
1:27:46pero la mayoría del tiempo va a estar
1:27:48pasando por qué compilador?
1:27:50Por el compilador DML.
1:27:54Sí.
1:27:55Pero bueno, vamos a seguir por el lado
1:27:56del DBA.
1:27:58Lo otro que puede hacer el DBA es
1:28:03y una de sus principales facultades es
1:28:07tratar de e mantener la base de datos
1:28:10funcional y para eso tiene acceso a
1:28:12comandos privilegiados.
1:28:14Esos comandos privilegiados, fíjense que
1:28:16impactan en el corazón de lo que es el
1:28:18SGB, que es el procesador de base de
1:28:22datos en tiempo de ejecución o el
1:28:23procesador en tiempo de ejecución de
1:28:25base de datos. Sí.
1:28:28cuya funcionalidad es ejecutar
1:28:33tanto los comandos como las sentencias
1:28:37que se le envíen a ese motor. Y eso
1:28:40impacta tanto en el catálogo
1:28:44como puede impactar tanto en el catálogo
1:28:47como en la base de datos almacenadas.
1:28:51Sí,
1:28:55fíjense que ya que mencionamos esta
1:28:58parte, acá van a ver este módulo que
1:29:01dice gestor de datos almacenados.
1:29:05¿Sí? Y hay una
1:29:08línea
1:29:10punteada o de rayas.
1:29:13¿Qué pasa?
1:29:15El color eh fue elegido a propósito en
1:29:19el sentido de decir, fíjense que todas
1:29:21estas rayas, estas líneas rosadas van a
1:29:25van a parar
1:29:27o tienen contacto con el almacenamiento
1:29:30físico.
1:29:32¿Sí?
1:29:33Entonces, el gestor de base eh el gestor
1:29:38de datos almacenados,
1:29:40sí
1:29:42se es el es la interfaz entre el sistema
1:29:46gestor de base de datos y el sistema
1:29:49operativo para el almacenamiento de bajo
1:29:52nivel en nuestro sistema de archivos
1:29:58de ese sistema operativo.
1:30:00Por lo tanto, dependiendo
1:30:04eh no no no no voy a tomar dependiendo
1:30:08de la
1:30:10dependiendo de la implementación del
1:30:13motor de base de datos, este gestor de
1:30:15datos almacenados puede estar un poco
1:30:19más adentro o más afuera del sistema
1:30:21gestor de base de datos, pero sí o sí
1:30:23siempre está vinculado a los accesos a
1:30:26nivel de el file system, digamos. Sí.
1:30:32Y acá un detalle no más. Fíjense que
1:30:35este esta raya violeta tendría que
1:30:37llegar a esta también, perdón, tendría
1:30:40que llegar a esta acceso porque
1:30:43obviamente la base de datos almacenada
1:30:45también está almacenada en el sistema de
1:30:47archivos.
1:30:48Por otra parte,
1:30:51cuando nosotros hablamos los se acuerdan
1:30:54de los usuarios casuales, ¿quiénes eran
1:30:56los usuarios casuales?
1:30:59los uses finales en el término de roles,
1:31:02¿cómo?
1:31:02Los que siempre entraban a hacer lo
1:31:03mismo.
1:31:05M
1:31:08en términos de roles sería el usuario
1:31:10final.
1:31:12Es un tipo de usuario final. Sí, pero
1:31:16fíjense que el paramétrico también es un
1:31:18usuario final.
1:31:21¿Qué hacía un ¿Qué diferencia tenía un
1:31:24usuario casual con el resto de los
1:31:27usuarios?
1:31:29No era que justamente no siempre hacía
1:31:32lo mismo, sino que entraba
1:31:33esporádicamente a hacer algo.
1:31:35Exactamente. Entra esporádicamente a
1:31:37hacer algo y cada vez que lo hacía era
1:31:39diferente.
1:31:40Y también acá, se acuerdan que yo dije
1:31:42que acá podríamos agruparlo en realidad
1:31:46como usuarios que
1:31:49pueden o no tener acceso esporádico,
1:31:52pero además
1:31:54acceden con diferentes niveles de de
1:31:58detalle a esa base de datos. Acá también
1:32:01entran los usuarios eh, por ejemplo, eh,
1:32:05específicos como son científicos,
1:32:08ingenieros y matemáticos, físicos, ¿sí?
1:32:12Que requieren de un uso de base de datos
1:32:14intensivo en cuanto a consultas y por
1:32:18eso no trabajan sobre un aplicativo.
1:32:20¿Sí? Entonces, necesitan tener acceso al
1:32:23detalle. Y fíjense que por eso habla de
1:32:25una interfaz a través de consultas
1:32:27interactivas.
1:32:32por esto que le había pedido que vean lo
1:32:34de los roles.
1:32:39Entonces, tienen acceso a esta esta
1:32:41interfaz de consultas interactivas.
1:32:44Eso va a ser compilado por el compilador
1:32:46de consultas, puede llegar a ser va a
1:32:49ser optimizado dentro del sistema gestor
1:32:52de base de datos y directamente se envía
1:32:55al procesador en tiempo de ejecución
1:32:58para finalmente acceder a los datos de
1:33:00almacenados.
1:33:03Sí,
1:33:06está.
1:33:08Y finalmente tenemos esta parte que es
1:33:11la más vidriosa, digamos, que es donde
1:33:14tenemos los programadores y los usuarios
1:33:18paramétricos. ¿Qué eran los usuarios
1:33:20paramétricos?
1:33:22¿Qué características tenían?
1:33:26Esos sí eran los simples, esos eran los
1:33:28que entraban a hacer siempre lo mismo, o
1:33:31sea, siempre utilizaban las mismas
1:33:32consultas, eran
1:33:36los usuarios finales vendrían a ser
1:33:38todos estos son usuarios finales. Todos
1:33:41los usuarios son usuarios finales. Sí,
1:33:43profe. Esa era de los cajeros. Cajeros,
1:33:47ejemplo, ¿y cuál qué cuál qué qué
1:33:49características lo define mejor?
1:33:54Exactamente. Altamente estructurados,
1:33:56¿sí? Tareas repetitivas.
1:34:00Por eso van a ver que
1:34:03ahí también jugué un poco con los
1:34:05colores por el hecho de decir que esto
1:34:08que vemos acá como transacciones
1:34:10compiladas
1:34:12eh puede no el libro no dice exactamente
1:34:15de qué se trata, pero puede ir en dos
1:34:17sentidos. Sí.
1:34:20Uno, seguramente son transacciones que
1:34:23siempre se ejecutan, obviamente de la
1:34:25misma manera, ya sea a través de una
1:34:28aplicación o a través, por ejemplo, de
1:34:30procedimientos almacenados. Por eso es
1:34:32que están ahí, pero también tienen este
1:34:34color y este formato que podría ser algo
1:34:37externo. ¿Sí?
1:34:39Entonces, los usuarios paramétricos
1:34:41hacen uso de eso y las transacciones
1:34:43almacenadas, fíjense que tienen impacto
1:34:47de lleno sobre el procesador en tiempo
1:34:48de ejecución.
1:34:51Y por el otro lado están los
1:34:52programadores, que son los encargados de
1:34:55eh trabajar sobre los programas de
1:34:57aplicación.
1:35:00Esos programas de aplicación,
1:35:02además del código que funcione en el
1:35:05cliente, también van a necesitar enviar
1:35:08sentencias
1:35:09de ML y DDL. Por un lado, se separen las
1:35:13sentencias de ML, el precompilador.
1:35:16Eso es enviado al sistema gestor de base
1:35:19de datos. Este, fíjense esta parte que
1:35:21ese compilador de ML, de acuerdo a la
1:35:24versión, la muestra dentro o fuera del
1:35:26sistema gestor. Yo considero que el
1:35:28compilador de ML debería estar dentro
1:35:29del sistema gestor, por eso lo dejé así.
1:35:32Y eh
1:35:36eso consulta contra el catálogo. Si está
1:35:39correcto,
1:35:41lo une con el producto de la compilación
1:35:44del lenguaje anfitrión. El lenguaje
1:35:46anfitrión se refiere y sharp cs+. Sí. Y
1:35:51con eso armo una transacción compilada.
1:35:54Sí, que de vuelta puede ser un programa
1:35:57que está muy atado a la base de datos.
1:36:01Sí,
1:36:03ese es ese producto compilado tiene
1:36:05acceso al procesador en tiempo de
1:36:08ejecución.
1:36:10Sí.
1:36:12Finalmente, el último elemento que eh no
1:36:15lo habíamos mencionado directamente acá
1:36:18tiene que ver con el control de
1:36:20concurrencia y backup, que todo eso se
1:36:23realiza, ¿sí? Ya a bajo nivel también,
1:36:27¿okay? Y por eso figura ahí enlazado en
1:36:30el acceso a la base de datos almacenada.
1:36:34Sí.
1:36:38Bueno,
1:36:40se comprendió esta parte. En realidad,
1:36:42fíjense que no es que estamos yendo a
1:36:45bajo nivel porque son conceptos
1:36:48generales, ¿sí?
1:36:51Pero sí se intenta explicar un poquito
1:36:54más en detalle lo que eh lo que sucede
1:36:58dentro del sistema gestor.
1:37:00Obviamente cada sistema gestor de base
1:37:03de datos hace esto de manera diferente.
1:37:07¿Sí?
1:37:10Preguntas hasta acá.
1:37:14Ninguna, profe.
1:37:18Vamos a ver una cosita más y después los
1:37:20libero. Sí, quizás les dejo el resto
1:37:22para que ustedes también lo vean, los
1:37:24vean por su parte.
1:37:30¿De qué vamos a hablar ahora entonces?
1:37:32rápidamente
Utilerías de un SBD
1:37:35de las utilerías
1:37:38de un sistema de base de datos que
1:37:40podrían
1:37:42que forman parte de un de una base de
1:37:44datos en sí, pero bueno, se supone que
1:37:46son programas anexos, digamos, a esa
1:37:50base de datos. Dentro de la utilería
1:37:53podemos hablar de
1:37:56las utilerías de carga,
1:37:59¿sí? que son aquellas son aquellos
1:38:03programas que a mí me sirven para poblar
1:38:08o llenar la base de datos con datos.
1:38:10Justamente.
1:38:13Sí.
1:38:15Particularmente recuerdan que habíamos
1:38:18hablado de tres partes de una base de
1:38:22datos o mejor dicho cuatro procesos
1:38:25principales que tienen una base de
1:38:27datos. ¿Se acuerdan cuáles eran?
1:38:30Exacto. Definir, construir, manipular,
1:38:33compartir.
1:38:35Las utilerías de carga, ¿en dónde
1:38:38impactan fundamentalmente?
1:38:42A ver, en construir,
1:38:45¿sí? En la construcción.
1:38:48Okay. Entonces, recuerden eso.
1:38:53Cuando hablamos de utilería de carga
1:38:55tiene que ver con, por ejemplo, la
1:38:57importación inicial que puedo hacer de
1:38:59datos de algún lugar. Por ejemplo, traer
1:39:02cargar desde Excel, ¿sí?, un conjunto de
1:39:05datos a una tabla dentro de mi base de
1:39:07datos. Sí, lo que quiero que busquen es
1:39:12lo siguiente.
1:39:14Normalmente en la jerga, en la práctica,
1:39:18¿cómo se llama
1:39:21a este tipo de herramientas?
1:39:23Sí, eso se los dejo para que busquen
1:39:26ustedes.
1:39:28Suele ser pregunta de examen también.
1:39:31Sí. En la jerga normalmente, ¿cómo se
1:39:35llaman a este tipo de herramientas?
1:39:40Bueno, otro tipo de eh utilerías son las
1:39:44que tienen que ver con respaldo. Esto sí
1:39:46ya lo fuimos mencionando varias veces,
1:39:50¿sí? Eh, las utilías de respaldo, ¿para
1:39:53qué me sirven?
1:40:01Crear una copia de seguridad de la base
1:40:03de datos, una copia de respaldo.
1:40:05Bien. Y habíamos y y esas copias, ¿sí?
1:40:10Eh, ¿qué tecnologías se suelen utilizar
1:40:12para eso?
1:40:15¿De qué manera lo podemos hacer?
1:40:19Con un script.
1:40:22Bueno, sí, a ver, eso es en la parte de
1:40:24software, pero en la parte de hardware
1:40:26normalmente, ¿dónde
1:40:27discos despejados?
1:40:28Una forma es discos despejados,
1:40:31otra
1:40:34va en qué en qué en qué medios yo puedo
1:40:37hacer esa copia.
1:40:39Cinta de backup de respaldo,
1:40:41por ejemplo. Sí, podría utilizar cintas.
1:40:46Uno podría pensar la cinta, no no no es
1:40:49demasiado viejo eso.
1:40:52¿Qué tiene? Pero lo que lo que tiene
1:40:54bueno es que que
1:40:56dura dura mucho tiempo, o sea, el la
1:41:00calidad de la grabación es buena y creo
1:41:03que se hace se utiliza para la parte
1:41:05histórica de los datos históricos.
1:41:08Muy bien, perfecto. Sí, sí. Y a ver, uno
1:41:12uno utilizaría una cinta para datos que
1:41:14accede con frecuencia,
1:41:17¿no? Pues sería muy lento,
1:41:19¿no? No, exactamente las cintas práctic
1:41:22hoy en día se utilizan para backup.
1:41:25Sí, exactamente.
1:41:29Estamos.
1:41:31Y entonces una de las características
1:41:33que tiene es que es confiable, es eh y
1:41:36es barata para grandes cantidades de
1:41:39datos. Sí.
1:41:43Bueno, también podría podría hacer
1:41:46backup en medios ópticos quizás.
1:41:49Sí.
1:41:51Eh, pero todo depende de el costo. Okay.
1:41:57¿Y qué tipo? Habíamos hablado algo de
1:41:59esto. ¿Qué tipo de backup ahora sí en
1:42:01cuanto a las estrategias podría
1:42:03utilizar?
1:42:08explicación era uno que mencionó ahí.
1:42:11Bueno, eso era bueno, está bien, es una
1:42:13posibilidad, pero es es eso es una
1:42:15técnica en realidad, pero eh
1:42:20una copia total o en formato progresivo.
1:42:24Exactamente. Que si se quiere lo que
1:42:25habían nombrado Melina ahí, en la
1:42:31la que es la replicación, sí es una
1:42:35copia.
1:42:36progresiva, ¿sí? Porque se hace
1:42:39constantemente. Entonces, es decir, que
1:42:42cuando hablo de un backup,
1:42:45lo que hago es decir, vamos a suponer
1:42:47cada 10 horas o cada 12 horas hago un
1:42:51backup, o sea, voy a tener dos por día.
1:42:53¿Sí? Entonces, cada vez que hago ese
1:42:57backup,
1:42:58tengo que pensar si lo voy a hacer
1:43:00completo o si lo voy a hacer de manera
1:43:03incremental.
1:43:05Sí,
1:43:08el incremental es el que se fija que
1:43:11cambió, digamos.
1:43:12Exactamente. Se fija que cambió y actúa
1:43:16solamente
1:43:18eh hace backup de eso.
1:43:22Sí.
1:43:26Después tenemos qué otra parte tenemos
1:43:29la
1:43:31reorganización de archivos.
1:43:33Sí.
1:43:35que esto está vinculado
1:43:39justamente también con la performance
1:43:42normalmente de la base de datos y ya
1:43:45habíamos hablado de esto. ¿Qué ejemplos
1:43:47les mencioné?
1:43:50La clave primaria.
1:43:53Bueno, indirectamente sí, pero algo más
1:43:58directo.
1:44:05¿Qué podría llegar a ser allí?
1:44:09Los índices.
1:44:11Los índices. Muy bien. Ese es un ejemplo
1:44:15muy concreto.
1:44:17Había hablado otra cosa hoy también
1:44:21de que, por ejemplo, SQL Server usa dos
1:44:23archivos.
1:44:25Bueno, y ahí podría llegar a ahí eso es
1:44:28por defecto y yo podría decir, "No, no
1:44:30es lo mejor. Yo quiero utilizar tres,
1:44:33cuatro, la cantidad que sea." Sí.
1:44:38Está
1:44:40bien. Eh,
1:44:42y por último,
1:44:45vigilancia del rendimiento. Sí, estas
1:44:48utilerías tienen que ver con los típicos
1:44:51profilers, ¿sí? O sea, ver, tratar de
1:44:55ver cuál es la carga a la cual está
1:44:57siendo sometida una base de datos.
1:45:01Sí.
1:45:02Por ejemplo, típicamente yo estoy
1:45:04teniendo un cuello de botella en mi base
1:45:06de datos, está funcionando lento,
1:45:09entonces tengo que empezar a analizar
1:45:10las consultas que están llegando
1:45:13y
1:45:15lanzo una consulta y veo que esa
1:45:17consulta me está durando 2 segundos. Sí,
1:45:21imagínense eso replicado por muchos
1:45:23usuarios.
1:45:25está.
1:45:27Entonces, bueno, ir viendo allí cómo
1:45:29puedo hacer para mejorar eso. Para eso
1:45:32tengo estas herramientas que me dicen la
1:45:34cantidad de segundos que dura, la
1:45:35cantidad de CPU que está utilizando, la
1:45:38cantidad de acceso a disco que está
1:45:39teniendo.
1:45:41¿Okay?
1:45:44Entonces, esto tiene que ver con las
1:45:45utilerías.
1:45:53Bien.
1:45:54Vamos a dejar acá entonces. Sí.