SlideShare una empresa de Scribd logo
1 de 83
Descargar para leer sin conexión
Pipes and Y! Query Language (YQL)
                              Jonathan Trevor
                     (jtrevor@yahoo-inc.com)
--
Apt near Park




          How do you find an apartment near a park?




                            --
Apt near Park
  • Apartment listings
     – For each apartment:
         • Click on map link or enter an address into a browser
         • Check distance to a park on the map
  • Tedious




                                     --
Apt near Park
  • Data is available
     – Apartment RSS feeds, craigslist, backpage.com
     – Yahoo! Local API to find “things” like parks
  • Can do it in about 50 lines of Perl code
    #!/usr/bin/perl -w
    use strict;
    use LWP::Simple;
    use XML::Simple;
    ...




                                   --
Apt near Park
  • Basically combine feeds + web services
  • Yet another custom mashup
     – HousingMaps, ChicagoCrime, ...




  • Would be nice if there was an easier way...




                                --
Pipes
    grep -iv yahoo.com squid.log | sort |
    uniq -c | sort -n > top_sources.txt

  • Unix Pipes for the Web
  • Build useful applications from simple primitives




                                --
Pipes
  • A free service that lets you remix and create data mashups
    using a visual editor
  • No need to host, we do it for you


                           Craigslist



                            Yahoo!



                                --
Pipes
  • A free service that lets you remix and create data mashups
    using a visual editor
  • No need to host, we do it for you


                           Craigslist



                            Yahoo!



                                --
Demo




       --
Piecing things together in the cloud




                         --
Any Input



   Craigslist

    Yahoo!

    Google

     Ebay

   Your data
     here!



                --
Any Output




             --
Any Output




             --
Any Output




             --
Any Output




             --
Any Output




             --
Any Output




             --
Any Output




             --
Any Output




             --
Any Output




             --
Any Output




             --
Any Output




                    RSS

                  Badges

                  HTML

                  Your app
                   here!



             --
Any Process


                                    Yahoo! Local
              Fetch



                      Your Web Service
                           Here!




                          Sort


                          --
Openness



   Craigslist
                                                   RSS
                                        Yahoo!
    Yahoo!      Fetch                   Local

                                                 Badges
    Google
                         Your Web
                                                 HTML
                        Service Here!

     Ebay
                                                 Your app
                           Sort
   Your data                                      here!
     here!



                         --
Hot Deals Search
  • Searches across many different deal hunting sites on the
    internet looking for the best prices. You can search for
    particular items or just let the pipe find the best of what's
    available




                                  --
Geoannotated Reuters News
  • Takes an RSS feed from the Reuters news service, and
    quot;geocodesquot; each item - making it possible to show where that
    news item is happening on a map of the world.




                               --
Who’s Viewed My LinkedIn Profile




                       --
Kiva Loans by Location
  • Gets a list of the micro-loans people have been making
    through the Kiva site, and shows the amazing variety of
    people and places that these loan are helping out.




                               --
Yahoo! Buzz Image Search




                      --
Yahoo Finance Stock Quote Watch List Feed w/
Chart




                       --
Contact's Favorite's




                       --
Yahoo Unanswered Questions
  • Finds those questions in the Y! answers site that don't
    currently have an answer - so you can show how smart you
    are and answer those tricky questions.




                              --
Babbler by Max Case
  • Translates IM messages in Second Life




                              --
Advantages to developers
  • Why use an online service to do this?
     – Leveraging large infrastructure
         • Faster access to network resources
         • Faster access to network services
     – System-wide knowledge
     – Leverage inter-organizational agreements
     – Easy to “string” together with other services
     – Easy to use (REST-style URLs)




                                    --
Run / Get the data

   • Each Pipe gets its own “hosted” page




   • Use the REST-style URLs to get the data
                              --
Run / Get the data

   • Each Pipe gets its own “hosted” page




   • Use the REST-style URLs to get the data
                              --
Edit REST-style queries



       http://pipes.yahoo.com/pipes/pipe.run?
       _id=1mrlkB232xGjJDdwXqIxGw
       &_render=json
       &location=palo+alto%2C+ca
       &mindist=2
       &what=parks
       &_callback=foofunction
             The ID of the Pipe




                              --
Edit REST-style queries



       http://pipes.yahoo.com/pipes/pipe.run?
       _id=1mrlkB232xGjJDdwXqIxGw
       &_render=json
       &location=palo+alto%2C+ca
       &mindist=2
       &what=parks
       &_callback=foofunction

           The format of the output (rss, json, kml,
           ical, csv)




                                --
Edit REST-style queries



       http://pipes.yahoo.com/pipes/pipe.run?
       _id=1mrlkB232xGjJDdwXqIxGw
       &_render=json
       &location=palo+alto%2C+ca
       &mindist=2
       &what=parks
       &_callback=foofunction


       The per Pipe user customizable parameters




                                 --
Edit REST-style queries



       http://pipes.yahoo.com/pipes/pipe.run?
       _id=1mrlkB232xGjJDdwXqIxGw
       &_render=json
       &location=palo+alto%2C+ca
       &mindist=2
       &what=parks
       &_callback=foofunction



      Optional JSONP callback function


                                  --
A year and a half in the wild:
a few observations and lessons
  • 20+ releases, 600k+ Pipes later
  • Unexpected breadth
     – Experts who want to exploit the service
     – Non-programers with much simpler needs




                                  --
Web addressable data...
  • is very malformed
  • can be slow
  • needs considerate access
  • can be untrustworthy
  • can be inaccessible from “here” (behind firewall etc)




                                --
Data in the Engine...
  • is “cleaned” (and repaired) into UTF-8
  • is cached for
     – performance
     – playing well with others
     – several HTTP proxy layers
         • serve stale and force caching
  • is “sanitized”




                                    --
Making it easy to consume
  • Its easy to make useful data in the cloud
     – Its not easy enough (for many) to use it after
     – Visualization beyond lists in RSS readers
  • Badges are frequently requested
  • Three variants for common types of data in Pipes




                                   --
Typical Pipes/mashups
  • Four types of mashup
     – Feed aggregation with filtering
     – Two-source mashups
     – Data transformation and geocoding
     – Complex mashups using REST APIs
  • Geocoding remains a “mashup” favorite




                                  --
Reasons for adoption
  • Lower barrier to use
     – Graphical editor made it quick to write Pipes, attracted non-
       developers
     – “View Source” and “Clone” for learning/tweaking
  • Wide array of data input formats and data output formats
    enabled Pipes to become a useful “component” in a larger
    ecology
  • Web 2.0 responsiveness to community




                                   --
Inaccessible data
  • Lots of requests for more rich and personal data
     – Text documents, word documents, mail, Excel spreadsheets
     – Also organizational data
  • Workarounds (to some) emerged
     – Online spreadsheets, calendars (gcal) with private RSS feeds
       and so on




                                  --
Power...
  • We started by focusing on RSS
     – high-level building blocks and operations
     – good for common tasks and novice users
  • We listened to our user’s desires




                                  --
...vs Complexity
  • Added sources for parsing JSON, XML, CSV, ICAL ...
  • Added modules that could do more and be combined in many
    ways
  • At the cost of simplicity
     – Harder to explain, use, compose
     – Stretching the capabilities of many users and a visual
       development environment




                                  --
Yahoo! Query Language
        (YQL)



         --
YQL
 • Part of the recent Y!OS release
      – Social APIs, Universal profile, Application platform...
 • Mediator service that enables developers to query, filter and
   combine Y! data and beyond
      – Yahoo! web services and any URL-addressable structured data
        sources
 • Exposes a SQL-like SELECT syntax that is both familiar to
   developers and expressive enough for getting the right data
      – YQL operates on hierarchical documents, not relational tuples
 • Like Pipes but with a simple textual language




                                     --
The language and service
  • Provides three SQL-like statements:
    SELECT, SHOW, DESC
  • Single URL endpoint for executing everything
     – Mix and match external data and Yahoo! APIs

      http://query.yahooapis.com/v1/yql?q=show%20tables

  • Uses Oauth for authentication
     – Open standard that enables users to grant applications access
       to (selected) private data




                                 --
Testing your queries: interactive console




                         --
44
     --
45
     --
46
     --
47
     --
48
     --
49
     --
50
     --
51
     --
52
     --
53
     --
54
     --
55
     --
56
     --
(Very) High Level Architecture


                             Query Web Service                                                         JSON

                                                                                         3rd party Web CSV  XML
                                                                                         Service / data      ATOM
                                                                                                                XML
                                      Execution
                                       engine
                   Factory
          YQL
       statement




                                                                                 Cache
                                     Source             Source
                    Parser
                                     Filter
                   Optimizer
                     and                      Union
                                                                                                               XML
                    builder




                                                                 Table mapping
                                                                                         Existing Web
                                               Filter

                                                                                           Service
                                               Sort


                                              Project




                                                                                                 Partially/not optimized

                                                                                                 Un-optimized/whole doc



                                                   --
Mapping tables to data sources
  • YQL wants to push as much of the query as possible to the
    remote data provider/service
  • Typically REST query/path parameters do not map closely to
    result structure
     – We call these “keys” and are named differently than dot-path
     – Simple REST definition language describes how YQL executes
       queries on “table” providers




                                  --
Remote and Local filtering, paging
  • Table data can be filtered in the WHERE clause either:
     – Remotely by the table data source provider or
     – Locally by the YQL engine
  • YQL tries to present “rows” of data
     – Abstracts away “paging” views of data sources
     – Presents a “subset” of paging tables by default

  select * from local.search(500,1000) where
  zip='94085' and query='pizza’




                                   --
IN (SELECT…): Joining across data sources
  • No left joins, sub-select only
  • Get an international weather forecast? Join two services in
    different companies:

 select * from weather.forecast where location in
    (select id from xml where
     url=quot;http://xoap.weather.com/search/search?where=praguequot;
     and itemPath=quot;search.locquot;)



  • Sub-select works the same as normal select except it can
    only return a “leaf” element value or attribute
  • Parallelizes execution



                                 --
Post-query manipulation

• Simple post-SELECT processing can be performed by appending
  the “pipe” symbol to the end of the statement:

  SELECT … |sort(field=item.date)
  SELECT … |unique(field=item.title)| …

• Functions only operate on the data being returned by the query,
  nothing to do with the tables or data sources themselves




                                --
Use it!

 • Public+private YQL tables can be accessed at:
   http://query.yahooapis.com/v1/yql?q=…
 • Oauth protected, URLs must be signed
    – 2-legged for public tables
    – 3-legged for social tables
 • Public YQL tables (soon)
    – No signing required




                                   --
Next steps, challenges
  • “Open” tables
  • Multiple authentication authority support
  • Better YQL query optimization for endpoints
  • Foreign key consistency
  • Scripting/language bindings




                                  --
Finally: Pipes without the GUI editor
  • Very popular Pipe pattern is easy to represent in YQL:


  SELECT * FROM rss WHERE url in
  (SELECT title FROM atom WHERE url=quot;http://
    spreadsheets.google.com/feeds/list/pg_T0M/
    od6/public/basicquot;)
    AND description LIKE quot;%wall street%quot; LIMIT 10
    | unique (field=title)




                                --
Conclusion: Pipes and YQL
  • Provides powerful data functions to any client
  • Consumes data from many services
  • Common data formats means any part of the cloud can
    become the input
     – Dapper, AWS, Google spreadsheets
  • ...or take the output
     – 1/3 Google mashups are powered by Pipes




                                --
Conclusion: Pipes and YQL
  • Enable developers to easily access, combine, and filter data
    to fit their application requirements
     – Self-documenting model
  • YQL provides developers with consistent and unified
    semantics for accessing data, not just Yahoo! services
  • Low overhead
  • Reduce roundtrip traffic by reducing the number of requests




                                --
Thank you


  • Pipes
     – http://pipes.yahoo.com
  • YQL
     – http://query.yahooapis.com/v1/yql
     – http://developer.yahoo.com/yql
     – http://developer.yahoo.com/yql/console
  • Get in touch
     – jtrevor@yahoo-inc.com
     – yql-questions@yahoo-inc.com




                                 --
REST def
 <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
 <table xmlns=quot;http://query.yahooapis.com/v1/schema/table.xsdquot;>
   <sampleQuery>select * from geo.places where text=quot;sfoquot;</sampleQuery>
   <endpoints>
     <endpoint itemPath=quot;places.placequot; format=quot;XMLquot;>
       <urls>
         <url env=quot;allquot;>http://where.yahooapis.com/v1/
 places=dol=and(.q($text$,$focus$),.type($placetype$))?appid=xxx</url>
       </urls>
       <paging model=quot;offsetquot;>
         <start id=quot;startquot; default=quot;0quot; matrix=quot;truequot; />
         <pagesize id=quot;countquot; max=quot;10quot; matrix=quot;truequot; />
         <total default=quot;10quot; />
       </paging>
       <keys>
         <key id=quot;textquot; type=quot;xs:stringquot; />
         <key id=quot;focusquot; type=quot;xs:stringquot; />
         <key id=quot;placetypequot; type=quot;xs:stringquot; />
       </keys>
     </endpoint>

                                   --
Doing the mobile mash




                        --
Fantasy Sports search
  • Get the edge on your friends with a single RSS feed based
    on searching 70 sites for fantasy sports blog articles




                               --
Craigslist house lookup with static Yahoo map




                        --
LastTube
  • Uses content from Last.fm and YouTube. You can watch
    Youtube’s content based on your Recently Listened Tracks
    scrobbled to Last.fm.




                              --

Más contenido relacionado

La actualidad más candente

High Performance Mobile Web
High Performance Mobile WebHigh Performance Mobile Web
High Performance Mobile WebJames D Bloom
 
Lessons from Highly Scalable Architectures at Social Networking Sites
Lessons from Highly Scalable Architectures at Social Networking SitesLessons from Highly Scalable Architectures at Social Networking Sites
Lessons from Highly Scalable Architectures at Social Networking SitesPatrick Senti
 
High Performance Mobile Web
High Performance Mobile WebHigh Performance Mobile Web
High Performance Mobile WebJames D Bloom
 
Mobile Web Best Practices
Mobile Web Best PracticesMobile Web Best Practices
Mobile Web Best PracticesJames D Bloom
 
REST Introduction (PHP London)
REST Introduction (PHP London)REST Introduction (PHP London)
REST Introduction (PHP London)Paul James
 
How Salesforce.com uses Hadoop
How Salesforce.com uses HadoopHow Salesforce.com uses Hadoop
How Salesforce.com uses HadoopNarayan Bharadwaj
 
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
OVERVIEW  OF FACEBOOK SCALABLE ARCHITECTURE.OVERVIEW  OF FACEBOOK SCALABLE ARCHITECTURE.
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.Rishikese MR
 
Shopzilla - Performance By Design
Shopzilla - Performance By DesignShopzilla - Performance By Design
Shopzilla - Performance By DesignTim Morrow
 
Mi Domain Wheel Slides
Mi Domain Wheel SlidesMi Domain Wheel Slides
Mi Domain Wheel Slideslancesfa
 
Sharded By Business Line: Migrating to a Core Database using MongoDB and Solr
Sharded By Business Line: Migrating to a Core Database using MongoDB and SolrSharded By Business Line: Migrating to a Core Database using MongoDB and Solr
Sharded By Business Line: Migrating to a Core Database using MongoDB and SolrMongoDB
 
Web前端性能分析工具导引
Web前端性能分析工具导引Web前端性能分析工具导引
Web前端性能分析工具导引冰 郭
 
How did you know this ad would be relevant for me?
How did you know this ad would be relevant for me?How did you know this ad would be relevant for me?
How did you know this ad would be relevant for me?DataWorks Summit
 

La actualidad más candente (17)

Firebug
FirebugFirebug
Firebug
 
High Performance Mobile Web
High Performance Mobile WebHigh Performance Mobile Web
High Performance Mobile Web
 
Lessons from Highly Scalable Architectures at Social Networking Sites
Lessons from Highly Scalable Architectures at Social Networking SitesLessons from Highly Scalable Architectures at Social Networking Sites
Lessons from Highly Scalable Architectures at Social Networking Sites
 
High Performance Mobile Web
High Performance Mobile WebHigh Performance Mobile Web
High Performance Mobile Web
 
Mobile Web Best Practices
Mobile Web Best PracticesMobile Web Best Practices
Mobile Web Best Practices
 
REST Introduction (PHP London)
REST Introduction (PHP London)REST Introduction (PHP London)
REST Introduction (PHP London)
 
How Salesforce.com uses Hadoop
How Salesforce.com uses HadoopHow Salesforce.com uses Hadoop
How Salesforce.com uses Hadoop
 
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
OVERVIEW  OF FACEBOOK SCALABLE ARCHITECTURE.OVERVIEW  OF FACEBOOK SCALABLE ARCHITECTURE.
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
 
Shopzilla - Performance By Design
Shopzilla - Performance By DesignShopzilla - Performance By Design
Shopzilla - Performance By Design
 
Email
Email Email
Email
 
KBACE Data Quality Management Webinar
KBACE Data Quality Management WebinarKBACE Data Quality Management Webinar
KBACE Data Quality Management Webinar
 
Mi Domain Wheel Slides
Mi Domain Wheel SlidesMi Domain Wheel Slides
Mi Domain Wheel Slides
 
Sharded By Business Line: Migrating to a Core Database using MongoDB and Solr
Sharded By Business Line: Migrating to a Core Database using MongoDB and SolrSharded By Business Line: Migrating to a Core Database using MongoDB and Solr
Sharded By Business Line: Migrating to a Core Database using MongoDB and Solr
 
Web前端性能分析工具导引
Web前端性能分析工具导引Web前端性能分析工具导引
Web前端性能分析工具导引
 
How did you know this ad would be relevant for me?
How did you know this ad would be relevant for me?How did you know this ad would be relevant for me?
How did you know this ad would be relevant for me?
 
Parsing XML in J2ME
Parsing XML in J2MEParsing XML in J2ME
Parsing XML in J2ME
 
Anti-social Databases
Anti-social DatabasesAnti-social Databases
Anti-social Databases
 

Similar a Yahoo Pipes Middleware In The Cloud

Y Pipes Mashup Camp
Y Pipes Mashup CampY Pipes Mashup Camp
Y Pipes Mashup CampJinho Jung
 
Beyond web services: supporting mashup artists at Yahoo!
Beyond web services: supporting mashup artists at Yahoo!Beyond web services: supporting mashup artists at Yahoo!
Beyond web services: supporting mashup artists at Yahoo!Chad Dickerson
 
Applications of the REST Principle
Applications of the REST PrincipleApplications of the REST Principle
Applications of the REST Principleelliando dias
 
Gates Toorcon X New School Information Gathering
Gates Toorcon X New School Information GatheringGates Toorcon X New School Information Gathering
Gates Toorcon X New School Information GatheringChris Gates
 
Google G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The WebGoogle G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The WebQConLondon2008
 
Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1QConLondon2008
 
Architectures For Scaling Ajax
Architectures For Scaling AjaxArchitectures For Scaling Ajax
Architectures For Scaling Ajaxwolframkriesing
 
Apache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesApache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesPeter
 
Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Datadeimos
 
Facebook Hadoop Data & Applications
Facebook Hadoop Data & ApplicationsFacebook Hadoop Data & Applications
Facebook Hadoop Data & Applicationsdzhou
 
ReST Vs SOA(P) ... Yawn
ReST Vs SOA(P) ... YawnReST Vs SOA(P) ... Yawn
ReST Vs SOA(P) ... Yawnozten
 
Netapp Michael Galpin
Netapp Michael GalpinNetapp Michael Galpin
Netapp Michael Galpinrajivmordani
 
Douglas Knudsen - Great Mash Up
Douglas Knudsen - Great Mash UpDouglas Knudsen - Great Mash Up
Douglas Knudsen - Great Mash Up360|Conferences
 
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScaleGDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScalePatrick Chanezon
 
iPhone Development For Experienced Web Developers
iPhone Development For Experienced Web DevelopersiPhone Development For Experienced Web Developers
iPhone Development For Experienced Web Developerslisab517
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Pierre Joye
 

Similar a Yahoo Pipes Middleware In The Cloud (20)

Y Pipes Mashup Camp
Y Pipes Mashup CampY Pipes Mashup Camp
Y Pipes Mashup Camp
 
Beyond web services: supporting mashup artists at Yahoo!
Beyond web services: supporting mashup artists at Yahoo!Beyond web services: supporting mashup artists at Yahoo!
Beyond web services: supporting mashup artists at Yahoo!
 
Applications of the REST Principle
Applications of the REST PrincipleApplications of the REST Principle
Applications of the REST Principle
 
Gates Toorcon X New School Information Gathering
Gates Toorcon X New School Information GatheringGates Toorcon X New School Information Gathering
Gates Toorcon X New School Information Gathering
 
Markup As An Api
Markup As An ApiMarkup As An Api
Markup As An Api
 
Google G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The WebGoogle G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The Web
 
Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1
 
Architectures For Scaling Ajax
Architectures For Scaling AjaxArchitectures For Scaling Ajax
Architectures For Scaling Ajax
 
20080611accel
20080611accel20080611accel
20080611accel
 
Apache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesApache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build Sites
 
Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Data
 
Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289
 
Facebook Hadoop Data & Applications
Facebook Hadoop Data & ApplicationsFacebook Hadoop Data & Applications
Facebook Hadoop Data & Applications
 
ReST Vs SOA(P) ... Yawn
ReST Vs SOA(P) ... YawnReST Vs SOA(P) ... Yawn
ReST Vs SOA(P) ... Yawn
 
Netapp Michael Galpin
Netapp Michael GalpinNetapp Michael Galpin
Netapp Michael Galpin
 
Introduction To R
Introduction To RIntroduction To R
Introduction To R
 
Douglas Knudsen - Great Mash Up
Douglas Knudsen - Great Mash UpDouglas Knudsen - Great Mash Up
Douglas Knudsen - Great Mash Up
 
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScaleGDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
 
iPhone Development For Experienced Web Developers
iPhone Development For Experienced Web DevelopersiPhone Development For Experienced Web Developers
iPhone Development For Experienced Web Developers
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
 

Más de ConSanFrancisco123

Yellowpagescom Behind The Curtain
Yellowpagescom Behind The CurtainYellowpagescom Behind The Curtain
Yellowpagescom Behind The CurtainConSanFrancisco123
 
Teamwork Is An Individual Skill How To Build Any Team Any Time
Teamwork Is An Individual Skill How To Build Any Team Any TimeTeamwork Is An Individual Skill How To Build Any Team Any Time
Teamwork Is An Individual Skill How To Build Any Team Any TimeConSanFrancisco123
 
Agility Possibilities At A Personal Level
Agility Possibilities At A Personal LevelAgility Possibilities At A Personal Level
Agility Possibilities At A Personal LevelConSanFrancisco123
 
Res Tful Enterprise Development
Res Tful Enterprise DevelopmentRes Tful Enterprise Development
Res Tful Enterprise DevelopmentConSanFrancisco123
 
Behind The Scenes At My Spacecom
Behind The Scenes At My SpacecomBehind The Scenes At My Spacecom
Behind The Scenes At My SpacecomConSanFrancisco123
 
Making Threat Modeling Useful To Software Development
Making Threat Modeling Useful To Software DevelopmentMaking Threat Modeling Useful To Software Development
Making Threat Modeling Useful To Software DevelopmentConSanFrancisco123
 
Secure Programming With Static Analysis
Secure Programming With Static AnalysisSecure Programming With Static Analysis
Secure Programming With Static AnalysisConSanFrancisco123
 
Agile Software Development In The Large
Agile Software Development In The LargeAgile Software Development In The Large
Agile Software Development In The LargeConSanFrancisco123
 
Introduction Challenges In Agile And How To Overcome Them
Introduction Challenges In Agile And How To Overcome ThemIntroduction Challenges In Agile And How To Overcome Them
Introduction Challenges In Agile And How To Overcome ThemConSanFrancisco123
 
Business Natural Languages Development In Ruby
Business Natural Languages Development In RubyBusiness Natural Languages Development In Ruby
Business Natural Languages Development In RubyConSanFrancisco123
 
Orbitz World Wide An Architectures Response To Growth And Change
Orbitz World Wide An Architectures Response To Growth And ChangeOrbitz World Wide An Architectures Response To Growth And Change
Orbitz World Wide An Architectures Response To Growth And ChangeConSanFrancisco123
 
Introduction Architectures Youve Always Wondered About
Introduction Architectures Youve Always Wondered AboutIntroduction Architectures Youve Always Wondered About
Introduction Architectures Youve Always Wondered AboutConSanFrancisco123
 
Linked In Lessons Learned And Growth And Scalability
Linked In Lessons Learned And Growth And ScalabilityLinked In Lessons Learned And Growth And Scalability
Linked In Lessons Learned And Growth And ScalabilityConSanFrancisco123
 

Más de ConSanFrancisco123 (20)

Ruby V Ms A Comparison
Ruby V Ms A ComparisonRuby V Ms A Comparison
Ruby V Ms A Comparison
 
Yellowpagescom Behind The Curtain
Yellowpagescom Behind The CurtainYellowpagescom Behind The Curtain
Yellowpagescom Behind The Curtain
 
Teamwork Is An Individual Skill How To Build Any Team Any Time
Teamwork Is An Individual Skill How To Build Any Team Any TimeTeamwork Is An Individual Skill How To Build Any Team Any Time
Teamwork Is An Individual Skill How To Build Any Team Any Time
 
Agility Possibilities At A Personal Level
Agility Possibilities At A Personal LevelAgility Possibilities At A Personal Level
Agility Possibilities At A Personal Level
 
Res Tful Enterprise Development
Res Tful Enterprise DevelopmentRes Tful Enterprise Development
Res Tful Enterprise Development
 
Gallio Crafting A Toolchain
Gallio Crafting A ToolchainGallio Crafting A Toolchain
Gallio Crafting A Toolchain
 
10 Ways To Improve Your Code
10 Ways To Improve Your Code10 Ways To Improve Your Code
10 Ways To Improve Your Code
 
Http Status Report
Http Status ReportHttp Status Report
Http Status Report
 
Behind The Scenes At My Spacecom
Behind The Scenes At My SpacecomBehind The Scenes At My Spacecom
Behind The Scenes At My Spacecom
 
Building Blueprint With Gwt
Building Blueprint With GwtBuilding Blueprint With Gwt
Building Blueprint With Gwt
 
Security Cas And Open Id
Security Cas And Open IdSecurity Cas And Open Id
Security Cas And Open Id
 
Soa And Web Services Security
Soa And Web Services SecuritySoa And Web Services Security
Soa And Web Services Security
 
Making Threat Modeling Useful To Software Development
Making Threat Modeling Useful To Software DevelopmentMaking Threat Modeling Useful To Software Development
Making Threat Modeling Useful To Software Development
 
Secure Programming With Static Analysis
Secure Programming With Static AnalysisSecure Programming With Static Analysis
Secure Programming With Static Analysis
 
Agile Software Development In The Large
Agile Software Development In The LargeAgile Software Development In The Large
Agile Software Development In The Large
 
Introduction Challenges In Agile And How To Overcome Them
Introduction Challenges In Agile And How To Overcome ThemIntroduction Challenges In Agile And How To Overcome Them
Introduction Challenges In Agile And How To Overcome Them
 
Business Natural Languages Development In Ruby
Business Natural Languages Development In RubyBusiness Natural Languages Development In Ruby
Business Natural Languages Development In Ruby
 
Orbitz World Wide An Architectures Response To Growth And Change
Orbitz World Wide An Architectures Response To Growth And ChangeOrbitz World Wide An Architectures Response To Growth And Change
Orbitz World Wide An Architectures Response To Growth And Change
 
Introduction Architectures Youve Always Wondered About
Introduction Architectures Youve Always Wondered AboutIntroduction Architectures Youve Always Wondered About
Introduction Architectures Youve Always Wondered About
 
Linked In Lessons Learned And Growth And Scalability
Linked In Lessons Learned And Growth And ScalabilityLinked In Lessons Learned And Growth And Scalability
Linked In Lessons Learned And Growth And Scalability
 

Último

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 

Último (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 

Yahoo Pipes Middleware In The Cloud

  • 1. Pipes and Y! Query Language (YQL) Jonathan Trevor (jtrevor@yahoo-inc.com)
  • 2. --
  • 3. Apt near Park How do you find an apartment near a park? --
  • 4. Apt near Park • Apartment listings – For each apartment: • Click on map link or enter an address into a browser • Check distance to a park on the map • Tedious --
  • 5. Apt near Park • Data is available – Apartment RSS feeds, craigslist, backpage.com – Yahoo! Local API to find “things” like parks • Can do it in about 50 lines of Perl code #!/usr/bin/perl -w use strict; use LWP::Simple; use XML::Simple; ... --
  • 6. Apt near Park • Basically combine feeds + web services • Yet another custom mashup – HousingMaps, ChicagoCrime, ... • Would be nice if there was an easier way... --
  • 7. Pipes grep -iv yahoo.com squid.log | sort | uniq -c | sort -n > top_sources.txt • Unix Pipes for the Web • Build useful applications from simple primitives --
  • 8. Pipes • A free service that lets you remix and create data mashups using a visual editor • No need to host, we do it for you Craigslist Yahoo! --
  • 9. Pipes • A free service that lets you remix and create data mashups using a visual editor • No need to host, we do it for you Craigslist Yahoo! --
  • 10. Demo --
  • 11. Piecing things together in the cloud --
  • 12. Any Input Craigslist Yahoo! Google Ebay Your data here! --
  • 23. Any Output RSS Badges HTML Your app here! --
  • 24. Any Process Yahoo! Local Fetch Your Web Service Here! Sort --
  • 25. Openness Craigslist RSS Yahoo! Yahoo! Fetch Local Badges Google Your Web HTML Service Here! Ebay Your app Sort Your data here! here! --
  • 26. Hot Deals Search • Searches across many different deal hunting sites on the internet looking for the best prices. You can search for particular items or just let the pipe find the best of what's available --
  • 27. Geoannotated Reuters News • Takes an RSS feed from the Reuters news service, and quot;geocodesquot; each item - making it possible to show where that news item is happening on a map of the world. --
  • 28. Who’s Viewed My LinkedIn Profile --
  • 29. Kiva Loans by Location • Gets a list of the micro-loans people have been making through the Kiva site, and shows the amazing variety of people and places that these loan are helping out. --
  • 30. Yahoo! Buzz Image Search --
  • 31. Yahoo Finance Stock Quote Watch List Feed w/ Chart --
  • 33. Yahoo Unanswered Questions • Finds those questions in the Y! answers site that don't currently have an answer - so you can show how smart you are and answer those tricky questions. --
  • 34. Babbler by Max Case • Translates IM messages in Second Life --
  • 35. Advantages to developers • Why use an online service to do this? – Leveraging large infrastructure • Faster access to network resources • Faster access to network services – System-wide knowledge – Leverage inter-organizational agreements – Easy to “string” together with other services – Easy to use (REST-style URLs) --
  • 36. Run / Get the data • Each Pipe gets its own “hosted” page • Use the REST-style URLs to get the data --
  • 37. Run / Get the data • Each Pipe gets its own “hosted” page • Use the REST-style URLs to get the data --
  • 38. Edit REST-style queries http://pipes.yahoo.com/pipes/pipe.run? _id=1mrlkB232xGjJDdwXqIxGw &_render=json &location=palo+alto%2C+ca &mindist=2 &what=parks &_callback=foofunction The ID of the Pipe --
  • 39. Edit REST-style queries http://pipes.yahoo.com/pipes/pipe.run? _id=1mrlkB232xGjJDdwXqIxGw &_render=json &location=palo+alto%2C+ca &mindist=2 &what=parks &_callback=foofunction The format of the output (rss, json, kml, ical, csv) --
  • 40. Edit REST-style queries http://pipes.yahoo.com/pipes/pipe.run? _id=1mrlkB232xGjJDdwXqIxGw &_render=json &location=palo+alto%2C+ca &mindist=2 &what=parks &_callback=foofunction The per Pipe user customizable parameters --
  • 41. Edit REST-style queries http://pipes.yahoo.com/pipes/pipe.run? _id=1mrlkB232xGjJDdwXqIxGw &_render=json &location=palo+alto%2C+ca &mindist=2 &what=parks &_callback=foofunction Optional JSONP callback function --
  • 42. A year and a half in the wild: a few observations and lessons • 20+ releases, 600k+ Pipes later • Unexpected breadth – Experts who want to exploit the service – Non-programers with much simpler needs --
  • 43. Web addressable data... • is very malformed • can be slow • needs considerate access • can be untrustworthy • can be inaccessible from “here” (behind firewall etc) --
  • 44. Data in the Engine... • is “cleaned” (and repaired) into UTF-8 • is cached for – performance – playing well with others – several HTTP proxy layers • serve stale and force caching • is “sanitized” --
  • 45. Making it easy to consume • Its easy to make useful data in the cloud – Its not easy enough (for many) to use it after – Visualization beyond lists in RSS readers • Badges are frequently requested • Three variants for common types of data in Pipes --
  • 46. Typical Pipes/mashups • Four types of mashup – Feed aggregation with filtering – Two-source mashups – Data transformation and geocoding – Complex mashups using REST APIs • Geocoding remains a “mashup” favorite --
  • 47. Reasons for adoption • Lower barrier to use – Graphical editor made it quick to write Pipes, attracted non- developers – “View Source” and “Clone” for learning/tweaking • Wide array of data input formats and data output formats enabled Pipes to become a useful “component” in a larger ecology • Web 2.0 responsiveness to community --
  • 48. Inaccessible data • Lots of requests for more rich and personal data – Text documents, word documents, mail, Excel spreadsheets – Also organizational data • Workarounds (to some) emerged – Online spreadsheets, calendars (gcal) with private RSS feeds and so on --
  • 49. Power... • We started by focusing on RSS – high-level building blocks and operations – good for common tasks and novice users • We listened to our user’s desires --
  • 50. ...vs Complexity • Added sources for parsing JSON, XML, CSV, ICAL ... • Added modules that could do more and be combined in many ways • At the cost of simplicity – Harder to explain, use, compose – Stretching the capabilities of many users and a visual development environment --
  • 52. YQL • Part of the recent Y!OS release – Social APIs, Universal profile, Application platform... • Mediator service that enables developers to query, filter and combine Y! data and beyond – Yahoo! web services and any URL-addressable structured data sources • Exposes a SQL-like SELECT syntax that is both familiar to developers and expressive enough for getting the right data – YQL operates on hierarchical documents, not relational tuples • Like Pipes but with a simple textual language --
  • 53. The language and service • Provides three SQL-like statements: SELECT, SHOW, DESC • Single URL endpoint for executing everything – Mix and match external data and Yahoo! APIs http://query.yahooapis.com/v1/yql?q=show%20tables • Uses Oauth for authentication – Open standard that enables users to grant applications access to (selected) private data --
  • 54. Testing your queries: interactive console --
  • 55. 44 --
  • 56. 45 --
  • 57. 46 --
  • 58. 47 --
  • 59. 48 --
  • 60. 49 --
  • 61. 50 --
  • 62. 51 --
  • 63. 52 --
  • 64. 53 --
  • 65. 54 --
  • 66. 55 --
  • 67. 56 --
  • 68. (Very) High Level Architecture Query Web Service JSON 3rd party Web CSV XML Service / data ATOM XML Execution engine Factory YQL statement Cache Source Source Parser Filter Optimizer and Union XML builder Table mapping Existing Web Filter Service Sort Project Partially/not optimized Un-optimized/whole doc --
  • 69. Mapping tables to data sources • YQL wants to push as much of the query as possible to the remote data provider/service • Typically REST query/path parameters do not map closely to result structure – We call these “keys” and are named differently than dot-path – Simple REST definition language describes how YQL executes queries on “table” providers --
  • 70. Remote and Local filtering, paging • Table data can be filtered in the WHERE clause either: – Remotely by the table data source provider or – Locally by the YQL engine • YQL tries to present “rows” of data – Abstracts away “paging” views of data sources – Presents a “subset” of paging tables by default select * from local.search(500,1000) where zip='94085' and query='pizza’ --
  • 71. IN (SELECT…): Joining across data sources • No left joins, sub-select only • Get an international weather forecast? Join two services in different companies: select * from weather.forecast where location in (select id from xml where url=quot;http://xoap.weather.com/search/search?where=praguequot; and itemPath=quot;search.locquot;) • Sub-select works the same as normal select except it can only return a “leaf” element value or attribute • Parallelizes execution --
  • 72. Post-query manipulation • Simple post-SELECT processing can be performed by appending the “pipe” symbol to the end of the statement: SELECT … |sort(field=item.date) SELECT … |unique(field=item.title)| … • Functions only operate on the data being returned by the query, nothing to do with the tables or data sources themselves --
  • 73. Use it! • Public+private YQL tables can be accessed at: http://query.yahooapis.com/v1/yql?q=… • Oauth protected, URLs must be signed – 2-legged for public tables – 3-legged for social tables • Public YQL tables (soon) – No signing required --
  • 74. Next steps, challenges • “Open” tables • Multiple authentication authority support • Better YQL query optimization for endpoints • Foreign key consistency • Scripting/language bindings --
  • 75. Finally: Pipes without the GUI editor • Very popular Pipe pattern is easy to represent in YQL: SELECT * FROM rss WHERE url in (SELECT title FROM atom WHERE url=quot;http:// spreadsheets.google.com/feeds/list/pg_T0M/ od6/public/basicquot;) AND description LIKE quot;%wall street%quot; LIMIT 10 | unique (field=title) --
  • 76. Conclusion: Pipes and YQL • Provides powerful data functions to any client • Consumes data from many services • Common data formats means any part of the cloud can become the input – Dapper, AWS, Google spreadsheets • ...or take the output – 1/3 Google mashups are powered by Pipes --
  • 77. Conclusion: Pipes and YQL • Enable developers to easily access, combine, and filter data to fit their application requirements – Self-documenting model • YQL provides developers with consistent and unified semantics for accessing data, not just Yahoo! services • Low overhead • Reduce roundtrip traffic by reducing the number of requests --
  • 78. Thank you • Pipes – http://pipes.yahoo.com • YQL – http://query.yahooapis.com/v1/yql – http://developer.yahoo.com/yql – http://developer.yahoo.com/yql/console • Get in touch – jtrevor@yahoo-inc.com – yql-questions@yahoo-inc.com --
  • 79. REST def <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <table xmlns=quot;http://query.yahooapis.com/v1/schema/table.xsdquot;> <sampleQuery>select * from geo.places where text=quot;sfoquot;</sampleQuery> <endpoints> <endpoint itemPath=quot;places.placequot; format=quot;XMLquot;> <urls> <url env=quot;allquot;>http://where.yahooapis.com/v1/ places=dol=and(.q($text$,$focus$),.type($placetype$))?appid=xxx</url> </urls> <paging model=quot;offsetquot;> <start id=quot;startquot; default=quot;0quot; matrix=quot;truequot; /> <pagesize id=quot;countquot; max=quot;10quot; matrix=quot;truequot; /> <total default=quot;10quot; /> </paging> <keys> <key id=quot;textquot; type=quot;xs:stringquot; /> <key id=quot;focusquot; type=quot;xs:stringquot; /> <key id=quot;placetypequot; type=quot;xs:stringquot; /> </keys> </endpoint> --
  • 80. Doing the mobile mash --
  • 81. Fantasy Sports search • Get the edge on your friends with a single RSS feed based on searching 70 sites for fantasy sports blog articles --
  • 82. Craigslist house lookup with static Yahoo map --
  • 83. LastTube • Uses content from Last.fm and YouTube. You can watch Youtube’s content based on your Recently Listened Tracks scrobbled to Last.fm. --