Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

258
1 Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos 6 de Noviembre 2013, 9:00-12:30, Araba Enpresa Digitala Parque Tecnológico de Álava (Miñano) - Edificio Central Dr. Diego López-de-Ipiña González-de-Artaza [email protected] http://paginaspersonales.deusto.es/dipina http://www.morelab.deusto.es

description

La Internet del Futuro La internet del futuro: definición, objetivos, limitaciones y desafíos. Los pilares de la internet del futuro. Internet de las cosas Los nuevos protocolos de internet: IPv6 y HTTP 2.0. La Web del Futuro Evolución de la web: Web 3.0 El futuro de los navegadores web: HTML5, CSS3, RWD. El futuro de los buscadores web. La web como plataforma de servicios: REST, Comet, … Cloud Computing Definición. Manifestaciones de cloud computing: SaaS, PaaS y IaaS. Aplicaciones cloud más significativas. Infraestructura cloud: Amazon Web Services. Plataformas cloud: Google App Engine. Web de Datos y Big Data Web Semántica: principios. Anotación de contenidos, lenguajes, y mash-ups semánticos. Linked Data: tecnologías, aplicaciones y LOD-Cloud. Big Data: definición, tecnologías y aplicabilidad. Conclusión y Preguntas

Transcript of Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

Page 1: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

1

Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

6 de Noviembre 2013, 9:00-12:30, Araba Enpresa Digitala

Parque Tecnológico de Álava (Miñano) - Edificio Central

Dr. Diego López-de-Ipiña González-de-Artaza [email protected]

http://paginaspersonales.deusto.es/dipina http://www.morelab.deusto.es

Page 2: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

2

Agenda

1. La Internet del Futuro – La internet del futuro: definición, objetivos, limitaciones y desafíos.

– Los pilares de la internet del futuro.

– Internet de las cosas

– Los nuevos protocolos de internet: IPv6 y HTTP 2.0.

2. La Web del Futuro – Evolución de la web: Web 3.0

– El futuro de los navegadores web: HTML5, CSS3, RWD.

– El futuro de los buscadores web.

– La web como plataforma de servicios: REST, Comet, …

Page 3: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

3

Agenda

3. Cloud Computing – Definición.

– Manifestaciones de cloud computing: SaaS, PaaS y IaaS.

– Aplicaciones cloud más significativas.

– Infraestructura cloud: Amazon Web Services.

– Plataformas cloud: Google App Engine.

4. Web de Datos y Big Data – Web Semántica: principios.

– Anotación de contenidos, lenguajes, y mash-ups semánticos.

– Linked Data: tecnologías, aplicaciones y LOD-Cloud.

– Big Data: definición, tecnologías y aplicabilidad.

5. Conclusión y Preguntas

Page 4: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

4

• Internet tiene más de 1500 millones de usuarios – Es un éxito comunicando personas y sistemas de información

• PERO … – ha crecido mucho más allá de sus expectativas y objetivos de diseño

en los 70s:

• Varios parches han permitido aplicaciones novedosas sin cambiarse su arquitectura subyacente

– debe superar sus limitaciones tecnológicas para usarse como una infraestructura global crítica

• Las aplicaciones web del futuro requerirán más movilidad, seguridad, ancho de banda, robustez e interactividad

Limitaciones de la Internet Actual (1)

Page 5: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

5

• Varios “parches” han sido desarrollados y desplegados para permitir a Internet hacer frente a las demandas incrementales de conectividad y capacidad

• La Internet actual ha alcanzado un punto de saturación para alcanzar las expectativas funcionales del usuario y los desafíos tecnológicos en tiempo y precio – En términos de seguridad, escalabilidad, movilidad, disponibilidad o

aspectos socioeconómicos

Limitaciones de la Internet Actual (2)

Page 6: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

6

¿Qué es la Internet del Futuro?

• Término que resume los esfuerzos para progresar a una mejor Internet, bien mediante: – Pequeños pasos evolutivos incrementales o

– Un rediseño completo (clean slate) y nuevos principios arquitectónicos

• Agentes clave: – Global Environment for Network Innovations (GENI):

http://www.geni.net/

• Más basado en redes

– Proyecto AKARI en Japón, http://akari-project.nict.go.jp/eng

– Future Internet – http://www.future-internet.eu/ y http://www.fi-

ppp.eu/about/

Page 7: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

7

Misión de la Future Internet (FI)

• Ofrecer a todos los usuarios un entorno seguro, eficiente, confiable y robusto, que:

– Permita un acceso abierto, dinámico y descentralizado a la red y a su información y

– Sea escalable, flexible y adapte su rendimiento a las necesidades de los usuarios y su contexto

Page 8: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

8

Los Pilares de la Internet del Futuro

• La Internet del Futuro consta de 4 pilares apoyados en una nueva infraestructura de red como base:

– Internet Por y Para la Gente

– Internet de los Contenidos y del Conocimiento

– Internet de los Servicios

– Internet de las Cosas

Page 9: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

9

Arquitectura de la Internet del Futuro

Page 10: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

10

Internet de las Redes

• Aunque existen proyectos que están trabajando en cambios radicales a la manera de establecer conexiones con Internet – http://www.fi-ppp.eu/

• FI-WARE: http://www.fi-ware.eu/about/

• Nos vamos a centrar en una serie de innovaciones en protocolos que se están imponiendo y serán la norma en un futuro cercano: – IPv6

– HTTP 2.0

– NFC

– Bluetooth Low Energy (BLE)

Page 11: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

11

IPv6

• Latest revision of the Internet Protocol (IP), the communications protocol that provides an identification and location system for computers on networks and routes traffic across the Internet.

– Developed by the Internet Engineering Task Force (IETF) to deal with the long-anticipated problem of IPv4 address exhaustion

• IPv6 is intended to replace IPv4, which still carries the vast majority of Internet traffic as of 2013

– As of September 2013, the percentage of users reaching Google services over IPv6 surpassed 2%

• To make the switch, software and routers will have to be changed to support this more advanced network

• IPv6 uses a 128-bit address, allowing 2128, or approximately 3.4×1038 addresses, or more than 7.9×1028 times as many as IPv4, which uses 32-bit addresses.

• IPv6 addresses are represented as eight groups of four hexadecimal digits separated by colons

– E.g. 2001:0db8:85a3:0042:1000:8a2e:0370:7334

Page 12: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

12

IPv6 vs. IPv4

• Other important changes: • No more NAT (Network Address Translation), Auto-configuration, no

more private address collisions, better multicast routing, simpler header

format, simplified, more efficient routing, true quality of service (QoS), also

called "flow labeling“, built-in authentication and privacy support, flexible

options and extensions, easier administration (say good-bye to DHCP)

Page 13: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

13

HTTP 2.0

• HTTP 2.0 is the next planned version of the HTTP network protocol used by the World Wide Web. – HTTP 2.0 is being developed by the Hypertext Transfer Protocol Bis

(httpbis) working group of the IETF. – Based on Google's SPDY protocol, Microsoft's HTTP Speed+Mobility

proposal (SPDY based)

• HTTP 2.0 would be the first new version of the HTTP protocol since HTTP 1.1 was described by RFC 2616 in 1999.

• Goals: – Include asynchronous connection multiplexing, header compression,

and request-response pipelining, while maintaining full backwards compatibility with the transaction semantics of HTTP 1.1

– Enable Server-Push

• Documentation: – http://chimera.labs.oreilly.com/books/1230000000545/ch12.html

Page 14: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

14

HTTP 2.0 streams, messages and frames

Binary Framing Layer Stream, Messages & Frames

A connection carries any number of bidirectional streams. In turn, each stream communicates in messages, which consist of one or multiple frames, each of which may be interleaved and then reassembled via the embedded stream identifier in the header of each individual frame

Request & Response Multiplexing

Page 15: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

15

Near Field Communication (NFC)

• Near field communication (NFC) is a set of standards for smartphones and similar devices to establish radio communication with each other by touching them together or bringing them into close proximity, usually no more than a few centimetres

– Operates at 13.56 MHz, has data transfer rate ranging from 106 kbit/s to 424 kbit/s

– NFC tags contain data and are typically read-only, but may be rewriteable

• Uses RFID (Radio Frequency Communication) chips that enable devices to communicate between them, bi-directionally.

– Application examples:

• NFC headsets and electronic wallets, eliminates the need to pair devices in Bluetooth or WiFi Direct (e.g. Android Beam / S-Beam), data exchange through NFC tags

• Wider availability of NFC-enabled SmartPhones is propelling its usage: http://www.nfcworld.com/nfc-phones-list/

– When will the iPhone support it?

Page 17: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

17

Bluetooth Low Energy (BLE)

• Bluetooth low energy (BLE) is a wireless computer network technology which is aimed at novel applications in the healthcare, fitness, security, and home entertainment industries.

– Compared to "Classic" Bluetooth, it is intended to provide considerably reduced power consumption and lower cost, while maintaining a similar communication range

• Power consumption is drastically reduced via a low pulsing method that keeps devices connected without the need of a continuous information stream

• Features:

– Operates inn the same spectrum range (the 2.400 GHz-2.4835 GHz ISM band) as Classic Bluetooth technology, but uses a different set of channels.

– Uses a star topology

– Nodes act as presence/state indicators

– Internet enabled devices as Gateways

• Available devices supporting BLE (Nokia Lumia, Android 4.3+, iPhone 4S+)

Page 18: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

18

• In the market, we can encounter two types of BLE devices:

– Bluetooth Smart Ready refers to devices that use a dual-mode radios, which can handle both the 4.0 technology, as well as classic Bluetooth abilities, such as transferring files, or connecting to a hands-free device.

– Bluetooth Smart represents a new breed of Bluetooth 4.0 peripherals: sensor-type devices like heart-rate monitors or pedometers that run on small batteries and are designed to collect specific pieces of information.

• Only connect to BT Smart Ready devices

Page 19: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

19

Internet Por y Para la Gente

• Nueva visión del usuario en Internet que implica: – Mejor experiencia de usuario: desarrollo de nuevos interfaces

ergonómicos y modelos de interacción multi-modal

– Usuarios activos (prosumers): nuevas herramientas que permitan a los usuarios finales crear y compartir servicios personalizados

– Sensible al Usuario y Contenido: personalización de contenido y servicios de acuerdo al contexto y preferencias personales

– Conocimiento de usuarios: extraer información de los usuarios, monitorizar su comportamiento sin comprometer su privacidad

Page 20: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

20

Desafíos de la Internet por y para la Gente

1. Saber más del usuario – conociendo sus hábitos y necesidades para diseñar mejor las aplicaciones, interfaces y servicios futuros

– Conocimiento de usuarios – los servicios y la web deberían ser adaptables y personalizables al usuario

– Consciencia del usuario y del conocimiento – para generar sistemas de recomendación, para la web móvil y los servicios sensibles a la localización

2. Dar más poder al usuario – más y mejores servicios personalizados y creados por los propios usuarios (enfoque Do It Yourself – DIY)

3. Mejorar la experiencia de usuario – nuevas interfaces ergonómicas y mecanismos de interacción incluyendo multi-modalidad y combinación y adaptación semántica de la información desde diferentes fuentes

Page 21: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

21

Open Innovation

• Nueva estrategia de innovación bajo la cual las empresas van más allá de los límites internos de su organización y donde la cooperación con profesionales externos pasa a tener un papel fundamental.

– La inteligencia colectiva surge de la colaboración y concurso de muchos individuos o seres vivos de una misma especie.

– Término generalizado de la cibercultura o la sociedad del conocimiento

• Los usuarios como PROSUMERS

• Algunos proyectos/conceptos en esta área:

– Kick starter –sitio web de financiación en masa (CrowdFunding) para proyectos creativos http://www.kickstarter.com/

– Crowdsourcing se define como “the practice of obtaining needed services, ideas, or content by soliciting contributions from a large group of people and especially from the online community rather than from traditional employees or suppliers”

Page 22: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

22

Internet de los Contenidos y del Conocimiento

• Nueva visión del contenido en Internet que implica: – Nuevos dispositivos/players: dispositivos multimedia con más

funcionalidad integrada, escalables, auto-configurables, programables

– Aplicaciones multimedia sociales: software y herramientas para integrar contenidos multimedia orientados a relaciones sociales.

– Contenido digital: herramientas para crear contenidos por el propio usuario y su distribución a través de diferentes localizaciones.

– Contenido etiquetado semánticamente: para permitir que las aplicaciones puedan procesar información de modo inteligente

– Inteligencia cognitiva: la evolución de la web a Web 3.0 permitirá motores de búsqueda multimedia avanzados.

Page 23: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

23

Desafíos de la Internet de los Contenidos y Conocimiento

• Generación y procesamiento de contenido y su transformación en información útil, teniendo en cuenta su relación con el usuario:

1. Contenido digital inteligente – información comprensible disponible al usuario, incluyendo tanto datos (esencia) como metadatos (facilitando su búsqueda, procesamiento, consumo, etc.)

2. Aplicaciones multimedia distribuidas sensibles al contexto – los prosumers permitirán una selección automática de contenidos, sin importar ya tanto cómo originariamente fueron provistos los contenidos

3. Nuevos dispositivos de usuarios y terminales ubicuos – los usuarios deben poder acceder a contenido allí donde estén, desde cualquier terminal y sin importar los cambios de terminal que efectúen.

Page 24: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

24

Ejemplo Internet de la Gente y Contenidos

Page 25: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

25

Google Glass

• Su misión es producir un ubiquitous computer de venta masiva

– Lanzadas para los desarrolladores de Google I/O por 1500$ el año 2013

• Muestra información disponible sin utilizar las manos, accede a Internet mediante órdenes de voz, de manera comparable a Google Now

Page 27: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

27

Internet of Things (IoT) Promise

• There will be around 25 billion devices connected to the Internet by 2015, 50 billion by 2020

– A dynamic and universal network where billions of identifiable “things” (e.g. devices, people, applications, etc.) communicate with one another anytime anywhere; things become context-aware, are able to configure themselves and exchange information, and show “intelligence/cognitive” behaviour

Page 28: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

28

Internet de las Cosas

• Red universal de objetos interconectados y direccionables basada en protocolos de comunicación estándar. – IoT exhibirá un alto nivel de heterogeneidad, combinando objetos de

distinta funcionalidad, tecnología o campos de aplicación.

– Protocolos semánticos noveles serán desarrollados para permitir a IoT escalar y coordinar a los millones de objetos que nos rodean

– RFID y redes de sensores proporcionan un mecanismo de bajo coste y robusto de identificación y sensibilidad al contexto

• El uso de Internet pasará de modelo request/reply a push-and-process

Page 29: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

29

Internet de las Cosas

Page 30: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

30

Desafíos de Internet de las Cosas

1. Procesar grandes cantidades de información de “cosas conectadas” y ofrecer servicios en respuesta

2. Investigar en nuevos modos y mecanismos de encontrar, recuperar y transmitir datos dinámicamente – Descubrimiento de datos sensoriales — en tiempo y espacio

– Comunicación de datos sensoriales: consultas complejas (síncronas), publish/subscribe (asíncronas)

– Procesamiento de gran variedad de streams de datos sensoriales: correlación, agregación y filtrado

3. Dimensión ética y social: mantener el equilibrio entre personalización, privacidad y seguridad

Page 31: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

31

IoT Enabling Technologies

• Low-cost embedded computing and communication platforms, e.g. Arduino or Rapsberry PI

• Wide availability of low-cost sensors and sensor networks

• Cloud-based Sensor Data Management Frameworks: Xively, Sense.se

Democratization of Internet-connected Physical Objects

Page 32: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

32

IoT impulse: Smart Cities, consumer objects, mobile sensing, smart metering

Page 33: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

33

Human-mediated Mobile Sensing

• La combinación de humanos, SmartPhones y dispositivos de sensorización da lugar a Mobile Sensing y CrowdSensing

Page 34: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

34

Nature of Data in IoT

• Heterogeneity makes IoT devices hardly interoperable

• Data collected is multi-modal, diverse, voluminous and often supplied at high speed

• IoT data management imposes heavy challenges on information systems

Page 35: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

35

Internet of Everything

• CISCO view: “From the Internet of Things (IoT), where we are today, we are just beginning to enter a new realm: the Internet of Everything (IoE), where things will gain context awareness, increased processing power, and greater sensing abilities”

– IoE (four pillars: people, process, data, and things) builds on top of IoT (one pillar: things).

Page 36: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

36

Web of Things

• The Web of Things (WoT) is a computing concept that describes a future where everyday objects are fully integrated with the Web. – The prerequisite for WoT is for the "things" to have embedded

computer systems that enable communication with the Web, i.e. HTTP microserver

– Such smart devices would then be able to communicate with each other using existing Web standards: HTTP & REST

– http://www.webofthings.org/

Page 37: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

37

Protocolos para IoT • NFC y BLE también entran en esta categoría:

Protocol CoAP XMPP RESTful HTTP MQTT

Transport UDP TCP TCP TCP

Messaging Request/Response Publish/Subscribe Request/Response

Request/Response Publish/Subscribe Request/Response

2G, 3G, 4G Suitability (1000s nodes)

Excellent Excellent Excellent Excellent

LLN Suitability (1000s nodes)

Excellent Fair Fair Fair

Compute Resources

10Ks RAM/Flash 10Ks RAM/Flash 10Ks RAM/Flash 10Ks RAM/Flash

Success Stories Utility Field Area Networks

Remote management of consumer white goods

Smart Energy Profile 2 (premise energy management/home services)

Extending enterprise messaging into IoT applications

Page 38: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

38

Internet of Things example: SmartVase

Page 39: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

39

Internet of Things example: Social Sustainable Coffee Machine

Page 40: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

40

Adapted from SAP Research, 2008, and SEEKDA, 2008

Una multitud de servicios IT conectados, que son ofrecidos, comprados,

vendidos, utilizados, adaptados y compuestos por una red universal de

proveedores, consumidores y agregadores de servicios o brokers

- resultando en -

una nueva manera de ofrecer, utilizar, y organizar funcionalidad soportada

por IT

Internet de los Servicios

Page 41: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

41

Internet de los Servicios

• Define cómo los servicios serán provistos y operados en la Internet del Futuro – http://services.future-internet.eu/index.php/Main_Page

• Tres principales áreas de investigación: 1. Internet-scale service oriented computing –permite el acceso a

recursos computacionales, datos o software, como servicios

2. Acceso a servicios contextualizado, proactivo y personalizado – context-awareness, interacción multi-modal, end-user empowerment, colaborativo

3. Orquestación de servicios y servicios base – diferentes capas de servicios, desde servicios de infraestructura a servicios específicos con interfaz de usuario.

Page 42: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

42

Desafíos de la Internet de los Servicios

1. Permitir el acceso a servicios en base a las características técnicas (localización IP o identificador) de servicios web, pero también en base a información contextual (e.j. usando contexto geográfico o de negocio).

2. Los servicios deben ser buscados, identificados y compuestos en componentes de procesos de negocio

3. Progresar hacia la “interactividad perfecta” de los consumidores: – Permanente – interactividad sin límites temporales

– Transparente – el consumidor se concentra en los beneficios del servicio (en el qué) permitiendo la movilidad del usuario entre diferentes dispositivos sin interrupción

– Sensible al contexto – la interacción se adapta al contexto incluyendo características de los dispositivos, localización, preferencias de usuarios o sus redes sociales

– Enriquecedor – los usuarios configuran la manera en la que acceden a los servicios y

– Confiable – los usuario confían en que sus interacciones con servicios son seguras

Page 43: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

43

La Web del Futuro

• Web Semántica: o Las máquinas entienden el contenido que han estado alojando y pueden

obtener información de la semántica de los documentos o Tecnologías: XML, RDF, SPARQL, OWL, µFormats...

• Web Ubicua: o Provee una framework para exportar capacidades de coordinación de

dispositivos a las aplicaciones web o Pretende mejorar las capacidades de los navegadores para habilitar

nuevos tipos de aplicaciones contextuales o Conectar un móvil con cámara con una impresora cercana, usar un móvil

para dar una presentación en un proyector inalámbrico, etc.

• Web Semántica + Web Ubicua = ¡Web 3.0 y más allá!

Page 44: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

44

La Evolución de la Web

Page 45: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

45

La Evolución de la Web

• Según Nova Spivack, el desarrollo de la Web se mueve en ciclos de 10 años:

– En la 1ª década, todo el desarrollo centrado en la infraestructura de la Web.

• Los programadores crearon los protocolos y lenguajes que utilizamos en la Web actual

– En la 2ª década, el foco se ha movido al front end y comenzó la era Web 2.0

• Ahora, se utilizan páginas Web como plataformas para otras aplicaciones.

• Se crean mash-ups y experimenta con nuevos modos de hacer la web más interactiva

• Web 2.0: web social y web como plataforma estamos al final del ciclo!!

– El 3er ciclo será la Web 3.0, y el foco será de nuevo el back-end

• Los programadores redefinirán la infraestructura de Internet para dar apoyo a las avanzadas capacidades de los navegadores y buscadores Web 3.0.

– La 4ª y subsiguientes fases corresponderán a la Web 4.0 y Web X.0

• Se volverá a dar importancia al front-end, nuevas y novedosas aplicaciones harán uso de la infraestructura generada en la Web 3.0

• Fuente: – http://www.howstuffworks.com/framed.htm?parent=web-

30.htm&url=http://www.intentblog.com/archives/2007/02/nova_spivack_th.html

Page 46: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

46

Web 1.0 vs. Web 2.0 vs. Web 3.0

• Web 1.0 es como una librería. Puedes consultar información pero no puedes contribuir con o cambiar la información.

• Web 2.0 es la web social colaborativa que pone en contacto a gente y permite entrada y salida (input/output web)

• Web 3.0 usa la Internet para conectar información. Hace la web más inteligente, teniendo en cuenta (enchufando) nuestras preferencias, hábitos y contexto

Page 47: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

47

Características de la Web 3.0

• Asistente personal que nos conoce y puede acceder a información en Internet para responder a nuestras preguntas

• Cada usuario dispondrá de un único perfil de Internet basado en la historia de navegación del usuario – Si dos usuarios realizan la misma búsqueda por Internet recibirán

resultados diferentes acordes con su perfil y contexto

• Proveerá a los usuarios experiencias más ricas y relevantes

• Su bloque funcional serán las Open APIs – Crear mash-ups será tan sencillo que cualquiera podrá hacerlo

• Se podrán mezclar widgets para hacer mashups usando drag&drop

Page 48: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

48

El Futuro de las Búsquedas: Personalizadas y en Tiempo Real

Page 49: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

49

Futuro de las Búsquedas • The early days of search required that users query a search engine in database

format.

– Users phrase the query in such a way that the machine understands the request, query the database, and return results.

• Now, we are trying to talk to the machine and get back relevant results:

– Google' Glass and Now, and Apple's Siri are good examples of concept services

– Hummingbird replaces the old Google search algorithm that sought to map words in a query to content with the same terms, to a new engine that seeks to actually understand the meaning behind the query and (hopefully) return more relevant results

• Our data is organized in the most accessible ways possible, conforming to relevant data conventions and organized logically so the ever evolving spiders can access and make sense of it.

Google's Amit Singhal states that

“Future Search will need to: Answer & Converse& Anticipate”

Page 50: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

50

Wolfram|Alpha

• Es un motor de conocimiento que genera salidas realizando cómputos a partir de su propia base de conocimiento, en vez de hacer búsquedas en la web y devolver vínculos.

– Contiene algoritmos que permiten obtener datos sobre hechos y fórmulas planteados en lenguaje natural, apoyándose en la infraestructura de Mathematica

– Los resultados vienen como gráficos, mapas, hechos y tablas

• ¿Para qué sirve Wolfram|Alpha?

– Para mostrar información o realizar computaciones sobre hechos

– El servicio conoce mucho del mundo:

• Geografía, economía y datos socioeconómicos, física, química, ingeniería, deportes, unidades de medida, tiempo e incluso música.

• Diferencia con los buscadores:

– Todos los hechos, fórmulas y relaciones han sido preparados por usuarios humanos

– Wolfram|Alpha intenta determinar el significado real de una pregunta realizada

• Procesadores de lenguaje natural determinan el dominio de la pregunta para así facilitar el cómputo de la respuesta

Page 52: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

52

Siri • Asistente personal para iOS que utiliza procesamiento del

lenguaje natural para responder preguntas, hacer recomendaciones y realizar acciones delegando a servicios web

• Es capaz de adaptarse con el paso del tiempo a las preferencias individuales de cada usuario, personalizando las búsquedas web y la realización de algunas tareas

• Las acciones y respuestas que es capaz de proveer Siri descansan en un creciente ecosistema de proyectos acompañantes:

– OpenTable, CitySearch, Yelp, Yahoo, ReserveTravel, Localeze para preguntas sobre restaurantes, negocios y acciones;

– Eventful, StubHub, y LiveKick para información sobre eventos y conciertos;

– True Knowledge, Bing Answers, y Wolfram Alpha para las respuestas acerca de información sobre hechos y lugares

• URL: http://www.apple.com/ios/siri/

Page 53: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

53

Google Now • Asistente personal inteligente disponible para los sistemas

operativos Android y iOS

• Usa una interfaz de usuario de lenguaje natural para responder preguntas, hacer recomendaciones, y actuar al delegar las solicitudes a un conjunto de servicios web.

• Reconoce acciones repetidas que un usuario realiza en el dispositivo (ubicaciones comunes, citas repetidas del calendario, consultas de búsqueda, etc.) para mostrar información más relevante al usuario a manera de "tarjetas".

• El sistema aprovecha el proyecto Knowledge Graph de Google, un sistema usado para ensamblar resultados de búsquedas más detallados mediante el análisis de su significado y conexiones

• Las tarjetas especializadas actualmente incluyen: cumpleaños, monedas, Gmail eventos, etc.

• URL: http://www.google.com/landing/now/

Page 54: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

54

Google HummingBird • Google Hummingbird es el nuevo algoritmo de búsqueda de Google:

– En Septiembre 27, 2013, el 15 cumpleaños de Google se lanzó este algoritmo que pretende hacer las búsquedas en Google más cercanas al usuario (“human friendly”) y ofrecer respuestas directas

• “Hummingbird looks at PageRank — how important links to a page are deemed to be — along with other factors like whether Google believes a page is of good quality, the words used on it and many other things”

• Permite hacer consultas más complejas y entender mejor el lenguaje humano, en vez de un conjunto de palabras.

• Permite a Google gestionar mejor “búsquedas conversacionales”

– Cada vez se van a hacer mas “vocal search”

– Google quiere procesar consultas en lenguaje natural

• Ejemplo:

– “give me some pictures of the transamerica building”

– “how tall is it” / “how tall is the transamerica building?”

– “pomegranate vs cranberry juice”

• Explota internamente el contenido recogido en Knowledge Graph, con servicios que lo explotan como Google Now quiere anticiparse, leer nuestra mente

• URL: http://www.copyblogger.com/google-hummingbird/

Page 55: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

55

Google Knowledge Graph • Knowledge Graph es una base de conocimiento usada por Google para

mejorar los resultados obtenidos con su motor de búsqueda mediante información de búsqueda semántica recolectada de una amplia gama de recursos.

– Se añadió al motor de búsqueda de Google en 2012

• Provee información estructurada y detallada acerca de un tema además de una lista de enlaces a otros sitios.

• Esta información se deriva de muchos recursos, que incluyen el CIA World Factbook, Freebase y Wikipedia

– Su red semántica contenía más de 570 millones de objetos y más de 18 mil millones de sucesos acerca de –y relaciones entre– esos diferentes objetos que se usan para entender el significado del término índice ingresado en la búsqueda

• URL:

– Knowledge Graph http://www.google.com/insidesearch/features/search/knowledge.html

– Freebase: http://wiki.freebase.com/wiki/Main_Page

Page 57: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

57

Evolución de los Navegadores

• Tradicionalmente los navegadores web se ejecutan en ordenadores conectados a Internet, PERO … • Los SmartPhones, SmartTVs (y otros dispositivos) incluyen también acceso a

servicios de datos mediante pequeños navegadores web • Las aplicaciones web deben poder ejecutarse en todo tipo de dispositivos

• Los lenguajes HTML5/CSS3 y JavaScript no son ya sólo utilizados para acceder a la World Wide Web o Pueden definir interfaces de usuario para muchos tipos de aplicaciones

locales y remotas, reduciendo el ciclo de desarrollo

• Los navegadores están emergiendo como habilitadores de interacción global y players de aplicaciones web

Page 58: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

58

Navegadores Futuros

• ¿Cuál será el rol de los navegadores en el futuro?

– Mozilla, Opera, Google y otros se están moviendo hacia un modelo donde el navegador es el sistema operativo – bien denominándolo navegador como SO o cloud SO

• Todas las aplicaciones, documentos, ficheros y servicios accedidos a través de una interfaz web y se comportan de igual modo independientemente del SO (Windows, Linux, Android, Chrome …)

Page 59: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

59

Chrome OS • Proyecto para desarrollar un sistema operativo basado en web.

– Realizado con base en código abierto (Núcleo Linux) y orientado inicialmente para mini portátiles sobre microprocesadores con tecnología x86 o ARM

– Chrome OS fue liberado en noviembre de 2009 bajo el proyecto «Chromium OS»

– Dispositivos existentes: Chromebooks y ChromeCast

Page 62: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

62

Características de los Navegadores del Futuro

• Serán reproductores (players) de aplicaciones web y catalizadores de interacciones con servicios:

– Caché de aplicaciones

– Modo de operación offline y online

– Capacidad de almacenamiento

– Soporte multi-hilo

– Integración con escritorio

– Interacción multi-modal

– Interacción con el entorno

– Motores de ejecución de servicios

Page 63: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

63

El Browser como Broker de Información

• Nuevo rol de los navegadores web: de renderizar HTML a broker de información – Detectan información en páginas web y la transfieren a otras aplicaciones

• La detección de microformatos y contenido semántico debería ser diseñado como una plataforma abierta y extensible – Gestión de contactos, calendario y aplicaciones de mapas usan APIs del navegador

para integrarse con la capacidad de detección de microformatos y contenido semántico del browser

• Ejemplo: Mozilla Operator (http://microformats.org/wiki/geo)

Page 64: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

64

Greasemonkey • Greasemonkey es una extensión para el navegador Mozilla Firefox que permite, por

medio de pequeñas porciones de código creadas por usuarios, modificar el comportamiento de páginas web específicas

– Instala porciones de código llamadas user scripts que, por medio de JavaScript, realizan acciones muy concretas; muchas de estas porciones de código son creadas para sitios concretos, otras sirven para cualquier página web.

• El portal http://userscripts.org/ contiene muchos scripts para mejorar los sites que visitas

• Ejemplo:

– Instala el siguiente Script para añadir enlace a versión “Simple English” de toda página web en http://en.wikipedia.org/wiki/. Por ejemplo: http://en.wikipedia.org/wiki/WebRTC

Page 65: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

65

La Web como Plataforma: Parte Servidora

SOA: Service Oriented Architecture

• Define la utilización de servicios para dar soporte a los requisitos del negocio

• Sistemas altamente escalables, estándar de exposición e invocación de servicios (comúnmente pero no exclusivamente servicios web), lo cual facilita la interacción entre diferentes sistemas propios o de terceros.

• Éxito de SOA depende de que los desarrolladores de software se orienten a esta mentalidad de crear servicios comunes que son orquestados por clientes o middleware para implementar los procesos de negocio

• Hablar de SOA significa generalmente hablar de un juego de servicios residentes en Internet o una intranet, usando tecnologías como (XML, HTTP, SOAP, WSDL, UDDI)

• Características: Modular, distribuido, auto-descriptivo, compartible y desacoplado

• Dos estilos: objetos distribuidos (WS*-Style) y WOA Style

WOA: Web Oriented Architecture

• WOA = SOA + REST + WWW

• Arquitectura de software que extiende SOA a aplicaciones basadas en web

• La información se representa en forma de recursos en la red y es accedida y manipulada mediante el protocolo especificado en la URI.

• Los recursos se manipulan mediante CRUD HTTP (POST, GET, PUT, DELETE) usando REST.

• Estos recursos sólo son manipulados por componentes pertenecientes a la red (esencialmente browsers & web servers).

• Es responsabilidad de los componentes entender la representación y estados de transición válidos de los recursos.

• Los recursos tienen embebidas URIs que construyen una red más grande de recursos

• Más flexibles, ágiles al cambio y evolución de los sistemas de información.

Page 66: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

66

La Web como Plataforma: Parte Servidora

SOAP: Simple Object Access Protocol

• Define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML.

• Deriva de un protocolo creado por David Winer en 1998, llamado XML-RPC.

• Fue creado por Microsoft, IBM, y otros y actualmente se encuentra bajo el auspicio de la W3C.

• Su arquitectura consiste en varias capas de especificaciones para formato de mensajes:

• Message Exchange Patterns (MEP)

• Protocolos de transporte (SMTP y HTTP/S)

• Modelos de procesado de mensajes

• Protocolo de extensibilidad

• WS-*

REST: Represantional State Transfer

• Estilo de arquitectura software para sistemas de hypermedia distribuidos como la WWW.

• Introducido en la tésis doctoral de Roy Fielding en el año 2000.

• Se refiere a una colección de principios de arquitectura de red, que marcan cómo definir e invocar los recursos.

• El término se usa a veces para describir una simple interfaz que transmite datos de un dominio específico por HTTP sin capas adicionales como SOAP o uso de cookies.

• Los sistemas que cumplen los principios marcados por Fielding suelen ser referidos como sistemas RESTful.

Page 67: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

67

Understanding REST (1)

• Representational State Transfer (REST) is an architectural style for creating, maintaining, retrieving, and deleting resources

– REST is an information-driven, resource-oriented approach to building Web services

• Whilst SOAP is mostly useful for invoking behaviour, REST is good for managing information

– A resource can be anything (a file, query, calculation, or concept) of potential interest that is serializable (represented) in some form

– A representation is the transfer format of information or application state from a server to a client or back again.

• When to use SOAP and when to use REST?

– When you need to invoke behavior in standard contract-bound ways between disparate partners, SOAP is a good approach.

– If you are looking to share information in flexible, scalable, reusable, loosely-coupled ways, then REST is a great approach

• The HTTP protocol and its verbs are the most common implementation of REST, but other bindings are possible

Page 68: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

68

Understanding REST (2)

• REST identifies resources by URLs – URLs are logical paths through information spaces

– Uniquely identify one or more resources in a resolvable context

– Specifies a path toward an answer that encourages caching

– Allows you to pass references to data, rather than the data itself

• Some example URLs could be:

– http://someserver/book returns a index of book categories

– http://someserver/book/genre/horror returns a book collection of genre horror

– http://someserver/author/Diego/Ipiña returns info about author Diego Ipiña

Page 69: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

69

Understanding REST (3)

• REST is an architectural style, where the ‘R’ stands for representation. – A representation is the structural form of the resource as it

moves back and forth from client to server

• Resources are given logical names – There is no strict binding between an information consumer and

producer

• Unlike SOAP, in REST result negotiation allows for different representation selection: – XML may be a great format in the business tier

– In a browser-based API, you might like to refer to the same resource but ask for it back as JavaScript Object Notation (JSON)

Page 70: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

70

Understanding REST (4)

• In summary, the REST architectural style is based on the following separation of concerns: – The things we care about (resources)

– How we refer to them (URIs)

– How we manipulate them (verbs)

– How we choose to represent them for creation, updates, and retrieval (Representations)

• REST concepts are the foundation for dynamic, scalable, sharable and loosely-coupled resource-oriented architectures (WOA)

Page 71: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

71

Behaviour of a REST Application

Page 72: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

72

JAX-RS: Java API for RESTful Web Services

• A Java programming language API that provides support in creating web services according to the Representational State Transfer (REST) architectural pattern. – Uses annotations, introduced in Java SE 5, to simplify the

development and deployment of web service clients and endpoints.

• Implementations of JAX-RS include: – Apache CXF, an open source Web service framework. – Jersey, the reference implementation from Sun (now

Oracle). – Restlet, created by Jerome Louvel, a pioneer in REST

frameworks

Page 73: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

73

JAX-RS Annotations • JAX-RS provides some annotations to aid in mapping a resource class (a POJO) as a web resource:

– @Path specifies the relative path for a resource class or method.

– @GET, @PUT, @POST, @DELETE and @HEAD specify the HTTP request type of a resource.

– @Produces specifies the response Internet media types (used for content negotiation).

– @Consumes specifies the accepted request Internet media types.

• In addition, it provides further annotations to method parameters to pull information out of the request. All the @*Param annotations take a key of some form which is used to look up the value required.

– @PathParam binds the method parameter to a path segment.

– @QueryParam binds the method parameter to the value of an HTTP query parameter.

– @MatrixParam binds the method parameter to the value of an HTTP matrix parameter.

• E.g.: Matrix parameters apply to a particular path element while query parameters apply to the request as a whole

http://example.com/res/categories;name=foo/objects;name=green/?page=1

– @HeaderParam binds the method parameter to an HTTP header value.

– @CookieParam binds the method parameter to a cookie value.

– @FormParam binds the method parameter to a form value.

– @DefaultValue specifies a default value for the above bindings when the key is not found.

– @Context returns the entire context of the object.(for example @Context HttpServletRequest request)

Page 74: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

74

Jersey: an implementation of JAX-RS • Jersey is the reference implementation of JAX-RS, it contains basically a REST

server and a REST client.

– The core client can be used provides a library to communicate with the server.

– On the server side Jersey uses a servlet which scans predefined classes to identify RESTful resources

• Via the web.xml configuration file for your web application, registers this servlet which is provided by the Jersey distribution

• The base URL of this servlet is: http://your_domain:port/display-name/url-pattern/path_from_rest_class

• This servlet analyzes the incoming HTTP request and selects the correct class and method to respond to this request.

– This selection is based on annotations in the class and methods.

• Download from: https://jersey.java.net/download.html

Page 75: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

75

OpenID • Single sign-on es un procedimiento de autenticación que habilita al usuario para

acceder a varios sistemas con una sola instancia de identificación

• OpenID is an open standard that allows users to be authenticated by certain co-operating sites (known as Relying Parties or RP) using a third party service, eliminating the need for webmasters to provide their own ad hoc systems and allowing users to consolidate their digital identities

– Users may create accounts with their preferred OpenID identity providers, and then use those accounts as the basis for signing on to any website which accepts OpenID authentication.

• An extension to the standard (the OpenID Attribute Exchange) facilitates the transfer of user attributes, such as name and gender, from the OpenID identity provider to the relying party

• OpenID authentication is now used and provided by several large websites. – Providers include Google, Yahoo!, PayPal, BBC, AOL, LiveJournal, MySpace, IBM, Steam, Sherdog,

Orange and VeriSign

• Facebook Connect is a good alternative to OpenID – Allows users to "connect" their Facebook identity, friends and privacy to any site.

Page 77: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

77

OAuth

• OAuth is an open standard for authorization

– Provides a method for clients to access server resources on behalf of a resource owner (such as a different client or an end-user).

– Provides a process for end-users to authorize third-party access to their server resources without sharing their credentials (typically, a username and password pair), using user-agent redirections.

• Complementary to OpenID

Page 79: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

79

Concepto AJAX

• AJAX (Asynchronous Javascript and XML) es una técnica de desarrollo web que genera aplicaciones web interactivas combinando: – XHTML y CSS para la presentación de información – Document Object Model (DOM) para visualizar dinámicamente e

interactuar con la información presentada – XML, XSLT para intercambiar y manipular datos

• JSON y JSON-RPC pueden ser alternativas a XML/XSLT

– XMLHttpRequest para recuperar datos asíncronamente – Javascript como nexo de unión de todas estas tecnologías

• AJAX es un patrón de diseño que propone un nuevo modelo de interacción Web combinando las tecnologías anteriores

• Los navegadores que soportan las tecnologías mencionadas son las plataformas en las que se ejecutan las aplicaciones AJAX (Firefox, Iexplorer, Opera, Chrome y Safari)

Page 80: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

80

La Web como Plataforma: Parte Cliente HTML 5.0

• El Web Hypertext Application Technology Working Group (WHATWG) ha dado lugar a la especificación de HTML 5.0 (www.w3.org/html/wg/html5):

– “The main area that has not been adequately addressed by HTML is Web Applications. This specification attempts to rectify this, while at the same time updating the HTML specs to address issues raised in the past few years”

• El enfoque predominante de WebApps basado en plug-ins debe quedar obsoleto

• HTML 5 proporciona un conjunto de nuevos elementos y atributos que reflejan el uso típico en portales Web modernos:

– Reemplazos semánticos para usos de elementos genéricos como (<div>) o (<span>) elements, por ejemplo <nav> (bloque de navegación de website) y <footer>.

– Otros elementos proveen nueva funcionalidad a través de una interfaz estándar, como los elementos <audio> o <video>

– Elimina elementos de HTML 4. Por ejemplo, elementos presentacionales como <font> y <center>, cuyos efectos son mejor logrados mediante CSS

– Hay un nuevo énfasis en la importancia de scripting DOM para comportamiento Web

Page 81: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

81

• Introduce nuevos elementos de estructura como: header, nav, article, section, aside, y footer.

– aside – ofrece soporte para barras laterales, datagrid, dialog, figure, Web Forms 2.0

• El gran potencial de HTML 5 viene de sus nuevas APIs para la autoría de aplicaciones basadas en la Web :

– El interfaz WebSocket permite crear sockets TCP/IP bidireccionales entre la aplicación y el servidor

– El servicio Server-sent Events permite a los servidores enviar eventos document-objet-model (DOM) a aplicaciones

– Nueva API de almacenamiento local que permite a los agentes de usuario guardar y recuperar más información de la que podría crearse como un conjunto de pares nombre-valor como en las cookies.

• HTML 5.0 incluye soporte explícito para la ejecución offline de aplicaciones web: la caché de aplicaciones y application cache manifest

• Nuevas características multimedia como gráficos 2D y APIs de control de audio y video

• Mecanismos para permitir el drag&drop

• Webworkers (multithreading) y geolocation

• CSS3 añade fondos y bordes, efectos de texto, múltiples columnas, transformaciones 2D y 3D, animaciones

• Ejemplos de uso: http://www.w3schools.com/html/

Características de HTML 5.0

Page 83: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

83

CSS3

• CSS is used to control the style and layout of Web pages.

– CSS3 is the latest standard for CSS.

• The old specification has been split into smaller pieces, and new ones are also added

– Selectors

– Box Model

– Backgrounds and Borders

– Text Effects

– Multiple Column Layout

– User Interface

– 2D/3D Transformations

– Animations

• Some good examples: http://www.w3schools.com/css/

Page 84: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

84

• JavaScript (sometimes shortened to JS) is a lightweight, interpreted, object-oriented language with first-class functions, most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or MongoDB

– It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.

• JavaScript uses syntax influenced by that of C

– JavaScript copies many names and naming conventions from Java, but the two languages are otherwise unrelated and have different semantics

• Netscape shipped it in 1995 as Mocha, renamed it to LifeScript then to JavaScript for marketing purpose.

– From 1997 submitted to Ecma International, as ECMAScript

• As of 2012, all modern browsers fully support ECMAScript 5.1

• Officially managed by Mozilla Foundation

– Current version is 1.8.5

Page 85: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

85

• jQuery is a lightweight, "write less, do more", JavaScript library.

– The purpose of jQuery is to make it much easier to use JavaScript on your website.

• jQuery seems to be the most popular and extendable JavaScript framework

– jQuery takes a lot of common tasks that requires many lines of JavaScript code to accomplish, and wraps it into methods that you can call with a single line of code.

• Simplifies a lot of the complicated things from JavaScript, like AJAX calls and DOM manipulation.

• The jQuery library contains the following features:

– HTML/DOM manipulation

– CSS manipulation

– HTML event methods

– Effects and animations

– AJAX

– Utilities

• Site: http://jquery.com/

Page 86: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

86

jQuery Syntax • With jQuery you select (query) HTML elements and perform "actions" on

them.

• Basic syntax is: $(selector).action()

– A $ sign to define/access jQuery

– A (selector) to "query (or find)" HTML elements

– A jQuery action()to be performed on the element(s)

• Examples:

– $(this).hide() – hides the current element.

– $("p").hide() – hides all <p> elements.

– $(".test").hide() – hides all elements with class="test".

– $("#test").hide() – hides the element with id="test"

• jQuery defines a document’s ready event to prevent any code from running before the document is finished loading (is ready).

$(document).ready(function(){

// jQuery methods go here...

});

• Demos: http://www.w3schools.com/jquery/

Page 87: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

87

jQuery UI

• jQuery UI is a widget and interaction library built on top of the jQuery JavaScript Library – It can be used to build highly interactive web applications

• The following site offers demos of all the controls provided in Iterations, Widgets or Effects – http://jqueryui.com/demos/

• jQuery UI's download builder allows you to choose the components you would like to download and get a custom version of the library for your project – http://jqueryui.com/download/

• The result will be a file named jquery-ui-1.8.24.custom.min.js

• The ThemeRoller app allows you to customize your controls: – http://jqueryui.com/themeroller/

• Documentation: http://docs.jquery.com/UI/Getting_Started

Page 88: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

88

jQuery Mobile UI • jQuery Mobile is to mobile what jQuery UI is to desktop.

– jQuery mobile is a mobile first framework and works just as well to help build apps for desktop browsers.

• Platform support can be reviewed at: http://jquerymobile.com/gbs/

• A Touch-Optimized Web Framework for Smartphones & Tablets

– A unified, HTML5-based user interface system for all popular mobile device platforms, built on the rock-solid jQuery and jQuery UI foundation

• Although you can use HTML and JavaScript to develop mobile optimized sites, you’ll quickly run into some serious problems…mainly that different devices and browsers treat your code differently.

– Latest stable version 1.2.0

– Site: http://jquerymobile.com and demos: http://view.jquerymobile.com/master/demos/

• All pages in jQuery Mobile are built on a foundation of clean, semantic HTML to ensure compatibility with pretty much any web-enabled device

– jQuery Mobile uses the custom data-* attribute to assign roles to elements.

• More info at: http://html5doctor.com/html5-custom-data-attributes/

Page 89: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

89

CSS3 Media Queries • Media queries, added in CSS3, let the presentation of content be tailored to a specific

range of output devices without having to change the content itself.

• Syntax:

– A media query consists of a media type and one or more expressions, involving media features, which resolve to either true or false.

– The result of the query is true if the media type specified in the media query matches the type of device the document is being displayed on and all expressions in the media query are true.

– When a media query is true, the corresponding style sheet or style rules are applied, following the normal cascading rules.

– A media type can be declared in the head of an HTML document using the "media" attribute inside of a <link> element.

– The value of the "media" attribute specifies on what device the linked document will be displayed

• braille, embossed, handheld, print, projection, screen, speech, tty, tv, all

• Example: – @media (min-width: 700px), handheld and (orientation:

landscape) { ... }

– @media screen and (min-width:500px) { ... }

• Documentation: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries

Page 91: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

91

Responsive Web Design (RWD)

• Responsive web design (RWD) is a web design approach aimed at crafting sites to provide an optimal viewing experience—easy reading and navigation with a minimum of resizing, panning, and scrolling—across a wide range of devices (from mobile phones to desktop computer monitors).

– Coined by Ethan Marcotte, to describe the practice of flowing layouts, page elements and images, by leveraging media queries to support various device display properties.

• A site designed with RWD adapts the layout to the viewing environment by using:

– The fluid grid concept calls for page element sizing to be in relative units like percentages, rather than absolute units like pixels or points.

– Flexible images are also sized in relative units, so as to prevent them from displaying outside their containing element.

– Media queries allow the page to use different CSS style rules based on characteristics of the device the site is being displayed on, most commonly the width of the browser.

– Server-side components (RESS) in conjunction with client-side ones such as media queries can produce faster-loading sites for access over cellular networks and also deliver richer functionality/usability avoiding some of the pitfalls of device-side-only solutions

Page 93: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

93

HTML5 vs. Native Apps

• Las aplicaciones nativas son mejores en experiencia de usuario, rendimiento y monetization

• Las HTML5 en portabilidad, base de desarrolladores, resolver problemas de fragmentación, etc.

Page 94: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

94

HTML5 for Hybrid Native Mobile Apps

• “Write once, run everywhere” this is the mantra of HTML5 technology.

• HTML5 is popular with software application programmers due to its "familiar" use of HTML, JavaScript and CSS – "consistent user experience" across all devices in any usage scenario

– BUT:

• Performance poorer, particularly when accessing device resources

• Uneven support of HTML5 across browsers

• Hybrid app approach where elements of native code are presented in an HTML5 wrapper. – Some frameworks: Sencha Touch, jQuery Mobile, The M-Project,

DaVinci Studio, Wink and PhoneGap

Page 95: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

95

PhoneGap / Apache Cordova

• PhoneGap es un framework para el desarrollo de aplicaciones móviles producido por Nitobi, y comprado posteriormente por Adobe Systems.

– Permite a los programadores desarrollar aplicaciones para dispositivos móviles utilizando herramientas genéricas tales como JavaScript, HTML5 y CSS3.

• Las aplicaciones resultantes son híbridas

– Maneja APIs que permiten tener acceso a elementos como el acelerómetro, cámara, contactos en el dispositivo, red, almacenamiento, notificaciones, etc.

• PhoneGap es una distribución de Apache Cordova

– La diferencia es que PhoneGap tien acceso a servicios de compilacion en la nube proporcionados por Adobe Creative Cloud

• https://build.phonegap.com/apps

– The use of web-based technologies leads many PhoneGap applications to run slower than native applications with similar functionality

• URL: http://cordova.apache.org/

Page 99: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

99

Node.js: Server-side JavaScript

• La mayoría de nosotros ha usado JavaScript como un mecanismo para añadir interactividad a las páginas web

• Con la aparición de jQuery, Prototype y otros nos hemos dado cuenta que es un lenguaje que sirve para algo más que hacer un window.open() – Sin embargo, todas estas innovaciones eran para JavaScript

como lenguaje en la parte cliente

• Node.js nace para permitir usar JavaScript también en la parte servidora – Sin embargo, tu enfoque de desarrollo tiene que cambiar

radicalmente • Va a estar basado en un enfoque asíncrono guiado por eventos

• URL: http://nodejs.org/

Page 100: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

100

Node.js: Server-side JavaScript

• JavaScript es un lenguaje completo con el que puedes hacer cualquier cosa que puedes hacer con otros lenguajes

• Node.js te permite ejecutar código en el back-end, fuera del navegador

• Node.js utiliza Google V8 VM, el mismo entorno de ejecución para JavaScript de Chrome

– Además incorpora varios módulos para no hacer todo de fuera, por tanto …

• Node.js = entorno de ejecución + librería

Page 101: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

101

Full-Stack JavaScript

• Todos los navegadores (Opera, Chrome, Firefox, Iexplorer) pelean por incorporar las últimas capacidades de HTML5

• La combinación HTML5+JavaScript se está configurando como “la plataforma de aplicaciones web” para el front-end e incluso back-end

– Con JavaScript se puede ya programar tanto la parte cliente que se ejecuta en el navegador como la parte servidora alojada en el servidor Web con frameworks como Node.js o motores de BBDD NoSQL como MongoDB

Page 102: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

102

Full-Stack JS Mobile Web App • Conversor de números romanos a Árabes

– Interfaz HTML5/CSS generada con jQueryMobile Codiqa

– Parte servidora realizada con Node.js

– Conversión en aplicación móvil con la ayuda de PhoneGap Build https://build.phonegap.com/

Page 103: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

103

Real-Time Web & Search Engines

• Servicios como Facebook o Twitter generan información en tiempo real

• Los buscadores actuales deben adaptarse para indexar este tipo de contenidos en tiempo real

– Real-time search

• Algunos ejemplos:

– Optimización Google Caffeine

Page 105: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

105

Real Time Web: Publish/Subscribe

• La web en tiempo real requiere un comportamiento PUSH de la web en vez de PULL como hasta ahora

• Diferentes soluciones están apareciendo en el mercado para resolver esto: – Comet – a web application model in which a long-held HTTP request

allows a web server to push data to a browser, without the browser explicitly requesting it (http://en.wikipedia.org/wiki/Comet_(programming))

– PubSubHubbub – A simple, open, server-to-server web-hook-based pubsub (publish/subscribe) protocol as an extension to Atom and RSS (http://code.google.com/p/pubsubhubbub/)

Page 106: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

106

PubSubHubbub

• PubSubHubbub is an open protocol for distributed publish/subscribe communication on the Internet. – Initially designed to extend the Atom (and RSS) protocols for

data feeds can be applied to any data type(i.e text, pictures, audio, video) as long as its accessible via HTTP

• Aims to provide near-instant notifications of change updates, which would improve on the typical situation where a client periodically polls the feed server at some arbitrary interval. – Pushed HTTP notifications instead of requiring clients to poll

whole resources to monitor change

• PubSubHubbub is used by many content providers, including all blogs served by blogger.com and WordPress.com, news sites including CNN and Fox news.

Page 107: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

107

PubSubHubbub

Page 108: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

108

Comet • Comet is a web application model in which a long-

held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it

– Umbrella term, encompassing multiple techniques for achieving this interaction.

• Relies on features included by default in browsers, such as JavaScript, rather than on non-default plugins

• Known by several other names, including Ajax Push, Reverse Ajax, Two-way-web, HTTP Streaming, and HTTP server push among others

• Attempts to eliminate the limitations of the page-by-page web model and traditional polling by offering real-time interaction, using a persistent or long-lasting HTTP connection between the server and the client

– The biggest hurdle is the HTTP 1.1 specification, which states that a browser should not have more than two simultaneous connections with a web server

• May be worked around by creating a distinct hostname for real-time information (domain sharding)

• Specific methods of implementing Comet fall into two major categories: streaming and long polling.

Page 109: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

109

HTML5 Server-sent events • HTML5 Server-Sent Events allow a web page to get updates from a server.

• A server-sent event is when a web page automatically gets updates from a server.

• Examples: Facebook/Twitter updates, stock price updates, news feeds, sport results, etc.

• The EventSource object is used to receive server-sent event notifications: var source=new EventSource("demo_sse.php");

source.onmessage=function(event) {

document.getElementById("result").innerHTML+=event.data + "<br>";

};

• You need a server capable of sending data updates

– The server-side event stream syntax is simple. Set the "Content-Type" header to "text/event-stream".

<?php

header('Content-Type: text/event-stream');

header('Cache-Control: no-cache');

$time = date('r');

echo "data: The server time is: {$time}\n\n";

flush();

?>

• Demo: http://www.w3schools.com/html/html5_serversentevents.asp

Page 110: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

110

WebSocket

• WebSocket is a web technology providing full-duplex communications channels over a single TCP connection

– standardized by the IETF as RFC 6455 in 2011

• WebSocket is designed to be implemented in web browsers and web servers • The WebSocket Protocol is an independent TCP-based protocol.

– Its only relationship to HTTP is that its handshake is interpreted by HTTP servers as an Upgrade request

• Makes possible more interaction between a browser and a web site, facilitating live content and the creation of real-time games

– standardized way for the server to send content to the browser without being solicited by the client

• Communications are done over TCP port number 80, which is of benefit for those environments which block non-standard Internet connections using a firewall

– Supported in several browsers including Google Chrome, Internet Explorer, Firefox, Safari and Opera

• It is expected that HTML5 WebSockets will replace the existing XHR approaches as well as Comet services by a new flexible and ultra high speed bidirectional TCP socket communication technology.

Page 111: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

111

WebSocket Features • Technical details about WebSocket

– Uses WebSocket protocol instead of HTTP – True full duplex communication channel; UTF8 strings and binary data can be

sent in any direction at the same time. – It is not a raw TCP socket – Connection established by "upgrading" (handshake) from HTTP to WebSocket

protocol – Runs via port 80/443 and is firewall/proxy friendly – Supports WebSocket ws:// and secure WebSocket wss://

• Benefits of using WebSockets – Reduces network traffic. each message has 2 bytes of overhead – Low latency – No polling overhead – WebSocket connections are terminated in the same rich application space

provided by HTTP servers, thus a WebSocket enabled web application can be developed in a single environment rather than by collaboration between a HTTP server and a separate WebSocket server

Page 112: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

112

WebSocket in detail

• Differs from TCP in that it enables a stream of messages instead of a stream of bytes

– Before WebSocket, port 80 full-duplex communication was attainable using Comet channels

• WebSocket protocol handshake: – Client request: GET /mychat HTTP/1.1

Host: server.example.com

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

Sec-WebSocket-Protocol: chat

Sec-WebSocket-Version: 13

Origin: http://example.com

– Server response: HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=

Sec-WebSocket-Protocol: chat

Page 114: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

114

A Mash-up …

Page 115: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

115

IFTTT

• IFTTT is a service that lets you create powerful connections with one simple statement: – IFTTT is pronounced like “gift” without the “g.”

• Channels are the basic building blocks of IFTTT: Facebook, Evernote, Email, Weather, LinkedIn

• Each channel has its own Triggers and Actions: – The this part of a Recipe is a Trigger, e.g. “I’m tagged in a photo on

Facebook”

– The that part of a Recipe is an Action, e.g. “send me a text message”

– Pieces of data from a Trigger are called Ingredients

• Demos: https://ifttt.com/myrecipes/personal

Page 116: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

116

SmartThings • Allows users to control everything surrounding them in their life on their

smartphone.

– Lights, air conditioning, even your house’s security system.

• Creates a service out of all of your existing hardware

– You can connect them to each other using real world apps

Page 117: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

117

Atooma

• Es como un IFTTT pero para SmartPhones

• Permite definir eventos condicionales (IF) que lanzan automáticamente tareas (DO) asociadas actividades que pueden ser detectadas por tu móvil (hora, localización, estado de la batería, etc.)

– URL: http://www.atooma.com/

Page 118: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

118

The Programmable World

• Los siguientes pasos para alcanzar la quimera de Programmable World:

1. Transformar los objetos cotidianos en inteligentes

2. Conectar estos objetos entre ellos y hacer que “conversen”, algo de lo que productos como SmartThings están tratando

3. Construir aplicaciones basadas en esta conectividad, interconectándolas con datos externos para predecir, por ejemplo, patrones de tiempo o consumo eléctrico..

• Soluciones como IFTTT facilitan esa conectividad entre diferentes canales de datos

Page 119: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

119

El Futuro del Desarrollo Software

Page 120: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

120

Latest Software Development Methodologies

Continuous integration

Test-driven development SCRUM Agile Methodology

Page 121: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

121

Infraestructura Virtualizada: Cloud Computing

Un paradigma de computación emergente donde los datos y servicios residen en centros de datos muy escalables que pueden ser accedidos ubicuamente desde cualquier dispositivo conectado a Internet1

Merrill Lynch: Cloud computing market opportunity by 2011 = $95bn in business and

productivity apps + $65bn in online advertising =

$160bn

(1) Source: IBM

Page 122: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

122

Cloud Computing es …

• … capacidad computacional y almacenamiento virtualizada expuesta mediante infraestructura agnóstica a la plataforma y accedida por Internet

– Recursos IT compartidos en demanda, creados y eliminados eficientemente y de modo escalable a través de una variedad de interfaces programáticos facturados en base a su uso

Page 123: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

123

The “Cloud” = 10X Improvement

• Fácil de usar: hazlo tu mismo remotamente de cualquier lugar en cualquier momento

• Escalable: controla tu infraestructura con tu aplicación

• Riesgo: nada que comprar, cancela inmediatamente

• Robustez: basado en gran hardware empresarial

• Coste: paga sólo por lo que uses

Page 124: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

124

Evolución hacia Cloud Computing

• La coexistencia y limitaciones de cluster computing y supercomputing dieron lugar a grid computing

• De grid computing progresamos hacia utility computing, i.e. Servicios computacionales empaquetados como agua, electricidad, etc.

• Esto derivó en Cloud Computing, es decir, todo como servicio (XaaS) :

• Plataforma como Servicio

• Software como Servicio

• Infraestructura como Servicio

Page 125: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

125

Evolución de Tecnologías de Cloud Computing

• Maduración de tecnología de virtualización

• La virtualización permite nubes de computación

• Las nubes de computación demandan nubes de almacenamiento

• Las nubes de almacenamiento y computación crean infraestructura cloud

• La infraestructura cloud da lugar a plataformas y aplicaciones cloud

• Diferentes tipos de cloud dan lugar a Cloud Aggregators

• Nichos de requisitos dan lugar a Cloud Extenders

Page 126: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

126

Características de Cloud

Tipos de despliegue • Cloud privada

– Propiedad de o alquilada por una empresa (centros de datos,…)

• Cloud comunitaria

– Infraestructura compartida por una comunidad específica

• Cloud pública

– Vendida al público, gran escala (ec2, S3,…)

• Cloud híbrida

– Composición de dos o más clouds

Manifestaciones • Cloud Software as a Service (SaaS)

– Uso de la aplicación del proveedor sobre la red, e.j., Salesforce.com,…

• Cloud Platform as a Service (PaaS)

– Despliega aplicaciones creadas por los clientes a la nube, e.j. Google App Engine, Microsoft Azure, …

• Cloud Infrastructure as a Service (IaaS)

– Alquilar procesamiento, almacenamiento, capacidad de red y otros recursos computacionales e.j., EC2 – Elastic Compute Cloud, S3 – Simple Storage Service, Simple DB,…

Page 127: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

127

Arquitectura Cloud Computing

Page 128: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

128

Aplicaciones Cloud

• Corresponden con lo que se denomina como SaaS

• Manifestación de cloud más popular

• Ejemplos: SalesForce, Gmail, Yahoo! Mail, rememberthemilk, doodle, Google Docs, DropBox, picnik, Panda Cloud Antivirus, scribd, slideshare

• Ventajas: Libre, Fácil, Adopción de consumo

• Desventajas: funcionalidad limitada, no hay control de acceso a la tecnología subyacente

Page 129: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

129

Plataformas Cloud

• Contenedores de aplicaciones

• Entornos cerrados

• Ejemplos: Google App Engine, Microsoft Azure, Heroku, Mosso, Engine Yard, Joyent o Force.com

• Ventajas: buenas para desarrolladores, más control que en las aplicaciones cloud, configuradas estrechamente

• Desventajas: restringidas a lo que está disponible, otras dependencias, dependencia tecnológica

Page 130: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

130

Infraestructura Cloud

• Proveen nubes de computación y almacenamiento

• Ofrecen capas de virtualización (hardware/software)

• Ejemplos: Amazon EC2, GoGrid, Amazon S3, Nirvanix, Linode, Arsys Cloud Flexible, EyeOS

• Ventajas: control completo del entorno y la infraestructura

• Desventajas: precio premium, competencia limitada

Page 131: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

131

Amazon Web Services (AWS)

• AWS proporciona una infraestructura de servicios elástica donde alojar computación, almacenamiento o sistemas empresariales

– Amazon Elastic Cloud (EC2) – permite configurar y ejecutar un Amazon Machine Instance (AMI) – servidores en demanda

– Amazon Simple Storage Service (S3) – permite guardar y recuperar datos en la nube

– Amazon SimpleDB – proporciona la funcionalidad de una base de datos sobre S3 – basada en pares clave-valor

– Amazon Simple Queue Service (SQS) – servicio de mensajería para encolar tareas y mensajes

– Amazon Relational Database Service (RDS) – servicio web para crear, operar y escalar una base de datos en la nube

– Amazon CloudFront – copias de tus objetos más populares son cacheados en una red de nodos alrededor del mundo

– …

• Documentación: http://aws.amazon.com/documentation/

Page 132: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

132

Amazon Web Services (AWS)

Page 133: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

133

Amazon Web Services (AWS)

Page 134: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

134

Amazon Elastic Compute Cloud: EC2 • Permite ejecutar varios servidores Linux o Windows virtuales en demanda,

facilitando tantos ordenadores como necesites para procesar tus datos o ejecutar una aplicación

• Otorga acceso root al sistema operativo de cada servidor, un cortafuegos para gestionar el acceso a la red y la libertad para instalar cualquier software

• Una vez configurado un servidor adecuadamente, se guarda como Amazon Machine Image (AMI) que puede ser lanzada para crear máquinas virtuales en demanda

• La EC2 API (Query o SOAP) ofrece funcionalidad para empezar y parar instancias de servidor, aplicar permisos de acceso y red o gestionar tus imágenes de servidor.

– Cada servidor individual se gestiona usando herramientas Linux o Windows sobre una sesión de shell segura.

• Se factura en función de los recursos consumidos : CPU y datos transferidos

• Más información en: http://aws.amazon.com/products/ec2

Page 135: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

135

Amazon Simple Storage Service: S3

• Ofrece espacio de almacenamiento seguro para cualquier tipo de datos en los data centers de Amazon – Es una alternativa a construir, mantener y utilizar tus propios sistemas

de almacenamiento

– No tiene límites sobre cuánta información, por cuánto tiempo y con qué ancho de banda puede transferirse.

• Ofrece una simple API agnóstica a la información a guardar – Depende de ti qué datos y qué representación interna tienen

– El modelo de datos interno consta de dos tipos de recursos de almacenamiento:

• Objects: guardan datos y metadatos

• Buckets: contenedores que pueden contener infinidad de objetos

– Incorpora mecanismos de control de acceso (ACL) que pueden aplicarse a objetos y buckets

Page 136: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

136

Amazon Simple Storage Service: S3

• Los recursos en S3 se identifican mediante URIs:

– http://s3.amazonaws.com/bucket-name/object-name

– https://s3-eu-west-1.amazonaws.com/dipinaimages/image1.png

• Algunas características de su arquitectura son:

– Los objetos S3 no pueden ser manipulados como ficheros estándar

– Los cambios sobre ellos tardan en propagarse

– Las peticiones a objetos pueden fallar ocasionalmente

– Permite guardar versiones

– Se deben resolver las direcciones IP de los nombres DNS de S3 periódicamente

– Se pueden guardar infinitos objetos de hasta 5GB en tamaño

– Se paga por almacenamiento, transferencia y operaciones

• Algunos posibles usos de S3:

– Compartir grandes ficheros

– Como repositorio de back-up de tus ficheros

– Sistema de ficheros mapeado sobre S3 (ElasticDrive)

• Más información en:

– http://aws.amazon.com/s3/,

Page 137: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

137

Amazon CloudFront

• Mientras que en Amazon S3 se guardan contenidos (ficheros) con CloudFront se garantiza que tus objetos en S3 buckets son servidos rápidamente.

– Lo hace copiando los ficheros en buckets S3 a diferentes edge locations que sirven contenidos a los usuarios finales.

– Tales edge locations se distribuyen por el planeta asegurándose que los contenidos son servidos del servidor Amazon más cercano

• Es ventajoso porque el 80-90% del tiempo invertido esperando a una respuesta web se debe a la descarga de los componentes de la página: imágenes, hojas de estilo, scripts, Flash, etc.

– La clave es colocar la parte estática de nuestra web en una red de distribución de contenidos como Akamai.

• Con CloudFront hay que pagar las transferencias desde S3 a las localizaciones de los bordes.

• Más información en: http://aws.amazon.com/cloudfront/

Page 138: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

138

Amazon SimpleDB

• Almacén de claves/valor: trabaja con los conceptos domain, item y attribute

• Diseñado para minimizar la complejidad y el coste de mantenimiento de tus datos

• Guarda pequeñas piezas de información textual en una estructura de base de datos sencilla simple de gestionar, modificar y buscar

– Ofrece su propio lenguaje de consultas de datos

– Ejemplos de consultas sencillas: • ['Date' > '2007-07-01' and Not 'Date' starts-with '2007-07-04']

• ['Suburb' = 'Newtown'] or['Price' < '100000'] intersection ['Bedrooms' =

'3']

• Si tus aplicaciones están basadas en bases de datos simples, este servicio puede reemplazar a tu RDBMS dejándote con una pieza de infraestructura menos que comprar y mantener

• No exige la especificación de un schema previo, tú puedes modificar la estructura y contenidos de tu base de datos cuando quieras

• Indexa cada pieza almacenada

• Guarda tu información de modo seguro, y redundante en la red de data centers de Amazon

• Pagas por almacenamiento, datos transferidos y operaciones

• Más información en: http://aws.amazon.com/simpledb/

Page 139: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

139

Amazon Relational Database Service (Amazon RDS)

• Es un servicio web que facilita la instalación, operación y escalabilidad de una base de datos relacional en la nube

– Te da completo acceso a las capacidades de una base de datos MySQL

• Las aplicaciones que ya funcionan con MySQL también lo harán con Amazon RDS

– Amazon RDS modifica el software MySQL para programar la creación de back-ups o garantizar la escalabilidad, todo ello controlado a través de una API sencilla.

• Solamente se paga por los recursos utilizados.

• Más información en: http://aws.amazon.com/rds

• Herramienta: Amazon RDS Command Line Toolkit – http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2928&catego

ryID=294

• Tutorial en: http://docs.amazonwebservices.com/AmazonRDS/latest/GettingStartedGuide/

Page 140: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

140

Amazon SQS

• Implementa el servicio de mensajería basado en colas

• Los mensajes son siempre strings

• Útil para crear trabajos asíncronos y descargar de actividad a un web server

• Se paga por mensajes y datos transferidos

• Más información en: http://aws.amazon.com/sqs

Page 141: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

141

Registro y Documentación

• Se puede ver en detalle cómo acceder a AWS:

– http://www.slideshare.net/ronaldbradford/getting-started-with-mysql-in-amazon-web-services?src=related_normal&rel=3462501

– http://docs.amazonwebservices.com/AWSEC2/2009-11-30/GettingStartedGuide/

– http://aws.amazon.com/free/ (Free usage tier)

Page 142: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

142

Amazon AWS Console

Page 143: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

143

Calculadora de Costes en Amazon

• La siguiente herramienta te permite estimar costes de consumo de servicios en Amazon:

– http://calculator.s3.amazonaws.com/calc5.html

• Además, desde la página http://aws.amazon.com/account, se puede acceder al menú “Account Activity” que ilustra el gasto actual incurrido.

Page 144: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

144

APIs Disponibles por Servicio AWS

Service REST API Query API SOAP API

S3 Yes No Yes

EC2 No Yes Yes

SQS Yes Yes Yes

FPS No Yes Yes

SimpleDB No Yes Yes

RDS No Yes Yes

Page 145: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

145

Usando AWS SDK for Java

• Se puede obtener documentación detallada en: – http://docs.amazonwebservices.com/AWSJavaSDK/latest/javadoc/

• Antes de empezar, debes registrarte en cada servicio que quieras utilizar.

• Necesitas obtener tus credenciales de seguridad de: http://aws.amazon.com/security-credentials – Previamente puede que tengas que firmar en

http://aws.amazon.com/products

– Los credenciales son un par de claves públicas y privadas que contienen:

• Access Key ID

• Secret Access Key

Page 146: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

146

Caso práctico de Álbum de Fotos

• Solución Cloud con: S3, SDB, SQS y CloudFront

• Ejemplo descrito en: – http://www.slideshare.net/javasymposium/developing-with-amazon-

web-services-highly-scalable-services-that-are-someone-elses-headache-to-maintain-and-develop

Page 147: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

147

Google Cloud Platform

• Consiste de los siguientes componentes: – Google App Engine – platform as a service that uses familiar technologies to

build and host applications on the same infrastructure used at Google. – Google Compute Engine – an infrastructure as a service that lets you run your

large-scale computing workloads on Linux virtual machines hosted on Google's infrastructure.

• https://cloud.google.com/products/compute-engine

– Google Cloud Storage – store, access and manage your data on Google’s storage infrastructure.

• https://developers.google.com/storage/docs/hellogooglestorage

– Google BigQuery – analyze Big Data in the cloud using SQL and get real-time business insights in seconds using Google BigQuery. Use a fully-managed data analysis service with no servers to install or maintain

• https://developers.google.com/bigquery/sign-up

– Google Cloud SQL – run MySQL databases in Google's cloud. Use a fully managed service to maintain and administer your databases.

• https://cloud.google.com/products/cloud-sql

– Google Cloud Datastore – fully managed, NoSQL, schemaless database for storing non-relational data.

• https://developers.google.com/datastore/

Page 148: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

148

• Google App Engine es una herramienta para el alojamiento de aplicaciones web escalables sobre la infraestructura de Google

– Su misión es permitir al desarrollador web crear fácilmente aplicaciones web escalables sin ser un experto en sistemas

• Aporta las siguientes características a los desarrolladores:

– Limita la responsabilidad del programador al desarrollo y primer despliegue

• Google App Engine provee recursos computacionales dinámicamente según son necesarios

– Toma control de los picos de tráfico – si nuestro portal crece en popularidad no es necesario actualizar nuestra infraestructura (servidores, BBDD)

• Ofrece replicación y balanceo de carga automática apoyado en componentes como Bigtable

– Fácilmente integrable con otros servicios de Google – los desarrolladores pueden hacer uso de componentes existentes y la librería de APIs de Google (email, autenticación, pagos, etc.)

Ejemplo Plataforma Cloud: Google App Engine

Page 149: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

149

• Ofrece una plataforma completa para el alojamiento y escalado automático de aplicaciones, consistiendo en:

– Servidores de aplicaciones Python y Java

– La base de datos BigTable

– El sistema de ficheros GFS

• Como desarrollador simplemente tienes que subir tu código Python o Java compilado a Google, lanzar la aplicación y monitorizar el uso y otras métricas

• Google App Engine incluye la librería estándar de Python 2.7 y soporta Java 7

– No todas las acciones se permiten (acceso a ficheros, llamadas al SO, algunas llamadas de red)

• Se ejecuta en un entorno restringido para permitir que las aplicaciones escalen

• Ejemplo: – https://appengine.google.com

– http://enpresadigitala.appspot.com/encuestas

– http://code.google.com/intl/en/appengine/docs/

Google App Engine: Características

Page 150: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

150

Page 151: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

151

App Engine para Java

• Crea aplicaciones web a través de tecnologías estándar de Java y las ejecuta en la infraestructura escalable Google – Usa JVM Java 7, interfaz de servlets Java y la compatibilidad de

interfaces estándar como JDO, JPA, JavaMail y JCache

• App Engine utiliza el estándar Java Servlet para aplicaciones web – JVM se ejecuta en un entorno seguro de la "zona de pruebas" para

aislar tu aplicación por servicio y seguridad.

• Una aplicación en GAE sólo pueda realizar acciones que no interfieran con el rendimiento ni con la escalabilidad de otras aplicaciones.

Page 152: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

152

Funcionalidad de AppEngine for Java

• App Engine proporciona un conjunto de servicios escalables que pueden utilizar las aplicaciones para:

– Almacenar datos persistentes. En Java, el almacén de datos admite 2 interfaces Java estándar: los objetos de datos Java (JDO) 2.3 y el API de persistencia de Java (JPA) 1.0.

– Acceder a recursos en la red. A través de la URL Fectch API.

– Cachear información. Memcache de App Engine proporciona un almacenamiento en caché distribuido, transitorio y rápido de los resultados de cálculos y consultas de almacén de datos. La interfaz Java implementa JCache (JSR 107).

– Enviar email. Da soporte de JavaMail para el envío de correos

– Procesar imágenes. A través de la Images Java API, permite a las aplicaciones transformar y manipular datos de imágenes en varios formatos.

– Gestionar usuarios. A través de la Users Java API permite utilizar Cuentas de Google para la autenticación del usuario.

– Lanzar tareas planificadas o en background. Mediante la Task Queue Java API y la gestión de tareas por Cron.

Page 153: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

153

Instalación de AppEngine for Java

1. Descargar el fichero de:

– http://code.google.com/intl/es/appengine/downloads.html#Google_App_Engine_SDK_for_Java

2. Descomprimir el fichero .zip

3. Crear una variable de entorno APPENGINE_JAVA_SDK que apunte al directorio raíz de instalación de la SDK

4. Incluir el directorio %APPENGINE_JAVA_SDK%\bin en la variable de entorno PATH

Page 154: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

154

Guardando datos en GAE

• App Engine ofrece diferentes opciones para guardar datos:

– App Engine Datastore ofrece un almacén de objetos sin esquema NoSQL, con un motor de consultas y transacciones atómicas

– Google Cloud SQL provee una base de datos relacional SQL para tu aplicación sobre App engine, basada en MySQL

• https://developers.google.com/cloud-sql/

– Google Cloud Storage provee almacenamiento para objetos y ficheros de hasta terabytes accesibles desde aplicaciones Python y Java

• https://developers.google.com/storage/

Page 155: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

155

Pasos para crear una Aplicación con Google App Engine para Java

1. Crear el proyecto de la aplicación

2. Crear la clase servlet

3. Crear el fichero de despliegue de la aplicación: web.xml

4. Crear el archivo appengine-web.xml

5. Ejecutar el proyecto

6. Probar el proyecto: http://localhost:8080/<nombre-aplicación>

7. Subir la aplicación al dominio appspot.com

Page 156: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

156

Paso 1: Creando la estructura del proyecto • Dos opciones:

– Usar el plug-in para Eclipse: http://code.google.com/intl/es/appengine/docs/java/tools/eclipse.html

– Usar la plantilla de proyecto disponible en %APP_ENGINE_HOME%\demos\new_project_template

• Las aplicaciones Java de App Engine utilizan el API Java Servlet para interactuar con el servidor web.

– Un servlet HTTP es una clase de aplicación que puede procesar y responder solicitudes web. Esta clase amplía la clase javax.servlet.GenericServlet o a la clase javax.servlet.http.HttpServlet.

• La estructura del directorio de trabajo será la siguiente: Guestbook/

src/

...Java source code...

META-INF/

...other configuration...

war/

...JSPs, images, data files...

WEB-INF/

...app configuration...

classes/

...compiled classes...

lib/

...JARs for libraries...

Page 157: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

157

Paso 2: Creando la clase Servlet

• Crear en el directorio src/guestbook/ un fichero denominado GuestbookServlet.java con el siguiente contenido:

package guestbook;

import java.io.IOException;

import javax.servlet.http.*;

public class GuestbookServlet extends HttpServlet {

public void doGet(HttpServletRequest req,

HttpServletResponse resp) throws IOException {

resp.setContentType("text/plain");

resp.getWriter().println("Hello, world");

}

}

Page 158: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

158

Paso 3: Creando el fichero de despliegue – web.xml

• Cuando el servidor web recibe una solicitud, decide qué clase de servlet ejecutar mediante un archivo de configuración conocido como "descriptor de implementación de la aplicación web".

– Este archivo se denomina web.xml y se ubica en el directorio war/WEB-INF/ del directorio que contiene los ficheros de una aplicación web en Java

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE web-app PUBLIC

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">

<servlet>

<servlet-name>guestbook</servlet-name>

<servlet-class>guestbook.GuestbookServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>guestbook</servlet-name>

<url-pattern>/guestbook</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

</welcome-file-list>

</web-app>

Page 159: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

159

Paso 4: Crear el fichero de configuración de aplicación GAE:

appengine-web.xml

• App Engine necesita un archivo de configuración adicional para poder desarrollar y ejecutar la aplicación, denominado appengine-web.xml

– Se ubica en WEB-INF/ junto a web.xml.

– Incluye la ID registrada de la aplicación, el número de versión de la aplicación y listas de archivos que se deben tratar como archivos estáticos (por ejemplo, imágenes y CSS) y archivos de recursos (por ejemplo, JSP y otros datos de aplicación).

• El directorio war/WEB-INF/ incluye un archivo denominado appengine-web.xml que contiene lo siguiente:

<?xml version="1.0" encoding="utf-8"?>

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">

<application>librocitas</application>

<version>1</version>

</appengine-web-app>

Page 160: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

160

Paso 5: Ejecución del Proyecto

• El SDK de App Engine incluye un servidor web de pruebas para depurar tu aplicación.

• El servidor simula los servicios y el entorno App Engine, que incluyen restricciones en la zona de pruebas, el almacén de datos y los servicios.

• Con el fichero ant ejecuta: ant runserver

– Puedes detenerlo con Ctrl-C

Page 161: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

161

Paso 6: Subiendo la aplicación

1. Puedes crear y administrar aplicaciones web App Engine con la consola de administración de App Engine a través de la siguiente URL: http://appengine.google.com/

2. Para crear una nueva aplicación, haz clic en el botón "Create an Application" (Crear aplicación)

3. Edita el archivo appengine-web.xml y, a continuación, cambia el valor del elemento <application> para que sea la ID registrada de tu aplicación (librocitas).

4. Ejecuta el siguiente comando en línea de comandos para subir la aplicación: $ appcfg update www

5. Vete a: http://librocitas.appspot.com/

Page 162: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

162

Registrando la aplicación

Page 163: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

163

Verificación de tu cuenta

Page 164: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

164

Verificación de tu Cuenta

Page 165: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

165

Registrando la aplicación en appengine.google.com

Page 166: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

166

Registrando la applicación

Page 167: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

167

Características Avanzadas de Google App Engine

• Acceso a datos mediante JDO – http://code.google.com/appengine/docs/java/gettingstarted/usingdatastore.html

• Gestión de usuarios – http://code.google.com/appengine/docs/java/users/

• Planificación de tareas con Cron for Java

– http://code.google.com/appengine/docs/java/config/cron.html

• Memcache Java API

– http://code.google.com/appengine/docs/java/memcache/overview.html

• URL Fech Java API

– http://code.google.com/appengine/docs/java/urlfetch/overview.html

• Envío de mensajes instantáneos con XMPP e email

– http://code.google.com/appengine/docs/java/xmpp/overview.html

• Colas de tareas – permite ejecutar asíncronamente tareas

– http://code.google.com/appengine/docs/java/taskqueue/overview.html

Page 168: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

168

Google App Engine vs. Amazon Web Services

Page 169: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

169

Mobile Cloud Computing

• Combinación e integración de aplicaciones móviles con front-end HTML5 con back-end en la Nube: ubicuidad, buen rendimiento, etc.

Page 170: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

170

Web Semántica

• Problema de la Web Actual: – El significado de la web no es comprensible por máquinas

• Web Semántica crea un medio universal de intercambio de información, aportando semántica a los documentos en la web – Añade significado comprensible por ordenadores a la Web

– Usa técnicas inteligentes que explotan esa semántica

– Liderada por Tim Berners-Lee del W3C

• Misión “turning existing web content into machine-readable content“

Page 171: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

171

La Pila de la Web Semántica

• La Web Semántica está compuesta de: – XML, sintaxis para documentos estructurados

– XML Schema, restringe la estructura de documentos XML

– RDF es un modelo de datos que hace referencia a objetos y sus relaciones

– RDF Schema, vocabulario para definir propiedades y clases de recursos RDF

– OWL, añade más vocabulario que RDFS, relaciones entre clases, cardinalidad, igualdad …

Page 172: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

172

RDF: Recurso, Propiedad y Valor

• RDF identifica conceptos usando identificadores Web (URIs), y describe recursos con propiedades y valores de las mismas

• Definiciones: – Un Recurso es cualquier cosa que puede tener una URI, como por

ejemplo "http://www.w3schools.com/RDF"

– Una Propiedad es un Recurso que tiene un nombre, como “autor" o “páginaweb"

– Un Valor de propiedad es el valor de una Propiedad, tal como “Diego Ipiña" o "http://www.w3schools.com" (un valor de propiedad puede corresponder a un recurso)

Page 173: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

173

Resource Description Framework (RDF)

• Un grafo RDF crea una web de conceptos distribuidos – Realiza aserciones sobre relaciones lógicas entre entidades

– La información en RDF puede ligarse con grafos en otros lugares

– Mediante software se pueden realizar inferencias

– Existen lenguajes de consulta sobre triple stores como SPARQL

• Mediante RDF hacemos que la información sea procesable por máquinas – Agentes software pueden guardar, intercambiar y utilizar metadatos

sobre recursos en la web

• Ontología jerarquía de términos a utilizar en etiquetado de recursos formalización de los metadatos de un domino/s

Page 174: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

174

Formatos de Serialización RDF • Formato RDF/XML:

1: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

2: xmlns:dc="http://purl.org/dc/elements/1.1/"

3: xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos/"

4: xmlns:edu="http://www.example.org/">

5: <rdf:Description rdf:about="http://www.deusto.es">

6: <geo:lat>43.270737</geo:lat>

7: <geo:long>-2.939637</geo:long>

8: <edu:hasFaculty>

9: <rdf:Bag>

10: <rdf:li rdf:resource="http://www.eside.deusto.es" dc:title="Facultad de Ingeniería"/>

11: <rdf:li rdf:resource="http://www.lacomercial.deusto.es" dc:title="Facultad de Empresariales"/>

12: </rdf:Bag>

13: </edu:hasFaculty>

14: </rdf:Description>

15: </rdf:RDF>

• Formato: N3/Turtle: 1: @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

2: @prefix dc: <http://purl.org/dc/elements/1.1/> .

3: @prefix geo: <http://www. w3.org/2003/01/geo/wgs84_pos#> .

4: @prefix edu: <http://www.example.org/> .

5: <http://www.deusto.es> geo:lat "43.270737" ; geo:long "-2.939637" .

6: <http://www.eside.deusto.es> dc:title “Facultad de Ingeniería" .

7: <http://www.deusto.es> edu:hasFaculty <http://www.eside.deusto.es> .

Page 175: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

175

Ejemplo de Grafo RDF

• Generador de grafos RFD: http://www.w3.org/RDF/Validator/

• Conversor entre formatos RDF: http://www.mindswap.org/2002/rdfconvert/

Page 176: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

176

¿Qué es una Ontología?

• Una ontología define conceptos de un dominio y relaciones entre ellos

• Los bloques básicos que componen el diseño de una ontología son: – clases o conceptos

– propiedades de cada concepto describiendo varias características y atributos del concepto

– restricciones sobre las propiedades

• Una ontología junto con las instancias de sus clases individuales constituyen un knowledge base

Page 177: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

177

Características del Ontology Web Language (OWL)

• Una ontología difiere de un esquema XML en que es una representación de conocimiento, no un formato de mensaje

• La principal ventaja de una ontología escrita en OWL es que hay disponibles herramientas que pueden razonar sobre ella

• La sintaxis de intercambio de información en OWL es normalmente RDF/XML.

• OWL es una extensión del vocabulario de RDF • Las ontologías Web son distribuidas • Pueden ser importadas y extendidas para crear ontologías

derivadas • Se pueden alinear unas ontologías con otras

Page 178: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

178

Ejemplo OWL Ontology Reasoning • Supongamos el siguiente modelo RDF en N3:

@prefix foaf: <http://xmlns.com/foaf/0.1/> . <http://www.ipina.org/> foaf:author

<http://www.ipina.org/osgi/> . <http://www.deusto.es/dipina/> foaf:author

<http://www.deusto.es/dipina/ajax/> . <http://www.eside.deusto.es/dipina/> foaf:author

<http://paginaspesonales.deusto.es/dipina/> .

• Aunque pertenecen al mismo autor, no están relacionadas entre ellas, con la ayuda de OWL podemos mapear estas URIs @prefix owl: <http://www.w3.org/2002/07/owl#> . <http://www.deusto.es/dipina/> owl:sameAs

<http://www.ipina.org/> . <http://www.eside.deusto.es/dipina/> owl:sameAs

<http://www.ipina.org/> .

• Si mezclamos ambos modelos y ejecutamos un razonador podríamos responder a “dime todo lo que ha escrito “<http://www.ipina.org>”: <http://www.ipina.org/osgi/>,<http://www.deusto.es/dipina/aja

x/> y <http://paginaspesonales.deusto.es/dipina/>

Page 179: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

179

SPARQL

• SPARQL (http://www.w3.org/TR/rdf-sparql-query/) permite la consulta de grafos RDF a través de un lenguaje sencillo

• SPARQL es idóneo para extraer y consultar información mantenida por aplicaciones, servicios o repositorios ad-hoc de terceras partes expresados en RDF

• Consta de 3 elementos: – Lenguaje de consultas.

– Mecanismo para transmitir una consulta a un servicio de procesamiento de consultas remoto

– Formato XML en el que devolver los resultados

Page 180: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

180

Ejemplo SPARQL PREFIX table: <http://www.daml.org/2003/01/periodictable/PeriodicTable#>

SELECT ?symbol ?number

FROM <http://www.daml.org/2003/01/periodictable/PeriodicTable#>

WHERE

{

{

?element table:symbol ?symbol;

table:atomicNumber ?number;

table:group table:group_17.

OPTIONAL { ?element table:color ?color. }

}

UNION

{

?element table:symbol ?symbol;

table:atomicNumber ?number;

table:group table:group_18.

}

}

ORDER BY DESC(?number)

LIMIT 10

OFFSET 10

Page 181: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

181

Metadatos empotrados • Necesitamos que nuestros datos estén

preparados para responder adecuadamente a las preguntas de los navegadores y agentes software

– “Embedded metadata” son datos sobre datos empotrados en una página web

• Tres opciones principales:

– RDFa – sistema complejo conectado a XHTML

– Microformats – ampliamente usado y apollado, usan etiquetas XHTML antiguas <a href="http://jane-blog.example.org/" rel="sweetheart date met">Jane</a>

– Microdata – bastante nuevo, soportado por los buscadores, nivel de complejidad intermedio

• ¡¡Todas juntas nos ayudarán a alcanzar la visión de una web con más significado, pero todavía comprensible tanto a humanos como máquinas!!

Page 182: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

182

RDFa

• RDFa = Haciendo más fácil empotrar RDF en XHTML y XML – Resuelve la principal limitación de RDF: es muy compresible por

máquinas pero muy poco por humanos – Añade metadatos a XHTML sin afectar la visualización de navegadores

• La página web es ahora legible tanto por humanos como agentes software

– Permite la agregación de datos y la asociación de metadatos para tareas más sofisticadas que aquellas permitidas mediante screen scrapping

– Utiliza algunos atributos de XHTML 1 existentes y otros nuevos de XHMTL 2 para guardar sujetos, predicados y objetos de tripletas RDF

• Los atributos XHTML 1 href, content, rel, rev, y datatype • Los nuevos atributos de meta-información about, role y property de

XHTML 2 (http://www.w3.org/TR/xhtml2/mod-meta.html) module

– Ejemplo: <p about="http://www.deusto.es/events/event1" instanceof="cal:Vevent">

• Referencia: http://rdfa.info/

Page 183: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

183

GRDDL

• GRDDL es un mecanismo para extraer descripciones de recursos de dialectos de lenguajes – Define un estándar para declarar que una página web o XML puede ser transformada

en un grafo RDF, así como identifica el algoritmo a utilizar para tal transformación • glean –verb (used with object)

1. to learn, discover, or find out, usually little by little or slowly. –verb (used without object)

• Es un lenguaje de marcado para ... – ... declarar que un documento XML incluye datos extraíbles (PROFILE) o – ... ligarlo a un algoritmo (típicamente XSLT) para extraer los datos RDF del documento

(TRANSFORMATION)

• El lenguaje de marcado incluye: 1. Un atributo de espacio de nombres para ser incluido en documentos XML xmlns:grddl='http://www.w3.org/2003/g/data-view#'

grddl:transformation="glean_title.xsl" 2. Un enlace asociado a un perfil para incluirse en documentos XHTML válidos. <head profile="http://www.w3.org/2003/g/data-view"> <link rel="transformation" href="glean_title.xsl" />

Page 184: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

184

MicroData

• Microdata is a WHATWG HTML specification used to nest metadata within existing content on web pages

– Search engines, web crawlers, and browsers can extract and process Microdata from a web page and use it to provide a richer browsing experience for users

– Microdata uses a supporting vocabulary to describe an item and name-value pairs to assign values to its properties

– Microdata is an attempt to provide a simpler way of annotating HTML elements with machine-readable tags than the similar approaches of using RDFa and Microformats.

Page 185: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

185

Schema.org

• Iniciativa lanzada en 2011 por Bing, Google, Yahoo y luego Yandex

• Objetivo: “create and support a common set of schemas for structured data markup on web pages.”

– Proponen usar sus esquemas y Microdata en HTML5 para marcar los contenidos de una página web con metadatos

• Los metadatos son reconocidos por los buscadores y otros parsers, así accediendo al “significado” de los portales

• Sus vocabularios fueron inspirados por formatos anteriores como Microformats, FOAF, GoodRelations y OpenCyc

• Ofrecen esquemas en los siguientes dominios (http://schema.org/docs/schemas.html):

– Eventos, salud, organización, persona, lugar, producto, oferta, revisión, etc.

• Para mapear declaraciones en microdatos a RDF se puede usar http://schema.rdfs.org/

• URL: http://schema.org/

Page 186: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

186

Microdata attributes

• itemscope – Creates the Item and indicates that descendants of this element contain information about it.

• itemtype – A valid URL of a vocabulary that describes the item and its properties context.

• itemid – Indicates a unique identifier of the item. • itemprop – Indicates that its containing tag holds the value of the

specified item property. The properties name and value context are described by the items vocabulary. Properties values usually consist of string values, but can also use URLs using the a element and its href attribute, the img element and its src attribute, or other elements that link to or embed external resources.

• itemref – Properties that are not descendants of the element with the itemscope attribute can be associated with the item using this attribute. Provides a list of element ids (not itemids) with additional properties elsewhere in the document.

Page 187: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

187

Ejemplo de Microdata <section itemscope itemtype="http://schema.org/Person">

Hello, my name is

<span itemprop="name">John Doe</span>,

I am a

<span itemprop="jobTitle">graduate research assistant</span>

at the

<span itemprop="affiliation">University of Dreams</span>.

My friends call me

<span itemprop="additionalName">Johnny</span>.

You can visit my homepage at

<a href="http://www.JohnnyD.com" itemprop="url">www.JohnnyD.com</a>.

<section itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">

I live at

<span itemprop="streetAddress">1234 Peach Drive</span>,

<span itemprop="addressLocality">Warner Robins</span>,

<span itemprop="addressRegion">Georgia</span>.

</section>

</section>

• Da lugar a:

Item

Type: http://schema.org/Person

name = John Doe

jobTitle = graduate research assistant

affiliation = University of Dreams

additionalName = Johnny

url = http://www.johnnyd.com/

address = Item(1)

Item 1

Type: http://schema.org/PostalAddress

streetAddress = 1234 Peach Drive

addressLocality = Warner Robins

addressRegion = Georgia

Page 189: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

189

Web Semántica vs. web semántica

Web Semántica web semántica

Filosofía

Construye un formato común de datos

para expresar el significado de los

datos. Utiliza ontologías para ayudar a

las máquinas a entender el contenido

web.

Los humanos primero, las máquinas

después. Codifican el contenido web

con etiquetas especiales

Lenguaje RDF, RDFS, OWL Microformats (basados en XHTML),

Microdata, RDFa, GRDDL

Formato Debe contener documentos RDF bien

formados

Cualquier cosa vale, siempre que sea

XHTML

Semántica Definida por el modelo ontológico

subyacente (e.j., OWL)

Desacoplado. No hay modelo semántico

formal, a no ser que se use RDFa

Ejemplos FOAF, OWL-S, OWL-Time

XFN (red social), hCard (contacto),

hReview (opiniones), rel-tag

(etiquetado)

Page 190: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

190

Aplicaciones Semánticas • Son aplicaciones que intentan determinar el significado del texto y otros

datos y crean conexiones para el usuario

– Promocionan la portabilidad de datos y conectividad transforman la Web en una plataforma

• http://www.readwriteweb.com/archives/10_semantic_apps_to_watch.php

Page 191: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

191

OpenCalais

• La misión de OpenCalais es generar metadatos semánticos a partir de contenido textual

– Utiliza técnicas de NLP, machine learning y otras

– Analiza documentos y encuentra entidades en ellos • No sólo identificar entidades, devuelve hechos

• Ejemplo de uso:

– http://viewer.opencalais.com/

– http://www.opencalais.com/showcase

• Proyecto relacionado:

– http://semanticproxy.com

Page 192: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

192

Web of Data: Limitaciones de la Web de Documentos

• Demasiada información con muy poca estructura y hecha además para consumo humano

– Es una web sintáctica no semántica

– La búsqueda de contenidos es muy simplista • Se requieren mejores métodos

• Los contenidos web son heterogéneos

– En términos de contenido

– En términos de estructura

– En términos de codificación de caracteres

• El futuro requiere integración de información inteligente

Page 193: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

193

LinkedData

• “A term used to describe a recommended best practice for exposing, sharing, and connecting pieces of data, information, and knowledge on the Semantic Web using URIs and RDF.“

• Permite descubrir, conectar, describir y reutilizar todo tipo de datos. – Pasa de una Web de Documentos a una Web de Datos

• En Septiembre 2011 ya contenía 31 billones de tripletas RDF, ligadas por 504millones de enlaces

• Pensado para abrir y conectar diversos vocabularios e instancias semánticas, para que puedan ser utilizados por la comunidad semántica

• URL: http://linkeddata.org/

Page 194: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

194

Tipos de Datos en Linked Data

• Los datos publicados como LinkedData puede seguir la siguiente clasificación, según Tim Bernes-Lee:

– 1 estrella: datos disponibles en la web (en cualquier formato), pero con una licencia abierta

– 2 estrellas: datos disponibles son estructurados y legibles por máquinas. Por ejemplo, Microsoft Excel en vez de una imagen escaneada de una tabla.

– 3 estrellas: los datos disponibles como en (2) pero no siguen un formato propietario. Por ejemplo, CSV en vez de Excel.

– 4 estrellas: los datos son dispuestos de manera abierta usando un estándar abierto de W3C (RDF y SPARQL) para identificar cosas, de modo que la gente los pueda enlazar.

– 5 estrellas: los datos son dispuestos siguiendo lo anterior, incluyendo enlaces externos a los datos de otra gente.

Page 195: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

195

4 reglas de Linked Data

1. Usa URIs para identificar cosas

2. Usa URIs HTTP para que estas cosas puedan ser referenciadas y dereferenciadas por gente y agentes de usuario

3. Proporciona información útil (descripción estructurada y metadatos) sobre la cosa/concepto al que referencia la URI

4. Incluye enlaces a otras URIs para mejorar el descubrimiento de información relacionada en la Web

Page 196: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

196

Ejemplo de Linked Data

http://…/isbn978

Programming the Semantic Web

978-0-596-15381-6

Toby Segaran

http://…/publisher1

O’Reilly

title

name

author

publisher

isbn

http://…/isbn978

sameAs

http://…/review1

Awesome Book

http://…/reviewer

Juan Sequeda

http://juansequeda.com/id

hasReview

hasReviewer

description

name

sameAs

livesIn

Juan Sequeda name

http://dbpedia.org/Austin

Page 197: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

197

LOD Cloud

Page 198: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

198

Linked Data Life Cycle

• Linked Data must go through several stages (several iterations on Linkage) before are ready for exploitation:

Page 199: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

199

Web of Data: MORElab Research Projects’ Dataset

199

Page 200: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

200

Web of Data: Waste-related LinkedStats

Page 201: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

201

Mash-up Semánticos

• Los mashups semánticos mezclan información proveniente de diferentes fuentes y organizan los resultados

• Los mash-up semánticos son mucho más flexibles – convierten la información recuperada a formato RDF (lingua franca) fácilmente filtrable y consultable con SPARQL. – Tienen la capacidad de evolucionar sin requerir cambios en su código

• Los datos provistos en formatos de representación sintácticos diferentes, pero tales datos, semánticamente, deben proveer una información muy similar, fácilmente convertible a un vocabulario RDF común.

Page 202: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

202

Mash-ups Semánticos

Page 203: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

203

Ejemplo Ontología de Mash-up

• Ontología que modela “Eventos geo-localizados organizados por una entidad” – En vez de diseñar una ontología desde cero, es preferible hacer uso de

vocabularios RDF bien conocidos tales como Calendar, vCard y Geo, que permiten representar eventos:

• RDF Calendar (http://www.w3.org/TR/2005/NOTE-rdfcal-20050929/)

• vCard-RDF (http://www.w3.org/TR/vcard-rdf)

• Geo RDF (http://www.w3.org/2003/01/geo/)

– Y de sus microformatos equivalentes:

• hCalendar (http://microformats.org/wiki/hcalendar)

• hCard (http://microformats.org/wiki/hcard)

• geo (http://microformats.org/wiki/geo)

Page 204: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

204

Evento geolocalizado expresado con hCalendar

<div id="empresadigital: event1" class="vevent">

<h1><span class="summary">OSGI: una Plataforma Modular y Ligera para Construir Aplicaciones basadas en Servicios</span></h1>

<h2><abbr title="20080401T0900" class="dtstart">22 Mayo del 2008 9am a </abbr><abbr title="20080401T1400" class="dtend">2pm</abbr> en <span class="location">Parque Tecnológico de Álava, Miñano</span></h2>

<abbr class="geo" title="42.883; -2.760"></abbr>

<p class="description">OSGi es una de las tecnologías de software distribuido que más impacto está causando últimamente. Ven a este curso y aprende que hay detrás de OSGi.<a href="http://www.empresadigital.net/osgi" class="url">Pulsa</a> para obtener más información.</p>

<p><span class="organizer vcard">Organizado por</span>

<a href="http://www.arabadigitala.com" class="url"><span class="fn org">Araba Enpresa Digitala</span></a>. Contáctanos en <a class="email" href="mailto:[email protected]"> [email protected]</a>

</p>

<p><span class="logo" content="images/logo_ARABA.gif"> <img src="images/logo_ARABA.gif"/></span></p>

</div>

Ver fichero

Page 205: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

205

Evento geolocalizado en RDFa <?xml version="1.0" encoding="iso-8859-1"?>

<!--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">-->

<html xmlns:cal="http://www.w3.org/2002/12/cal/ical#"

xmlns:contact="http://www.w3.org/2001/vcard-rdf/3.0#"

xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">

<head>

<title>Eventos de la Facultad de Ingenieria de la Universidad de Deusto</title>

</head>

<body>

<p about="http://www.deusto.es/events/event1" instanceof="cal:Vevent">

Charla técnica:

<span property="cal:summary">

Web con minusculas

</span>

a celebrarse el dia

<span property="cal:dtstart" content="20080412T1600-0500">

12 de Marzo a las 4pm.

</span>

en Auditorio Principal Universidad de Deusto

<span href="#p1" rel="geo:Point">

<span about="#p1">

<span property="geo:lat">43.270737</span>

<span property="geo:long">-2.939637</span>

</span>

</span>

organizado por

<span href="http://www.deusto.es/staff/dipina" rel="cal:organizer">Diego Lopez de Ipina</span>

</p>

...

Ver RDFa Ver RDF

Page 206: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

206

Consulta que extrae eventos agregados PREFIX cal: <http://www.w3.org/2002/12/cal/icaltzd#>

PREFIX contact: <http://www.w3.org/2001/vcard-rdf/3.0#>

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

SELECT DISTINCT ?summary ?description ?dtstart ?dtend ?lat ?long ?org ?url ?email ?logo

WHERE {

?event cal:summary ?summary.

?event cal:dtstart ?dtstart.

OPTIONAL { ?event cal:organizer ?organizer.

?organizer contact:fn ?org.

?organizer contact:url ?url.

?organizer contact:email ?email.

OPTIONAL { ?organizer contact:logo ?logo. } }

OPTIONAL { ?event geo:Point ?point.

?point geo:lat ?lat.

?point geo:long ?long. }

OPTIONAL { ?event cal:geo ?loc.

?loc <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> ?lat.

?loc <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> ?restgeo.

?restgeo <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> ?long. }

OPTIONAL { ?event cal:dtend ?dtend. }

OPTIONAL { ?event cal:description ?description. }

FILTER ( xsd:dateTime(?dtstart) >= xsd:dateTime("2008-04-14T00:00:00Z") )

FILTER ( xsd:dateTime(?dtend) <= xsd:dateTime("2008-04-21T00:00:00Z") )

} ORDER BY ?event;

Page 208: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

208

Bases de Datos NoSQL

• NoSQL – "not only SQL” – es una categoría general de sistemas de gestión de bases de datos que difiere de los RDBMS en diferente modos: – No tienen schemas, no permiten JOINs, no intentan garantizar

ACID y escalan horizontalmente

– Tanto las bases de datos NoSQL como las relacionales son tipos de Almacenamiento Estructurado.

• El término fue acuñado en 1998 por Carlo Strozzi y resucitado en 2009 por Eric Evans – Evans sugiere mejor referirse a esta familia de BBDD de nueva

generación como “Big Data” mientras que Strozzi considera ahora que NoREL es un mejor nombre

Page 209: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

209

Características principales

• Fáciles de usar en clústers de balanceo de carga convencionales facilitan escalabilidad horizontal

• Guardan datos persistentes (no sólo cachés)

• No tienen esquemas fijos y permite la migración del esquema sin tener que ser reiniciadas o paradas

• Suelen tener un sistema de consultas propio en vez de usar un lenguaje de consultas estándar

• Tienen propiedades ACID en un nodo del clúster y son “eventualmente consistentes” en el clúster

Page 210: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

210

¿Por qué necesitas NoSQL?

• Desafíos de gestión de información son difíciles de resolver con tecnología de bases de datos relacionales:

– BBDD no escala a tu tráfico a un coste aceptable

– El tamaño de tu esquema de datos ha crecido desproporcionalmente.

– Generas mucho datos temporales que no corresponden al almacén de datos principal (carritos de compra, personalización de portales)

– BBDD ha sido desnormalizada por razones de rendimiento o por conveniencia para utilizar los datos en una aplicación

– Dataset tiene grandes cantidades de texto, imágenes y BLOBs

– Consultas contra datos que no implican relaciones jerárquicas sencillas; recomendaciones o consultas de inteligencia de negocio.

• Ejemplo: "all people in a social network who have not purchased a book this year who are once removed from people who have“

– Usas transacciones locales que no necesitan ser durables, e.j. Like. • Los sites AJAX tienen muchos casos de uso de este estilo.

Page 211: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

211

Conceptos asociados a BBDD distribuidas

• Almacenes basados en columnas y filas. RDBMS almacenan las filas de modo continuo en disco, mientras que algunas NoSQL guardan columnas de modo continuo

• Consistencia eventual: si no se realizan nuevas actualizaciones a un elemento de datos, todos los accesos del elemento devolverán el último valor actualizado

• Sharding: es una partición horizontal en una BBDD donde las filas de una tabla se mantienen de modo separado

• Replicación maestro-maestro es un método de replicación de BBDD que permite almacenar datos en un grupo de nodos y su actualización por cualquier miembro del grupo

• Replicación maestro-esclavo donde un sólo elemento se designa como “maestro” de un datastore y es el único nodo que permite modificar datos

• Particionado es la división de una BBDD lógica y sus partes constituyentes en un conjunto de partes independientes.

• Modelo de consistencia: contrato entre el programador y el sistema sobre las garantías de consistencia (write & read consistency: one, all, quorum, etc.)

Page 212: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

212

Taxonomía de soluciones NoSQL • Los principales tipos de BBDD de acuerdo con su

implementación son los siguientes: – Almacenes de Clave-Valor

– Almacenes de Familia de Columnas

– Almacenes de Documentos

– Grafos

Page 213: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

213

Características BBDD orientadas a Clave-Valor

• Su precursor fue Amazon Dynamo

– Basadas en DHT (Distributed Hash Tables)

• Modelo de datos: colección de pares clave/valor

• Ejemplos: Dynomite, Voldemort, Tokyo

Page 214: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

214

BBDD orientadas a Columnas

• Su precursor fue Google BigTable

• Modelo de datos: familia de columnas, esto es, un modelo tabular donde cada fila puede tener una configuración diferente de columnas – Guardan datos por columna en vez de las BBDD tradicionales que lo

hacen por filas

• Ejemplos: HBase, Hypertable, Cassandra, Riak

• Buenas en: – Gestión de tamaño

– Cargas de escrituras masivas orientas al stream

– Alta disponibilidad

– MapReduce

Page 215: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

215

BBDD orientadas a Documentos

• La precursora fue Lotus Notes

• Modelo de datos: colecciones de documentos (JSON, XML, BSON) que contienen colecciones de claves-valor

• Ejemplos: CouchDB, MongoDB

• Buenas en:

– Modelado de datos natural

– Amigables al programador

– Desarrollo rápido

– Orientas a la web: CRUD

Page 216: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

216

BBDD orientadas a Grafos

• Inspiradas por Euler y la teoría de grafos

• Modelo de datos: nodos, relaciones con pares clave valor en ambos

• Ejemplos: AllegroGraph, VertexBD, Neo4j

• Buenas en:

– Modelar directamente un dominio en forma de grafo, una manera común de representar y entender datasets

– Ofrecer excelente rendimiento cuando los datos están interconectados y no tabulares

– Realizar operaciones transaccionales que exploten las relaciones entre entidades

Page 217: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

217

El teorema de CAP

Page 218: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

218

MongoDB

• Similar a CouchDB

• Pretende combinar lo mejor de los almacenes clave/valor, bases de datos de documentos y RDBMS

• Hace uso de JSON y tiene su propio lenguaje de consultas

• Implementada en C++

• Usada por SourceForge, Bit.ly, Foursquare o GitHub

• URL: http://www.mongodb.org/

Page 219: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

219

MongoDB

• MongoDB (de la palabra en ingles “humongous” que significa enorme) es un sistema de base de datos NoSQL orientado a documentos

• MongoDB guarda estructuras de datos en documentos tipo BSON (Binary JSON (JSON Binario) con un esquema dinámico , haciendo que la integración de los datos en ciertas aplicaciones sea mas fácil y rápida.

Page 220: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

220

Características Principales • Consultas Ad hoc

– MongoDB soporta la búsqueda por campos, consultas de rangos y expresiones regulares.

– Las consultas pueden devolver un campo específico del documento pero también puede ser una función JavaScript definida por el usuario.

• Indexación

– Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible hacer índices secundarios.

• El concepto de índices en MongoDB es similar a los encontrados en base de datos relacionales.

• Replicación

– MongoDB soporta el tipo de replicación maestro-esclavo.

• El maestro puede ejecutar comandos de lectura y escritura.

• El esclavo puede copiar los datos del maestro y sólo se puede usar para lectura o para copia de seguridad, pero no se pueden realizar escrituras.

– El esclavo tiene la habilidad de poder elegir un nuevo maestro en caso del que se caiga el servicio con el maestro actual.

Page 221: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

221

Características Principales

• Balanceo de carga – MongoDB se puede escalar de forma horizontal usando el concepto de “shard”.

– El desarrollador elije una llave shard, la cual determina como serán distribuidos los datos en una colección. los datos son divididos en rangos (basado en la llave shard) y distribuidos a través de múltiples shard.

– Un shard es un maestro con uno o más esclavos.

– MongoDB tiene la capacidad de ejecutarse en múltiple servidores, balanceando la carga y/o duplicando los datos para poder mantener el sistema funcionando en caso que exista un fallo de hardware.

• Almacenamiento de archivos – MongoDB puede ser utilizado con un sistema de archivos, tomando la ventaja de la capacidad que tiene MongoDB

para el balanceo de carga y la replicación de datos utilizando múltiples servidores para el almacenamiento de archivos.

– Esta función (que es llamada GridFS ) está incluida en los drivers de MongoDB y disponible para los lenguajes de programación que soporta MongoDB.

• Agregación – La función MapReduce puede ser utilizada para el procesamiento por lotes de datos y operaciones de agregación.

– Esta función permite que los usuarios puedan obtener el tipo de resultado que se obtiene cuando se utiliza el comando SQL “group-by”.

• Ejecución de JavaScript del lado del servidor – MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas

directamente a la base de datos para ser ejecutadas.

Page 222: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

222

Manipulación de Datos: colecciones y documentos

• MongoDB guarda la estructura de los datos en documentos tipo JSON con un esquema dinámico llamado BSON, lo que implica que no existe un esquema predefinido.

• Los elementos de los datos son llamados documentos y se guardan en colecciones

• Una colección puede tener un número indeterminado de documentos

– Las colecciones son como tablas y los documentos como filas

– Cada documento en una colección puede tener diferentes campos.

• La estructura de un documento es simple y compuesta por “key-value pairs” parecido a las matrices asociativas en un lenguaje de programación

– Como valor se pueden usar números, cadenas o datos binarios como imágenes o cualquier otro “key-value pairs”.

Page 223: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

223

Ejemplo de documento en MongoDB

{

"_id":

ObjectId("4efa8d2b7d284dad101e4bc7"),

"Last Name": "PELLERIN",

"First Name": "Franck",

"Age": 29,

"Address": {

"Street": "1 chemin des Loges",

"City": "VERSAILLES"

}

}

Page 224: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

224

Utilidades de MongoDB

• Los siguientes comandos pueden ser instalados para el manejo y la administración del sistema de base de datos:

– mongo: es un Shell interactivo que permite a los desarrolladores ver, insertar, eliminar y actualizar datos en su base de datos. Este también permite entre otras funciones la replicación de información, configurar los Shards, apagar los servidores y ejecutar JavaScript.

– mongostat: es un instrumento de línea de comandos que muestra en resumen una lista de estadísticas de una instancia de MongoDB en ejecución.

– mongotop: es un instrumento de línea de comandos que provee un método para dar

seguimiento a la cantidad de tiempo que dura una la lectura o escritura de datos en una instancia.

– mongosniff: es un instrumento de línea de comandos que provee un sniffing en la base de datos haciendo un sniffing en el tráfico de la red que va desde y hacia MongoDB.

– mongoimport/mongoexport: es un instrumento de línea de comandos que facilita la importación exportación de contenido desde JSON, CSV o TSV.

– mongodump/mongorestore: es un instrumento de línea de comandos para la creación de una exportación binaria del contenido de la base de datos.

Page 225: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

225

Documentación e instalación

• La documentación completa de MongoDB puede encontrarse en:

– http://docs.mongodb.org/manual/

• Instrucciones para instalar MongoDB en Windows:

– Descargar la última versión de: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/

– Crear directorio de datos: mkdir data/db

– Ejecutar el comando: mongod.exe --dbpath ..\data\db

– Ejecutar el cliente mongo y los siguientes comandos en JavaScript: %INSTALL_DIR%\mongodb-win32-x86_64-2.4.5\bin>mongo

MongoDB shell version: 2.4.5

connecting to: test

> db.test.save( {a:1} )

> db.test.find()

{ "_id" : ObjectId("4fe6e41b184d3a26629be9b6"), "a" : 1 }

>

Page 226: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

226

Usando MongoDB • mongo es un shell JavaScript completo, cualquier función JavaScript, sintáxis o clase puede

usarse en el shell > j = { name : "mongo" };

{ "name" : "mongo" }

> t = { x : 3 };

{ "x" : 3 }

> db.things.save(j);

> db.things.save(t);

> db.things.find();

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d90"), "name" : "mongo" }

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d91"), "x" : 3 }

> for (var i = 1; i <= 20; i++) db.things.save({x : 4, j : i});

> db.things.find();

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d90"), "name" : "mongo" }

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d91"), "x" : 3 }

...

Type "it" for more

> // Iterate through the remaining items

> it

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8da4"), "x" : 4, "j" : 19 }

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8da5"), "x" : 4, "j" : 20 }

Page 227: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

227

Usando MongoDB > // Store the cursor of the DB in a variable

> var cursor = db.things.find();

> while (cursor.hasNext()) printjson(cursor.next());

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d90"), "name" : "mongo" }

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d91"), "x" : 3 }

...

> // Use functional features of JavaScript

> db.things.find().forEach(printjson);

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d90"), "name" : "mongo" }

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d91"), "x" : 3 }

...

> // cursors like an array

> var cursor = db.things.find();

> printjson(cursor[4]);

{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d94"), "x" : 4, "j" : 3 }

>

Page 228: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

228

Documentos de consulta

• Documentos que indican el patrón de claves y valores que deben ser localizados

• Ejemplos:

– SELECT * FROM things WHERE name="mongo“

• db.things.find({name:"mongo"}).forEach(printjson);

– SELECT * FROM things WHERE x=4

• db.things.find({x:4}).forEach(printjson);

– SELECT j FROM things WHERE x=4

• db.things.find({x:4}, {j:true}).forEach(printjson);

– Recuperar el primer elemento que cumple alguna restricción:

• printjson(db.things.findOne({name:"mongo"}));

– Limitar el número de resultados:

• db.things.find().limit(3);

Page 229: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

229

Programando MongoDB

• MongoDB tiene soporte variado de lenguajes y librerías cliente:

– http://docs.mongodb.org/ecosystem/drivers/java/

• Para soporte en Java mirar:

– http://docs.mongodb.org/ecosystem/drivers/java/

– http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/

• Algunos buenos ejemplos en:

– http://www.mkyong.com/tutorials/java-mongodb-tutorials/

Page 230: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

230

MongoDB (2.4.5) • Written in: C++

• Main point: Retains some friendly properties of SQL. (Query, index)

• License: AGPL (Drivers: Apache)

• Protocol: Custom, binary (BSON)

• Master/slave replication (auto failover with replica sets)

• Sharding built-in

• Queries are javascript expressions

• Run arbitrary javascript functions server-side

• Better update-in-place than CouchDB

• Uses memory mapped files for data storage

• Performance over features

• Journaling (with --journal) is best turned on

• On 32bit systems, limited to ~2.5Gb

• An empty database takes up 192Mb

• GridFS to store big data + metadata (not actually an FS)

• Has geospatial indexing

• Data center aware

• Best used: If you need dynamic queries. If you prefer to define indexes, not map/reduce functions. If you need good performance on a big DB. If you wanted CouchDB, but your data changes too much, filling up disks.

• For example: For most things that you would do with MySQL or PostgreSQL, but having predefined columns really holds you back.

Page 231: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

231

Persistencia Políglota

• Toda empresa va a acabar teniendo una variedad de tecnologías de almacenamiento para diferentes tipos de datos – El código de nuestros sistemas va a tener acceso a diferentes repositorios

de datos

– Muchos datos seguirán guardándose en almacenes relacionales pero debemos empezar a preguntarnos cómo queremos utilizar los datos y sólo entonces decidir qué tecnología es mejor

• Usar NoSQL para una característica particular de una aplicación

– Rápido procesado batch

– Logging distribuido

– Para grandes tablas

• Usar una RDBMS para reporting

– Se complica la lógica de la aplicación y el despliegue

– Responsabilidades administrativas adicionales

• Hay que ¡elegir la herramienta adecuada para cada trabajo!

Page 233: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

233

¿Qué es Big Data?

• "Big Data are high-volume, high-velocity, and/or high-variety information assets that require new forms of processing to enable enhanced decision making, insight discovery and process optimization“ Gartner, 2012 – El término “Big Data” se originó dentro de la comunidad open source,

donde hubo un esfuerzo por desarrollar procesos de análisis que fueran más rápidos y escalables que el data warehousing tradicional, y pudieran extraer valor de los inmensos volúmenes de datos no estructurados producidos a diario por usuarios web

• Es una oportunidad para encontrar percepciones en nuevos y tipos emergentes de datos y contenidos, para hacer a tu negocio más ágil, y para responder preguntas que fueron consideradas con anterioridad fuera de tu alcance.

Page 234: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

234

Motivation

• We're generating more content than ever before, but in many cases it leads to more questions and fewer answers. – What is happening in the atmosphere?

– Which candidate do voters prefer?

– Which movies, books, and TV shows are going to satiate the public's appetite?

– Which trends are coming down the road?

• Technology can drive the business: – Finding "competitive advantages," getting "data on the board's

agenda" and driving "innovative products and startups.“

• http://econsultancy.com/es/blog/63365-three-reasons-why-big-data-is-awesome

Page 235: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

235

¿Qué es Big Data?

• Big Data is your data!!! It's the information owned by your company, obtained and processed through new techniques to produce value in the best way possible

– Doug Laney in 2001 coined the 3Vs concept: "volume, velocity and variety“:

• A lot of data produced very quickly in many different forms

– Customer transactional histories, production databases, web traffic logs, online videos, social media interactions

– In 2013 Mark van Rijmenam added "veracity, variability, visualization, and value“

• "90% of all data ever created, was created in the past two years. From now on, the amount of data in the world will double every two years.“

• Example: Netflix uses BigData to enhance their video streaming service and to make more accurate suggestions as to what subscribers might like

Page 236: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

236

Features of Big Data

• The structure (or lack thereof) and size of Big Data that makes it so unique

• Represents both significant information and the way this information is analyzed

– "Big Data" represents a noun – "the data" - and a verb – "combing the data to find value.“

• Interpretation of Big Data can bring about insights which might not be immediately visible or which would be impossible to find using traditional methods.

Page 237: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

237

Evolución de Big Data • ¡¡Explosión de los datos!!

– 48 horas de datos del mercado de valores ~ 5 TB

– 3,3 meses de fuentes OPRA ~ 5 PB

– Datos semi y no estructurados en tiempo real de redes sociales

– Procesos de Google PB/hour

• Bioinformatics – enormes conjuntos de datos sobre genética y drogas

• Blanqueo de dinero / financiación terrorista, Spatial Data

• Para 2015, más del 85% de las organizaciones Fortune 500 no serán capaces de procesar Big Data para ganar ventaja competitiva. – Gartner

• Ya se están produciendo más de 1.9 zettabytes de datos

Page 238: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

238

Necesidad de Big Data Analytics

• La percepción de los procesos de Data Warehousing es que son lentos y limitados en escalabilidad

• La necesidad de converger datos de varias fuentes, tanto estructuradas como no estructuradas

• Es crítico el acceso a la información para extraer valor de las fuentes de datos incluyendo dispositivos móviles, RFID, la web y otro largo listado de tecnologías sensoriales automatizadas.

Page 239: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

239

Características de Big Data

Page 241: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

241

¿Cómo funciona Big Data Analytics?

Page 242: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

242

Hadoop • Hadoop es una framework gratuita en Java para procesar grandes

volúmenes de datos en un entorno de computación distribuido

– Hace posible la ejecución de aplicaciones sobre sistemas con miles de nodos que procesan miles de terabytes

– Su sistema de ficheros distribuido facilita la rápida transferencia de datos entro nodos y permite al sistema seguir operando ininterrumpidamente en caso de fallo de un nodo

– Inspirado por Google MapReduce, un modelo de computación donde una aplicación se divide en varias partes

• Cada una de esas partes (fragmentos o bloques) puede ser ejecutada en cualquier nodo de un clúster

– El ecositema actual de Apache Hadoop consiste de:

• Hadoop kernel, MapReduce, el sistema de ficheros distribuido de Hadoop (HDFS) y otros proyectos relacionados como Apache Hive, HBase and Zookeeper.

– Usado por los grandes agentes de la industria Google, Yahoo and IBM

– Algunas variantes comerciales producidas por Cloudera, Hortonworks, MapR and Amazon

Page 243: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

243

Hadoop

• Hadoop is "a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models.“

– It has two main parts:

• A distributed file system for data storage, named Hadoop Distributed File System (HDFS)

• A data processing Java framework named MapReduce used to work with the data

– MapReduce runs as a series of jobs, with each job essentially a separate Java application that goes out into the data and starts pulling out information as needed.

– Modus operandi:

• The Map part is accomplished by the JobTracker dividing computing jobs up into defined pieces and shifting those jobs out to the TaskTrackers on the machines out on the cluster where the needed data is stored

• Once the job is run, the correct subset of data is Reduced back to the central node of the Hadoop cluster

Page 245: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

245

Google BigQuery

• Querying massive datasets can be time consuming and expensive without the right hardware and infrastructure

• Google BigQuery solves this problem by enabling super-fast, SQL-like queries against append-only tables, using the processing power of Google's infrastructure.

• You can access BigQuery by using a browser tool or a command-line tool, or by making calls to the BigQuery REST API using a variety of client libraries such as Java, PHP or Python.

• El servicio BigQuery de Google facilita en gran medida este tipo de análisis, ofreciendo un sistema de almacenamiento totalmente escalable y una forma sencilla y rápida de consultar estos datos.

– Gracias a su modelo de pago por uso, los usuarios de este servicio pueden comenzar a explotar sus datos sin costosas inversiones iniciales

• URL: https://developers.google.com/bigquery/

Page 247: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

247

Big Data y SmartCities

User

Linked Citizens & Enterprises

Device Capabilities

Third Party Services

Linked Data Normalizer

LinkedCity Back-end

Users & Groups

Management

SocialNetworksUrban Apps

Repository

Search Engine & Recommender

Services & Data Manager

Big (Linked) Data Analysis

Events & Incidences

Sreening Media Tool

City Council Open Data Data Analyzer & ProviderCity sensor network

HTTP over IPv6

REST SPARQL Interface

HTTP RESTInterface

REST Interface

HTTP (AJAX)

Company

Page 249: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

249

Everything will be Connected

Page 250: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

250

Conclusiones • Sólo una nueva Internet posibilitará de un modo robusto nuevos servicios

y funcionalidades

– Internet of Services, Internet of Things, Web of Data …

• La Web del Futuro será una plataforma de ejecución de servicios cada vez más inteligentes, consumibles y alojados en y desde dispositivos heterogéneos (en móviles, desde la nube, a servidores web tradicionales o los propios objetos cotidianos)

• Los paradigmas Big Data, Semantic Web, Cloud Computing e Internet de las Cosas van a cambiar cómo desplegar funcionalidad empresarial y cotidiana en la Web

– Todo va a alojarse en la Web: la Web va a ser el ordenador y el navegador el SO que gestiona los recursos de la Web

– La coordinación de Web de Datos y los Ecosistemas de Servicios Distribuidos en Internet sólo será posible mediante mediación semántica o complejos análisis y minería de datos no estructurados

• Ejemplos del curso en: https://dl.dropboxusercontent.com/u/2763621/examplesFutureInternet.rar

Page 251: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

251

Referencias

• European Future Internet Portal, http://www.future-internet.eu/

• The Future of the Internet, Bled 31 March 2008, ftp://ftp.cordis.europa.eu/pub/fp7/ict/docs/ch1-g940-280-future-internet-ld_en.pdf

• Future Internet: The Cross-ETP Vision Document, Version 1, 8. January, 2009, http://www.future-internet.eu/fileadmin/documents/reports/Cross-ETPs_FI_Vision_Document_v1_0.pdf

• How Web 3.0 Will Work, http://computer.howstuffworks.com/web-30.htm

• Web Evolution, http://www.slideshare.net/novaspivack/web-evolution-nova-spivack-twine

• Three New Search Services: Wolfram|Alpha, Microsoft Bing, Google Squared, http://dltj.org/article/alpha-bing-squared/

• Bing Search Engine, http://en.wikipedia.org/wiki/Bing_(search_engine)

Page 253: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

253

Referencias

• HTML5

– The HTML5 Vs. Native Apps Battle Broken Down

• http://www.businessinsider.com/battle-between-html5-vs-native-apps-2013-7

– The future for HTML5 is hybrid native mobile apps

• http://www.computerweekly.com/blogs/cwdn/2013/03/the-future-for-html5-is-hybrid-native-mobile-apps.html

Page 254: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

254

Referencias

• Future of Search

– FAQ: All About The New Google “Hummingbird” Algorithm

• http://searchengineland.com/google-hummingbird-172816

– Google’s Impressive “Conversational Search” Goes Live On Chrome

• http://searchengineland.com/googles-impressive-conversational-search-goes-live-on-chrome-160445

Page 255: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

255

Referencias • Browsers:

– Opera Labs

• http://labs.opera.com/

– Mozilla Labs

• http://wave.google.com/

• Cloud Computing

– Google App Engine

• http://code.google.com/intl/en/appengine/docs/java/gettingstarted/

– Amazon Web Services

• http://aws.amazon.com/

– Cloud Computing – Disruptive Innovation & Enabling Technology,

• http://blog.gogrid.com/2008/08/20/presentation-cloud-computing-disruptive-innovation-enabling-technology/

Page 256: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

256

Referencias • Semantic Web

– Semantic Web Apps and Platforms:

• http://www.readwriteweb.com/archives/10_semantic_apps_to_watch.php

• http://www.readwriteweb.com/archives/top_10_semantic_web_products_of_2009.php

• Web of Data

– From the Semantic Web to the Web of Data ten years of linking up, Davide Palmisano - Fondazione Bruno Kessler, 30/03/2010

• http://es.slideshare.net/dpalmisano/from-the-semantic-web-to-the-web-of-data-ten-years-of-linking-up

• GreaseMonkey

– A six-pack of useful Greasemonkey scripts

• http://howto.cnet.com/8301-11310_39-57565901-285/a-six-pack-of-useful-greasemonkey-scripts/

Page 257: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

257

Referencias • Big Data

– How is big data faring in the enterprise?

• http://www.zdnet.com/how-is-big-data-faring-in-the-enterprise-7000002404/

– Big Data Hadoop solutions with Hive, Mahout, HBase and Cassandra • http://www.theserverside.com/feature/Big-Data-Hadoop-solutions-with-Hive-Mahout-HBase-

and-Cassandra

– Hadoop: What It Is And How It Works • http://readwrite.com/2013/05/23/hadoop-what-it-is-and-how-it-

works#awesm=~omeohBbsanPhqA

– Big-Data Tutorial • http://planet-data.eu/sites/default/files/presentations/Big_Data_Tutorial_part4.pdf

– Big Data Online Training • http://contest.trendmicro.com/2013/train.htm

– 3D Data Management: Controlling Data Volume, Velocity and Variety • http://blogs.gartner.com/doug-laney/files/2012/01/ad949-3D-Data-Management-Controlling-

Data-Volume-Velocity-and-Variety.pdf

– Why The 3V’s Are Not Sufficient To Describe Big Data • http://www.bigdata-startups.com/3vs-sufficient-describe-big-data/

Page 258: Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

258

Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos

6 de Noviembre 2013, 9:00-12:30, Araba Enpresa Digitala

Parque Tecnológico de Álava (Miñano) - Edificio Central

Dr. Diego López-de-Ipiña González-de-Artaza [email protected]

http://paginaspersonales.deusto.es/dipina http://www.morelab.deusto.es