Cómo funciona Spotify?

Documentos relacionados
Taller MongoDB. 1er Cuatrimestre 2016 Base de datos

ALFABETIZACIÓN 1º ESO

Práctica 6. Localización de páginas web con SDL Trados Studio

MongoDB. Sharded Cluster. Carlos García Muñoz

Cliente- Servidor. Bases de Datos Distribuidas

SONIDO - ANEXOS ANEXO 1:

Sencha es un framework, un marco de trabajo que nos facilita el desarrollo de una página web.

Autores: José Manuel Marcos y David Romero MANUAL DE TEMPUS

Azure. Plan de Estudio

Javier de Matías Bejarano

COMUNICACIÓN ENTRE EL CLIENTE Y SERVIDOR SIN PHP Y CON PHP. INTÉRPRETE PHP Y GESTOR DE BASES DE DATOS (CU00804B)

MANUAL DE PROGRAMADOR

Las tecnologías del desarrollo Web

Guía de configuración Router NUCOM N300

2. Instalación / Activación del servicio de Escritorio Remoto.

9 ADMINISTRACIÓN DEL SERVIDOR FRIS 2

Fundamentos de la POO 1

Big Data Analytics & IBM BIG INSIGHT

Manual de Usuario Medidor de Velocidad

Los objetos principales dentro de los SGBD son los siguientes:

Objetivos y Temario CURSO MySQL 5

Manual de Skype ÍNDICE

MALLA CURRICULAR JÓVENES PROGRAMADORES

Manual de Usuario. Disco Virtual en Red

Qué es MongoDB? mongo NoSQL

MongoDB Up & Running

Administración de sistemas gestores de bases de datos

NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO

INSTALACIÓN DE GREENSTONE EN SISTEMAS LINUX

Cuaderno práctico formación digital asociacionismo mujeres

Dos de los elementos más importante de cualquier sistema operativo son los archivos y las carpetas.

Modelamiento y Diseño de Base de Datos

Replicación de bases de datos NoSQL en dispositivos móviles DIRECTOR: PROF. MG. JAVIER BAZZOCCO

TIPOS DE BASE DE DATOS

INSTITUTO INTERNACIONAL EN CONSERVACION DE VIDA SILVESTRE

Introducción Requisitos mínimos Programa Servidor en tu ordenador: APP dispositivo móvil: Instalación Conexión...

Descubre este programa creado bajo licencia GPL v.2 que permite la sincronización de archivos y carpetas...

Plugin Geshi para dar formato a código de programación en artículos Joomla. Saltos de línea. (CU00435A)

Guía de integración del módulo PayNoPain en Prestashop

API: REST o RESTful WEB-SERVICES

PENTAHO + MONGODB. Introducción a Pentaho + MongoDB a través de ejemplos. Jortilles.com

JavaScript. Plan de Estudio

Qué tengo que saber. Tema 2

Tema: Entorno a C# y Estructuras Secuenciales.

Guía de Usuario elife Backup

Lenguajes y paradigmas de programación

APLICACIONES MÓVILES NATIVAS

PRACTICA FINAL. Diseño e implementación de un servidor FTP básico y cliente ftp. Protocolo FTP-RC

Objetivos y Temario CURSO JAVA 7

Persistencia en Sistemas O.O.

Tema 11 Bases de datos. Fundamentos de Informática

Unidad 1 - Surgimiento y Conceptualización de Bases de Datos

Songr (Buscador de Música)

Guía de instalación de GestFlor

Manual de Usuario. Disco Virtual en Red

Tema: Entorno a C# y Estructuras Secuenciales.

Experto en Diseño, Programacion y Creación Web

Configuración de Tiempo y Asistencia (Time Attendance) en Clever Access

IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web

SGBD FICHA TECNICA CARACTERISTICAS VENTAJAS DESVENTAJAS EMPRESAS QUE LO UTILIZAN sybase

Vamos a definir un ordenador, lo que hay en la diapositiva son ordenadores, algunos más especializados que otros, pero todos son ordenadores.

Programación páginas web con PHP

Capítulo 4: Resultados

Objetivos. Conocer los avances en programación y diseño web a través de las aportaciones de lenguajes como HTML, PHP y DHTML

Descripción. Objetivos de Aprendizaje. Estructura y Contenidos

MICROSOFT ACCESS 2003 (COMPLETO) Enero 2010 TEMARIO

Manual del usuario Windows Phone

BASES DE DATOS NoSQL

Conoce Movistar Cloud

2. Java. 3. JavaScript

Instructivo N 01 Instalar UBUNTU SERVER X en VM

Requisitos técnicos para firmar con AutoFirma

Descubre este componente de Joomla para crear fácilmente un repositorio de descargas..

Guía de actualización a Android 4 ICS. bq Pascal bq Pascal Lite bq Pascal Lite C

Transcripción:

Guia de Bases de Datos3 Bases de Datos NoSQL Ejemplo Spotify Cómo funciona Spotify? Antes que nada tenemos que saber que Spotify no funciona como la mayoría de los servicios de música streaming, un funcionamiento que hace uso de múltiples vías para que podamos escuchar las canciones sin ningún tipo de retraso y con la mayor calidad disponible. La latencia es el tiempo que transcurre desde que seleccionamos una canción hasta que empieza a reproducirse y nosotros a escucharla, y aparte de esto el principal enemigo de Spotify y de cualquier servicio de música o vídeo vía streaming, por lo que se ha estado combatiendo desde siempre para hacer que sea cada vez menor. Actualmente el tiempo de latencia del servicio es prácticamente imperceptible bajo una conexión normal, pero cómo se ha logrado esto?. Como todos sabemos Spotify guarda la música en sus servidores, sin embargo, cuando reproducimos una canción pasan 3 cosas diferentes: Primero busca la canción en la memoria cache, una carpeta temporal y oculta donde se descargan las canciones que hemos escuchado, esto lo hace sin importar el tipo o la clase de dispositivo que estemos utilizando, y es algo que le ahorra a la aplicación de Spotify tener que descargar la canción nuevamente. En segundo lugar, hace una búsqueda entre los dispositivos que se encuentren cerca y que tengan en funcionamiento la aplicación, normalmente en ordenadores de personas que se encuentren cerca de donde estemos y que tengan o bien la canción completa o fragmentos de esta, los cuales irá juntando hasta crear una pieza completa, pieza que será la que escuchemos. Por último, Spotify buscará la canción en sus servidores, algo que ocurre muy de vez en cuando si nos fijamos en las estadísticas, las cuales dicen que sólo el 8,8% de las canciones que se reproducen provienen de los servidores de Spotify.

Este estrategia ha demostrado ser mucho más rápida y eficiente que la de otros servicios, es una estrategia que sabiamente ha puesto en práctica Spotify para evitar ser víctima de la gran cantidad de conexiones que sufrirían sus servidores, las cuales serían un claro riesgo para el comportamiento normal del servicio. De esta forma nuestro ordenador, teléfono o tablet se convierten en parte de una gigantesca red P2P (Peer to Peer) de dispositivos que intercambian, suben y descargan datos. Algo que a su vez, le permite a Spotify ser un poco más inteligente y comenzar a preparar la descarga de la próxima canción antes de que termine la que estamos escuchando. Asimismo, para que la transferencia de datos sea más rápida y eficiente las canciones son comprimidas, esto permite que las descargadas y subidas tomen menos tiempo ayudando así a disminuir la latencia y a bajar el consumo de datos en redes móviles.

Bases de Datos NoSQL Para iniciar veremos un ejemplo con el SGBD MongoDB Dentro de las bases de datos NoSQL, probablemente una de las más famosas sea MongoDB. Con un concepto muy diferente al de las bases de datos relacionales, se está convirtiendo en una interesante alternativa. Pero cuando uno se inicia en MongoDB se puede sentir perdido. No tenemos tablas, no tenemos registros y lo que es más importante, no tenemos SQL. Aun así, MongoDB es una seria candidata para almacenar los datos de nuestras aplicaciones. MongoDB es una base de datos orientada a documentos. Esto quiere decir que en lugar de guardar los datos en registros, guarda los datos en documentos. Estos documentos son almacenados en BSON, que es una representación binaria de JSON. Una de las diferencias más importantes con respecto a las bases de datos relacionales, es que no es necesario seguir un esquema. Los documentos de una misma colección - concepto similar a una tabla de una base de datos relacional -, pueden tener esquemas diferentes. Imaginemos que tenemos una colección a la que llamamos Personas. Un documento podría almacenarse de la siguiente manera: Nombre: "Pedro", Apellidos: "Martínez Campo", Edad: 22, Aficiones: ["fútbol","tenis","ciclismo"], Amigos: [ Nombre:"María", Edad:22 },

Nombre:"Luis", Edad:28 } ] } El documento anterior es un clásico documento JSON. Tiene strings, arrays, subdocumentos y números. En la misma colección podríamos guardar un documento como este: } Nombre: "Luis", Estudios: "Administración y Dirección de Empresas", Amigos:12 Este documento no sigue el mismo esquema que el primero. Tiene menos campos, algún campo nuevo que no existe en el documento anterior e incluso un campo de distinto tipo. Esto que es algo impensable en una base de datos relacional, es algo totalmente válido en MongoDB. Cómo funciona MongoDB? MongoDB está escrito en C++, aunque las consultas se hacen pasando objetos JSON como parámetro. Es algo bastante lógico, dado que los propios documentos se almacenan en BSON. Por ejemplo: db.clientes.find(nombre:"pedro"}); La consulta anterior buscará todos los clientes cuyo nombre sea Pedro. MongoDB viene de serie con una consola desde la que podemos ejecutar los distintos comandos. Esta consola está construida sobre JavaScript, por lo que las consultas se realizan utilizando ese lenguaje. Además de las funciones de MongoDB, podemos utilizar muchas de las funciones propias de JavaSciprt. En la consola también podemos definir variables, funciones o utilizar bucles.

Si queremos usar nuestro lenguaje de programación favorito, existen drivers para un gran número de ellos. Hay drivers oficiales para C#, Java, Node.js, PHP, Python, Ruby, C, C++, Perl o Scala. Aunque estos drivers están soportados por MongoDB, no todos están en el mismo estado de madurez. Por ejemplo el de C es una versión alpha. Si queremos utilizar un lenguaje concreto, es mejor revisar los drivers disponibles para comprobar si son adecuados para un entorno de producción. Dónde se puede utilizar MongoDB? Aunque se suele decir que las bases de datos NoSQL tienen un ámbito de aplicación reducido, MongoDB se puede utilizar en muchos de los proyectos que desarrollamos en la actualidad. Cualquier aplicación que necesite almacenar datos semi estructurados puede usar MongoDB. Es el caso de las típicas aplicaciones CRUD o de muchos de los desarrollos web actuales. Eso sí, aunque las colecciones de MongoDB no necesitan definir une esquema, es importante que diseñemos nuestra aplicación para seguir uno. Tendremos que pensar si necesitamos normalizar los datos, denormalizarlos o utilizar una aproximación híbrida. Estas decisiones pueden afectar al rendimiento de nuestra aplicación. En definitiva el esquema lo definen las consultas que vayamos a realizar con más frecuencia. MongoDB es especialmente útil en entornos que requieran escalabilidad. Con sus opciones de replicación y sharding, que son muy sencillas de configurar, podemos conseguir un sistema que escale horizontalmente sin demasiados problemas. Dónde no se debe usar MongoDB? En esta base de datos no existen las transacciones. Aunque nuestra aplicación puede utilizar alguna técnica para simular las transacciones, MongoDB no tiene esta capacidad. Solo garantiza operaciones atómicas a nivel de documento. Si las transacciones son algo indispensable en nuestro desarrollo, deberemos pensar en otro sistema. Tampoco existen los JOINS. Para consultar datos relacionados en dos o más colecciones, tenemos que hacer más de una consulta. En general, si nuestros datos pueden ser estructurados en tablas, y necesitamos las relaciones, es mejor que optemos por un RDBMS clásico.

Y para finalizar, están las consultas de agregación. MongoDB tiene un framework para realizar consultas de este tipo llamado Aggregation Framework. También puede usar Map Reduce. Aún así, estos métodos no llegan a la potencia de un sistema relacional. Si vamos a necesitar explotar informes complejos, deberemos pensar en utilizar otro sistema. Eso sí, esta es una brecha que MongoDB va recortando con cada versión. En poco tiempo esto podría dejar de ser un problema. Trabajo a realizar 1. Realice un cuadro comparativo entre el uso y manejo y administración de una DataBase usando la estructura SQL y NoSQL 2. Genere un cuadro que muestre diversos software con sus respectivas características de NoSQL 3. Muestre un ejemplo en el cual un SGBD como MongoDB podría usarse fácilmente y por qué es más practico que un modelo SQL. 4. Que es NEO4J 5. Que es una Base de Datos orientada a grafos