Your SlideShare is downloading. ×
FY '05 Marketing Plan Overview
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

FY '05 Marketing Plan Overview

291
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
291
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Hi – my name is Jonathan Robie I’m the XQuery Technology Lead at DataDirect Technologies And one of the lead designers of the XQuery language I would like to talk to you about DataDirect XQuery 2.0
  • DataDirect XQuery is an XQuery engine That runs on any Java platform And can efficiently query XML most relational databases Web services, And flat file formats like EDI ((DataDirect is an embeddable component, and is easily installed in any Java program))
  • Data integration is hard without DataDirect XQuery Because programming is different for each data source For instance, a servlet might access Web services using SOAP and AXIS, Relational databases using JDBC and SQL Etc. You also need something like Java or JSP to integrate results
  • Remember the system with the proprietary APIs? Here is the same system with DataDirect XQuery (shown in the big grey box) Databases and XML can be queried directly as XML And queries can contain web service calls
  • The problem gets worse if you have both multiple data sources and multiple clients Most programs hard-code to the client API and the data source API That gives you a hodge-podge of programs using every combination of these APIs Difficult to maintain, difficult to understand the code
  • This can be done much more simply. The XML vision is to use one API for all clients, using HTTP + XML The XQuery vision is to use one query language for all data sources, querying them as though they were XML
  • For instance, here is an XQuery that joins data from an XML document and a relational database The first line addresses Holdings.xml, an XML document, the second line addresses “companies”, a table in a relational database It’s just a join, and all data sources are queried as though they were XML
  • Most XQuery implementations don’t do this kind of data integration Some are designed only for physical XML Implementations from database vendors work only with data in their database Server-based XQuery implementations are dependent on some application server or integration server
  • DataDirect XQuery is designed for data integration in Java applications It can access almost any data source, is easily embeddable And offers excellent performance and scalability
  • The programming API for DataDirect XQuery is XQJ, the “JDBC for XQuery” Just as JDBC, shown on the left, is the standard Java API for SQL queries XQJ, shown on the right, is the standard Java API for XQuery
  • This slide shows sources DataDirect XQuery can query on the left, Including most relational databases, XML sources, flat file formats, EDI, and Web service calls On the right, it shows that XML output can be retrieved as text, DOM, SAX, or StAX
  • Let’s think about processing XML without XQuery. Most data is exchanged as XML, but most languages are not designed to process XML. If you have objects, you use and object oriented language. If you have relational data, you use SQL. In the same way, if you have XML, you should generally use a native XML language like XQuery. Otherwise, you spend a lot of time parsing, navigating, and casting, trying to explain the XML to your programming language. Suppose, for instance, you want to process an XML stock feed and return stocks that have changed by more than one percent. What does your program have to do?
  • Without XQuery, your programming language does not understand XML, so it has to parse it, navigate it, and cast it into something it understands before it can actually process it and create an XML result. With XQuery, a simple query can return the desired result. It can process XML directly, because XQuery is based on XML. Later, we’ll also see that DataDirect XQuery can do this very, very efficiently, even for very large files.
  • This slide lists some of the more important optimizations DataDirect XQuery does for XML With DataDirect XQuery, input files can be multiple Gigabytes Most implementations can not handle documents this size
  • DataDirect XQuery is often used to create XML from relational data, using a single query The output might be data for a dynamic web page the body of a SOAP message or a report to be rendered as PDF This is much easier with XQuery than with Java code
  • Here’s why it’s easier with XQuery. Without XQuery, your Java program …. With XQuery, you simply do a query, which addresses relational data in the same way as XML. Under the covers, DataDirect XQuery speaks to the database using highly optimized SQL. We’ll examine that in more depth later.
  • DataDirect XQuery uses SQL to speak to a relational database, and because performance is important, it is very smart about the SQL it generates For instance, it minimizes retrieval of data, relies on the database for sorting and joins, and performs many optimizations
  • Sometimes you have to query data not encoded in XML, such as the EDI file in the background DataDirect provides XML converters that convert thousands of EDI formats and many other file formats to XML on the fly, so they can be queried as XML The foreground box shows a simple query and the XML it returns
  • Sometimes you have to query data not encoded in XML, such as the EDI file in the background DataDirect provides XML converters that convert thousands of EDI formats and many other file formats to XML on the fly, so they can be queried as XML The foreground box shows a simple query and the XML it returns
  • You can also make web service calls from within queries, returning the payload of the response The last line in this code makes a web service call using a web service location and a payload The function shows how easy it is to create XML for payloads using XQuery, which was designed to simplify creation of any XML format
  • The Stylus Studio XML IDE simplifies XML development, and directly supports DataDirect XQuery It includes an XQuery editor, visualization of data sources, ad-hoc queries, a debugger, and many other features. Stylus Studio can also create XML pipelines that use XQuery
  • We also provide the DataDirect Edition of the <oXygen/> plugin for Eclipse, for programmers who use the Eclipse platform This lets you use the same IDE for Java development and XQuery development It includes an XQuery editor, ad hoc queries, and visualization of data sources, using an XQuery perspective
  • If you use DataDirect XQuery … Your programs will run faster and have better scalability Your programmers will be more productive, using a tool designed for the job Your queries will be able to access just about any common data source And your programs can fit in almost any architecture
  • To get started … You can download any of the tools I mentioned from www.xquery.com, they each have a free trial www.xquery.com also has quite a bit of tutorial material that will help you get started
  • Transcript

    • 1. Jonathan Robie XQuery Technology Lead DataDirect Technologies
    • 2. DataDirect XQuery 2.0
    • 3. Data Integration without DataDirect XQuery SOAP through AXIS dBASE IV APIs JDBC Java/JSP code accessing the various Java APIs and generating the HTML report Web Browser
    • 4. The DataDirect XQuery Solution Java/JSP
    • 5. Dealing with multiple, heterogeneous Data Sources: A dangerous approach Data Access Layer
    • 6. The XQuery Vision XQuery
    • 7. Querying XML and Relational – the same way!
      • for $h in doc( &quot;holdings.xml&quot; )/holdings/entry for $c in collection( &quot;companies&quot; )/companies where $h/userid = &quot;Minollo&quot;    and $c/ticker = $h/stockticker return   < company ticker= &quot; { $c/ticker } &quot; >      { $c/companyname }      { $c/annualrevenues }   </ company >
    • 8. XQuery Data Integration? DataDirect!
      • In-memory XQuery implementations
        • Only for physical XML
      • Database XQuery implementations
        • Only for their database
        • Relational Database XQuery implementations
        • XML Database XQuery implementations
        • Full-text XQuery implementations
      • Server-based XQuery implementations
        • Only for their server
        • Application Server
        • Integration Server
      • DataDirect XQuery is Open!
        • All leading relational databases
        • XML
        • Many other data sources
        • Any app server – or none
    • 9. DataDirect XQuery
      • Accesses almost any data source
      • No dependency on servers
      • Standards-based
      • High performance
      • Scalable
      • Embeddable
      • Plugs into any Java architecture – supports XQuery for Java API (XQJ)
      **
    • 10. What is XQJ?
      • XQuery API for Java (XQJ) – JSR 225
      • “ The JDBC for XQuery”
    • 11. DataDirect XQuery – Input, Output
      • Relational Databases
        • SQL Server 2000, 2005
        • Oracle 9i, 10gR1, 10gR2
        • DB2 Windows/UNIX/Linux: v8.x, v9
        • DB2 iSeries: V5R2, V5R3
        • DB2: z/OS:  v8
        • Sybase:  12.5.x, 15
      • XML sources
        • http: ftp: and file: schemes
        • XML in DOM trees
        • Drastically reduced memory requirements for large XML documents.
        • Custom URI Resolvers
      • Legacy sources
        • Converters for CSV, EDI, and more
      • SOA Integration
        • Web Service calls
      • XML Output
        • XML as text
        • XML in DOM trees
        • XML in SAX streams
        • XML in StAX streams
    • 12. XML Processing without XQuery
      • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <soap:Envelope xmlns:soap=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;>   <soap:Body>     <GetQuotesResponse xmlns=&quot;http://swanandmokashi.com&quot;>       <GetQuotesResult>         <Quote>           <CompanyName>APPLE COMPUTER</CompanyName>            < StockTicker > AAPL < /StockTicker >            < StockQuote > 74.17 < /StockQuote >           <LastUpdated>9/14/2006 4:01pm</LastUpdated>           <Change>1.17</Change>            < PercentChange > 1.82% < /PercentChange >           <OpenPrice>N/A</OpenPrice>           <DayHighPrice>N/A</DayHighPrice>           <DayLowPrice>N/A</DayLowPrice>           <Volume>0</Volume>           <MarketCap>63.266B</MarketCap>           <YearRange>47.87 - 86.40</YearRange>           <ExDividendDate>21-Nov-95</ExDividendDate>           <DividendYield>N/A</DividendYield>           <DividendPerShare>0.00</DividendPerShare>         </Quote>       </GetQuotesResult>     </GetQuotesResponse>   </soap:Body> </soap:Envelope>
    • 13. XML Processing without XQuery
      • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <soap:Envelope xmlns:soap=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;>   <soap:Body>     <GetQuotesResponse xmlns=&quot;http://swanandmokashi.com&quot;>       <GetQuotesResult>         <Quote>           <CompanyName>APPLE COMPUTER</CompanyName>            < StockTicker > AAPL < /StockTicker >            < StockQuote > 74.17 < /StockQuote >           <LastUpdated>9/14/2006 4:01pm</LastUpdated>           <Change>1.17</Change>            < PercentChange > 1.82% < /PercentChange >           <OpenPrice>N/A</OpenPrice>           <DayHighPrice>N/A</DayHighPrice>           <DayLowPrice>N/A</DayLowPrice>           <Volume>0</Volume>           <MarketCap>63.266B</MarketCap>           <YearRange>47.87 - 86.40</YearRange>           <ExDividendDate>21-Nov-95</ExDividendDate>           <DividendYield>N/A</DividendYield>           <DividendPerShare>0.00</DividendPerShare>         </Quote>       </GetQuotesResult>     </GetQuotesResponse>   </soap:Body> </soap:Envelope>
      • Without XQuery
        • Parse XML
        • Navigate (DOM) or Capture Events (SAX)
        • Cast XML values to Java values
        • Create XML for output
      • With XQuery
      • declare default element namespace &quot;http://swanandmokashi.com&quot; ; for $q in doc( &quot;aapl.xml&quot; )//Quote where $q/PercentChange > 1 return   < Quote >     { $q/StockTicker }     { $q/StockQuote }     { $q/PercentChange }   </ Quote >
    • 14. DataDirect XQuery is fast for XML files!
      • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <soap:Envelope xmlns:soap=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;>   <soap:Body>     <GetQuotesResponse xmlns=&quot;http://swanandmokashi.com&quot;>       <GetQuotesResult>         <Quote>           <CompanyName>APPLE COMPUTER</CompanyName>            < StockTicker > AAPL < /StockTicker >            < StockQuote > 74.17 < /StockQuote >           <LastUpdated>9/14/2006 4:01pm</LastUpdated>           <Change>1.17</Change>            < PercentChange > 1.82% < /PercentChange >           <OpenPrice>N/A</OpenPrice>           <DayHighPrice>N/A</DayHighPrice>           <DayLowPrice>N/A</DayLowPrice>           <Volume>0</Volume>           <MarketCap>63.266B</MarketCap>           <YearRange>47.87 - 86.40</YearRange>           <ExDividendDate>21-Nov-95</ExDividendDate>           <DividendYield>N/A</DividendYield>           <DividendPerShare>0.00</DividendPerShare>         </Quote>       </GetQuotesResult>     </GetQuotesResponse>   </soap:Body> </soap:Envelope>
      • General XQuery rewrites
        • Elimination of common sub-expressions, loop rewrites, ordering rewrites, etc…
      • Document projection
        • XML construction accounts for much of the cost
        • Don’t build parts of the document that the query doesn’t need!
      • Document streaming
        • Discard parts of the document when no longer needed
        • Makes memory usage near constant with size of file
      • Multiple Gigabytes can be queried
    • 15. DataDirect XQuery for Relational Data < portfolio >      < company ticker= &quot;AMZN&quot; >          < companyname > Amazon.com, Inc. < /companyname >          < annualrevenues > 7780 < /annualrevenues >      < /company >      < company ticker= &quot;EBAY&quot; >          < companyname > eBay Inc. < /companyname >          < annualrevenues > 22600 < /annualrevenues >      < /company >      < company ticker= &quot;IBM&quot; >          < companyname > Int'l Business Machines C < /companyname >          < annualrevenues > 128200 < /annualrevenues >      < /company >      < company ticker= &quot;PRGS&quot; >          < companyname > Progress Software < /companyname >          < annualrevenues > 493.4 < /annualrevenues >      < /company > < /portfolio > 3000 AMZN Minollo 3000 AMZN Jonathan 4000000 PRGS Minollo 23 PRGS Jonathan SHARES TICKER USERID   HOLDINGS 10700 Yahoo! Inc. YHOO 493.4 Progress Software PRGS 22600 eBay Inc. EBAY 7780 Amazon.com, Inc. AMZN ANNUALREVENUES NAME TICKER COMPANIES
    • 16. Database Publishing without DataDirect XQuery < portfolio >      < company ticker= &quot;AMZN&quot; >          < companyname > Amazon.com, Inc. < /companyname >          < annualrevenues > 7780 < /annualrevenues >      < /company >      < company ticker= &quot;EBAY&quot; >          < companyname > eBay Inc. < /companyname >          < annualrevenues > 22600 < /annualrevenues >      < /company >      < company ticker= &quot;IBM&quot; >          < companyname > Int'l Business Machines C < /companyname >          < annualrevenues > 128200 < /annualrevenues >      < /company >      < company ticker= &quot;PRGS&quot; >          < companyname > Progress Software < /companyname >          < annualrevenues > 493.4 < /annualrevenues >      < /company > < /portfolio >
      • Without XQuery
        • Use SQL for Relational Data
        • Use JDBC for database connection
        • Use Java + XML API to build XML hierarchies from flat result sets
        • Use XSLT for transformations
      • With XQuery
      • for $h in collection( &quot;HOLDINGS&quot; )/holdings for $c in collection( &quot;COMPANIES&quot; )/companies where $h/ticker = $c/ticker    and $h/userid = &quot;Jonathan&quot; return   < portfolio >     < company ticker= &quot; {$c/ticker} &quot; >       < companyname >{string($c/name)}</ companyname >       < annualrevenues >{string($c/annualrevenues)}</ annualrevenues >     </ company >   </ portfolio >
      3000 AMZN Minollo 3000 AMZN Jonathan 4000000 PRGS Minollo 23 PRGS Jonathan SHARES TICKER USERID   HOLDINGS 10700 Yahoo! Inc. YHOO 493.4 Progress Software PRGS 22600 eBay Inc. EBAY 7780 Amazon.com, Inc. AMZN ANNUALREVENUES NAME TICKER COMPANIES
    • 17. DataDirect XQuery is fast for Relational Data! < portfolio >      < company ticker= &quot;AMZN&quot; >          < companyname > Amazon.com, Inc. < /companyname >          < annualrevenues > 7780 < /annualrevenues >      < /company >      < company ticker= &quot;EBAY&quot; >          < companyname > eBay Inc. < /companyname >          < annualrevenues > 22600 < /annualrevenues >      < /company >      < company ticker= &quot;IBM&quot; >          < companyname > Int'l Business Machines C < /companyname >          < annualrevenues > 128200 < /annualrevenues >      < /company >      < company ticker= &quot;PRGS&quot; >          < companyname > Progress Software < /companyname >          < annualrevenues > 493.4 < /annualrevenues >      < /company > < /portfolio >
      • Highly optimized for relational sources
      • Minimizes retrieval of data
        • No more rows than needed
        • No more columns than needed
      • Uses database functionality
        • Joins
        • Sorting
        • Etc..
      • Optimizes for each SQL dialect
      • Efficient JDBC retrieval
        • Embeds DataDirect JDBC technology
        • Optimizations added to support XQuery
      • Supports incremental retrieval
      • Optimizes for XML hierarchies
        • Sort-merge algorithm
        • Minimal cost of XML construction
      • Leverages SQL library
      • Recognizes equivalences
      • Supports hints
      3000 AMZN Minollo 3000 AMZN Jonathan 4000000 PRGS Minollo 23 PRGS Jonathan SHARES TICKER USERID   HOLDINGS 10700 Yahoo! Inc. YHOO 493.4 Progress Software PRGS 22600 eBay Inc. EBAY 7780 Amazon.com, Inc. AMZN ANNUALREVENUES NAME TICKER COMPANIES
    • 18. XML Converters EDI File: ISA+00+DATADIRECT+00+STYLUS2006+01+DATA DIRECT +01+STYLUS STUDIO +060504+1212+~+00503+200654321+0+I+:' GS+BF+DATADIRECT+STYLUS2006+20060504+121212+256+X+005030' ST+105+3389' BGN+28+1024+20060504+121212+GM' NM1+2L+4+Progress Software Corporation' N3+14 Oak Park Drive' N4+Bedford+MA+01730+US+AA' REF+1Z+PRGS' NM1+2L+4+Apple Computer, Inc.' N3+1 Infinite Loop' N4+Cupertino+CA+95014+US+AA' REF+1Z+AAPL' SE+11+3389' GE+1+256' IEA+1+200654321'
    • 19. XML Converters EDI File: ISA+00+DATADIRECT+00+STYLUS2006+01+DATA DIRECT +01+STYLUS STUDIO +060504+1212+~+00503+200654321+0+I+:' GS+BF+DATADIRECT+STYLUS2006+20060504+121212+256+X+005030' ST+105+3389' BGN+28+1024+20060504+121212+GM' NM1+2L+4+Progress Software Corporation' N3+14 Oak Park Drive' N4+Bedford+MA+01730+US+AA' REF+1Z+PRGS' NM1+2L+4+Apple Computer, Inc.' N3+1 Infinite Loop' N4+Cupertino+CA+95014+US+AA' REF+1Z+AAPL' SE+11+3389' GE+1+256' IEA+1+200654321' doc( &quot;adapter://EDI?ticker-request.edi&quot; ) < X12 >      < ISA >          < ISA01 >< !--I01: Authorization Information Qualifier-- > 00 < !--No Authorization Information Present (No Meaningful Information in I02)-- >< /ISA01 >          < ISA02 >< !--I02: Authorization Information-- > DATADIRECT < /ISA02 >          < ISA03 >< !--I03: Security Information Qualifier-- > 00 < !--No Security Information Present (No Meaningful Information in I04)-- >< /ISA03 >          < ISA04 >< !--I04: Security Information-- > STYLUS2006 < /ISA04 >          < ISA05 >< !--I05: Interchange ID Qualifier-- > 01 < !--Duns (Dun &amp; Bradstreet)-- >< /ISA05 >          < ISA06 >< !--I06: Interchange Sender ID-- > DATA DIRECT < /ISA06 >          < ISA07 >< !--I05: Interchange ID Qualifier-- > 01 < !--Duns (Dun &amp; Bradstreet)-- >< /ISA07 >          < ISA08 >< !--I07: Interchange Receiver ID-- > STYLUS STUDIO < /ISA08 >          < ISA09 >< !--I08: Interchange Date-- > 060504 < !--2006-05-04-- >< /ISA09 >          < ISA10 >< !--I09: Interchange Time-- > 1212 < /ISA10 >          < ISA11 >< !--I65: Repetition Separator-- > ~ < /ISA11 >          < ISA12 >< !--I11: Interchange Control Version Number-- > 00503 < !--Standards Approved for Publication by ASC X12 Procedures Review Board through October 2005-- >< /ISA12 >          < ISA13 >< !--I12: Interchange Control Number-- > 200654321 < /ISA13 >          < ISA14 >< !--I13: Acknowledgment Requested-- > 0 < !--No Interchange Acknowledgment Requested-- >< /ISA14 >          < ISA15 >< !--I14: Interchange Usage Indicator-- > I < !--Information-- >< /ISA15 >          < ISA16 >< !--I15: Component Element Separator-- > : < /ISA16 >      < /ISA >      < GS >          < GS01 >< !--479: Functional Identifier Code-- > BF < !--Business Entity Filings (105)-- >< /GS01 >          < GS02 >< !--142: Application Sender's Code-- > DATADIRECT < /GS02 >          < GS03 >< !--124: Application Receiver's Code-- > STYLUS2006 < /GS03 >          < GS04 >< !--373: Date-- > 20060504 < !--2006-05-04-- >< /GS04 >          < GS05 >< !--337: Time-- > 121212 < /GS05 >          < GS06 >< !--28: Group Control Number-- > 256 < /GS06 >          < GS07 >< !--455: Responsible Agency Code-- > X < !--Accredited Standards Committee X12-- >< /GS07 >          < GS08 >< !--480: Version / Release / Industry Identifier Code-- > 005030 < !--Standards Approved for Publication by ASC X12 Procedures Review Board through October 2005-- >< /GS08 >      < /GS >
    • 20. SOA - Web Services declare function local:amazon-listing($isbn) {     < tns:Request >       < tns:Condition >All</ tns:Condition >       < tns:DeliveryMethod >Ship</ tns:DeliveryMethod >       < tns:FutureLaunchDate />       < tns:IdType >ASIN</ tns:IdType >       < tns:ItemId >{ $isbn }</ tns:ItemId >       < tns:ResponseGroup >Medium</ tns:ResponseGroup >     </ tns:Request > }; let $loc := < location address= &quot;http://soap.amazon.com/onca/soap?Service=AWSECommerceService&quot; soapaction= &quot;http://soap.amazon.com&quot; /> let $payload := local:amazon-listing( &quot;0395518482&quot; ) return ws:call($loc, $payload)
    • 21. DataDirect Stylus Studio IDE
      • DataDirect Stylus Studio®
        • General-purpose XML IDE
        • XQuery Editor
        • Ad-hoc queries
        • Database Connections Window
        • XQuery Mapper
        • XQuery Debugger
        • XML Publisher
        • XML Pipeline
    • 22. <oXygen/> plugin for Eclipse (DataDirect Edition)
      • <oXygen/> plugin for Eclipse (DataDirect Edition)
        • Eclipse-based
        • XQuery Editor
        • Ad-hoc queries
        • Database Connections Window
        • XQuery Perspective
    • 23. Why DataDirect XQuery?
      • Performance
        • Generates highly optimized SQL code for relational databases
        • Excellent performance for very large XML files
        • Programs written with DataDirect XQuery generally outperform programs written with Java + XML APIs + JDBC
      • Programmer productivity
        • Using XQuery means 7 to 20 times less code
        • Using XQuery means code is easier to read and maintain
        • XQuery IDEs increase productivity
      • Support for most common data sources
        • XML, Relational, Flat File, EDI, Web Service calls …
        • Extensible via Java
      • Fits in almost any architecture
        • Supports all leading relational databases
        • Easily embeddable - does not require any server
        • Supports any J2EE Application Server
        • Runs on any Java platform
    • 24. Getting Started …
      • www.xquery.com
        • Free Trial Download
        • Tutorials
          • XQuery
          • XQJ
          • DataDirect XQuery
        • Support Forums