SlideShare a Scribd company logo
Using HTML5 to Build Offline
        Applications
            Woody Pewitt
          Icenium Evangelist
              @woodyp
         woodyp@telerik.com
Features that make HTML5 offline web apps a reality

• Application cache
• Online/Offline events
• localStorage
• Web SQL & indexed database
Application cache

• Offline browsing
• Speed
• Reduced server load
App Cache Via. Cache Manifest

                                              CACHE MANIFEST
                                              # version 0.4
                                              # Files to cache
<html manifest="demo.manifest">
...                                           CACHE:
</html>                                       favicon.ico
                                              index.html
                                              onlinedemo.html
                                              fallback.html
                                              Content/jquery.mobile-1.1.1.min.css
                                              Scripts/jquery-1.6.4.min.js
                                              Scripts/jquery.mobile-1.1.1.js
                                              Content/images/ajax-loader.gif
            Manifest file must be served      Content/images/icons-18-white.png
               with the mime-type
              “text/cache-manifest”           NETWORK:
                                              *

                                              FALLBACK:
             http://manifest-validator.com/   *.html fallback.html
Online/Offline events

• checking
    • Fired once when the app reads the manifest file to see if it has changed.
• noupdate
    • The manifest file has not changed.
• downloading
    • Files are being downloaded
• progress
    • Fired once per each file downloaded. If you have 15 files, you’ll see 15 progress events. Unfortunately, the event
      itself doesn’t contain information about which file just completed, so it’s fairly limited in its current form.
• cached
    • Files have finished downloading.
• updateready
    • A new copy of the cache is ready to be swapped in.
• obsolete
    • The manifest file is code 404 or code 410; the application cache for the site has been deleted.
• error
    • An error occurred when loading the manifest, its parent page, or a listed resource, or the manifest file changed
      while the update was running. The cache update has been aborted.
LocalStorage

• Web Storage
   • Provides a simple key-value mapping
• Web SQL Database
   • Gives you all the power - and effort - of a structured SQL relational database
• IndexedDB
   • Like Web Storage, it's a straightforward key-value mapping, but it supports
     indexes
• File Access
   • An API for reading file content in JavaScript
Web Storage

• localStorage & sessionStorage

• Supported on all modern browsers
• Simple API & usage
• Semantic events available

• Poor performance with large/complex data
   • searching, storing and retrieving
Web SQL Database

• Supported on major mobile browsers
   • Android Browser, Mobile Safari, Opera Mobile & several desktop browsers
• Good performance generally
   • Asynchronous API (Synchronous API is also available for WebWorkers.)
• Good search performance
• Robust
   • Supports a transactional database model
• Easier to maintain integrity of data, due to rigid data structure.
IndexedDB

• Arisen from experiences with both Web Storage & Web SQL Database
• Can be seen as an attempt to combine their strengths without
  incurring their weaknesses

• Asynchronous API
• Indexes
File Access

• Can store large content and binary files
   • images, audio, video, PDFs, etc.
• Good performance
   • Asynchronous API


• Very early standard
• No transaction support
• No built-in search/indexing support
ResourcesReferences

• http://www.html5rocks.com/en/features/offline
• http://www.html5rocks.com/en/mobile/workingoffthegrid/
• http://www.alistapart.com/articles/application-cache-is-a-
  douchebag/
Ad

Recommended

Super quick introduction to html5
Super quick introduction to html5
Woody Pewitt
 
Website cloning using backtrack 5
Website cloning using backtrack 5
Tamajit Chakraborty
 
SPDY
SPDY
gavinthirlwall
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_php
Jeanho Chu
 
INLS461_day14a.ppt
INLS461_day14a.ppt
webhostingguy
 
Best Practices for Building Sites in dotCMS
Best Practices for Building Sites in dotCMS
Michael Fienen
 
Web app architecture
Web app architecture
Jordan Open Source Association
 
Offline Web Apps
Offline Web Apps
Artem Tabalin
 
State of the Web
State of the Web
Dmitry Buzdin
 
Web development using ASP.NET MVC
Web development using ASP.NET MVC
Adil Mughal
 
Forms as Structured Content
Forms as Structured Content
dotCMS
 
Java script tutorial
Java script tutorial
Son Nguyen
 
Using Microsoft Azure as cloud file server
Using Microsoft Azure as cloud file server
jimliddle
 
Bundle Splitting in Volto
Bundle Splitting in Volto
PloneFoundation
 
Expert guide for PHP
Expert guide for PHP
Steve Fort
 
Html5 Exploring -- by Udayakumar Mathivanan
Html5 Exploring -- by Udayakumar Mathivanan
Udaya Kumar
 
HTML5 tutorials for beginners - Imrokraft
HTML5 tutorials for beginners - Imrokraft
imrokraft
 
About Caching
About Caching
Weng Wei
 
Multi-mania: Hacking your way through website issues with F12 devtools
Multi-mania: Hacking your way through website issues with F12 devtools
Katrien De Graeve
 
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
guestc75cdc
 
Performance anti patterns in ajax applications
Performance anti patterns in ajax applications
SergeyChernyshev
 
JS in Rural Communities
JS in Rural Communities
Matt Keas
 
Keystone.js 101
Keystone.js 101
Alexander Roche
 
When dynamic becomes static : the next step in web caching techniques
When dynamic becomes static : the next step in web caching techniques
Wim Godden
 
Multi-content Containers in dotCMS 3.0
Multi-content Containers in dotCMS 3.0
Jason Smith
 
CGS2835 HTML5
CGS2835 HTML5
Program in Interdisciplinary Computing
 
Managed WordPress Demystified
Managed WordPress Demystified
NewPath Consulting (Technology for Small Business)
 
Front-End Development
Front-End Development
Hein Htet Aung
 
Html5 cache mechanism & local storage
Html5 cache mechanism & local storage
Sendhil Kumar Kannan
 
HTML5 Programming
HTML5 Programming
hotrannam
 

More Related Content

What's hot (20)

State of the Web
State of the Web
Dmitry Buzdin
 
Web development using ASP.NET MVC
Web development using ASP.NET MVC
Adil Mughal
 
Forms as Structured Content
Forms as Structured Content
dotCMS
 
Java script tutorial
Java script tutorial
Son Nguyen
 
Using Microsoft Azure as cloud file server
Using Microsoft Azure as cloud file server
jimliddle
 
Bundle Splitting in Volto
Bundle Splitting in Volto
PloneFoundation
 
Expert guide for PHP
Expert guide for PHP
Steve Fort
 
Html5 Exploring -- by Udayakumar Mathivanan
Html5 Exploring -- by Udayakumar Mathivanan
Udaya Kumar
 
HTML5 tutorials for beginners - Imrokraft
HTML5 tutorials for beginners - Imrokraft
imrokraft
 
About Caching
About Caching
Weng Wei
 
Multi-mania: Hacking your way through website issues with F12 devtools
Multi-mania: Hacking your way through website issues with F12 devtools
Katrien De Graeve
 
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
guestc75cdc
 
Performance anti patterns in ajax applications
Performance anti patterns in ajax applications
SergeyChernyshev
 
JS in Rural Communities
JS in Rural Communities
Matt Keas
 
Keystone.js 101
Keystone.js 101
Alexander Roche
 
When dynamic becomes static : the next step in web caching techniques
When dynamic becomes static : the next step in web caching techniques
Wim Godden
 
Multi-content Containers in dotCMS 3.0
Multi-content Containers in dotCMS 3.0
Jason Smith
 
CGS2835 HTML5
CGS2835 HTML5
Program in Interdisciplinary Computing
 
Managed WordPress Demystified
Managed WordPress Demystified
NewPath Consulting (Technology for Small Business)
 
Front-End Development
Front-End Development
Hein Htet Aung
 
Web development using ASP.NET MVC
Web development using ASP.NET MVC
Adil Mughal
 
Forms as Structured Content
Forms as Structured Content
dotCMS
 
Java script tutorial
Java script tutorial
Son Nguyen
 
Using Microsoft Azure as cloud file server
Using Microsoft Azure as cloud file server
jimliddle
 
Bundle Splitting in Volto
Bundle Splitting in Volto
PloneFoundation
 
Expert guide for PHP
Expert guide for PHP
Steve Fort
 
Html5 Exploring -- by Udayakumar Mathivanan
Html5 Exploring -- by Udayakumar Mathivanan
Udaya Kumar
 
HTML5 tutorials for beginners - Imrokraft
HTML5 tutorials for beginners - Imrokraft
imrokraft
 
About Caching
About Caching
Weng Wei
 
Multi-mania: Hacking your way through website issues with F12 devtools
Multi-mania: Hacking your way through website issues with F12 devtools
Katrien De Graeve
 
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
guestc75cdc
 
Performance anti patterns in ajax applications
Performance anti patterns in ajax applications
SergeyChernyshev
 
JS in Rural Communities
JS in Rural Communities
Matt Keas
 
When dynamic becomes static : the next step in web caching techniques
When dynamic becomes static : the next step in web caching techniques
Wim Godden
 
Multi-content Containers in dotCMS 3.0
Multi-content Containers in dotCMS 3.0
Jason Smith
 

Similar to Using html5 to build offline applications (20)

Html5 cache mechanism & local storage
Html5 cache mechanism & local storage
Sendhil Kumar Kannan
 
HTML5 Programming
HTML5 Programming
hotrannam
 
your browser, your storage
your browser, your storage
Francesco Fullone
 
Local storage
Local storage
Adam Crabtree
 
Html5
Html5
Zahin Omar Alwa
 
HTML5 Offline Web Applications (Silicon Valley User Group)
HTML5 Offline Web Applications (Silicon Valley User Group)
robinzimmermann
 
The Mobile Web - HTML5 on mobile devices
The Mobile Web - HTML5 on mobile devices
Wesley Hales
 
XPages Mobile, #dd13
XPages Mobile, #dd13
Dominopoint - Italian Lotus User Group
 
Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2
Microsoft Iceland
 
Rails for Mobile Devices @ Conferencia Rails 2011
Rails for Mobile Devices @ Conferencia Rails 2011
Alberto Perdomo
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
Timothy Fisher
 
PLAT-17 Alfresco iOS Mobile Application Details and Design
PLAT-17 Alfresco iOS Mobile Application Details and Design
Alfresco Software
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
Ulrich Krause
 
Alfresco Tech Talk Live on WCM to WCS Migration
Alfresco Tech Talk Live on WCM to WCS Migration
Alfresco Software
 
Accelerating Rails with edge caching
Accelerating Rails with edge caching
Michael May
 
Alfresco overview EDM
Alfresco overview EDM
sang nguyen
 
Html5 Application Security
Html5 Application Security
chuckbt
 
IWMW 2003: Content Management - Buy or Build?
IWMW 2003: Content Management - Buy or Build?
IWMW
 
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
Alfresco Software
 
Fluxible
Fluxible
Taylor Lovett
 
Html5 cache mechanism & local storage
Html5 cache mechanism & local storage
Sendhil Kumar Kannan
 
HTML5 Programming
HTML5 Programming
hotrannam
 
HTML5 Offline Web Applications (Silicon Valley User Group)
HTML5 Offline Web Applications (Silicon Valley User Group)
robinzimmermann
 
The Mobile Web - HTML5 on mobile devices
The Mobile Web - HTML5 on mobile devices
Wesley Hales
 
Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2
Microsoft Iceland
 
Rails for Mobile Devices @ Conferencia Rails 2011
Rails for Mobile Devices @ Conferencia Rails 2011
Alberto Perdomo
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
Timothy Fisher
 
PLAT-17 Alfresco iOS Mobile Application Details and Design
PLAT-17 Alfresco iOS Mobile Application Details and Design
Alfresco Software
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
Ulrich Krause
 
Alfresco Tech Talk Live on WCM to WCS Migration
Alfresco Tech Talk Live on WCM to WCS Migration
Alfresco Software
 
Accelerating Rails with edge caching
Accelerating Rails with edge caching
Michael May
 
Alfresco overview EDM
Alfresco overview EDM
sang nguyen
 
Html5 Application Security
Html5 Application Security
chuckbt
 
IWMW 2003: Content Management - Buy or Build?
IWMW 2003: Content Management - Buy or Build?
IWMW
 
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
Alfresco Software
 
Ad

More from Woody Pewitt (12)

Developing serverless applications with .NET on AWS
Developing serverless applications with .NET on AWS
Woody Pewitt
 
Qcon sf - html5 cross-platform mobile solutions
Qcon sf - html5 cross-platform mobile solutions
Woody Pewitt
 
Is your C# optimized
Is your C# optimized
Woody Pewitt
 
Technical debt
Technical debt
Woody Pewitt
 
From port 80 to applications
From port 80 to applications
Woody Pewitt
 
Technical Debt
Technical Debt
Woody Pewitt
 
Mobile Web Best Practices
Mobile Web Best Practices
Woody Pewitt
 
Internet protocalls & WCF/DReAM
Internet protocalls & WCF/DReAM
Woody Pewitt
 
How To Create Web Sites For Mobile Clients
How To Create Web Sites For Mobile Clients
Woody Pewitt
 
.Net Garbage Collector 101
.Net Garbage Collector 101
Woody Pewitt
 
San Diego ASP.NET Meeting Oct 21st
San Diego ASP.NET Meeting Oct 21st
Woody Pewitt
 
San Diego Clound Computing Sep 9th
San Diego Clound Computing Sep 9th
Woody Pewitt
 
Developing serverless applications with .NET on AWS
Developing serverless applications with .NET on AWS
Woody Pewitt
 
Qcon sf - html5 cross-platform mobile solutions
Qcon sf - html5 cross-platform mobile solutions
Woody Pewitt
 
Is your C# optimized
Is your C# optimized
Woody Pewitt
 
From port 80 to applications
From port 80 to applications
Woody Pewitt
 
Mobile Web Best Practices
Mobile Web Best Practices
Woody Pewitt
 
Internet protocalls & WCF/DReAM
Internet protocalls & WCF/DReAM
Woody Pewitt
 
How To Create Web Sites For Mobile Clients
How To Create Web Sites For Mobile Clients
Woody Pewitt
 
.Net Garbage Collector 101
.Net Garbage Collector 101
Woody Pewitt
 
San Diego ASP.NET Meeting Oct 21st
San Diego ASP.NET Meeting Oct 21st
Woody Pewitt
 
San Diego Clound Computing Sep 9th
San Diego Clound Computing Sep 9th
Woody Pewitt
 
Ad

Recently uploaded (20)

You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Safe Software
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
Edge AI and Vision Alliance
 
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Safe Software
 
Information Security Response Team Nepal_npCERT_Vice_President_Sudan_Jha.pdf
Information Security Response Team Nepal_npCERT_Vice_President_Sudan_Jha.pdf
ICT Frame Magazine Pvt. Ltd.
 
Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
 
The Future of AI Agent Development Trends to Watch.pptx
The Future of AI Agent Development Trends to Watch.pptx
Lisa ward
 
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
 
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
10 Key Challenges for AI within the EU Data Protection Framework.pdf
10 Key Challenges for AI within the EU Data Protection Framework.pdf
Priyanka Aash
 
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Safe Software
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
Edge AI and Vision Alliance
 
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Safe Software
 
Information Security Response Team Nepal_npCERT_Vice_President_Sudan_Jha.pdf
Information Security Response Team Nepal_npCERT_Vice_President_Sudan_Jha.pdf
ICT Frame Magazine Pvt. Ltd.
 
Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
 
The Future of AI Agent Development Trends to Watch.pptx
The Future of AI Agent Development Trends to Watch.pptx
Lisa ward
 
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
 
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
10 Key Challenges for AI within the EU Data Protection Framework.pdf
10 Key Challenges for AI within the EU Data Protection Framework.pdf
Priyanka Aash
 
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 

Using html5 to build offline applications

  • 1. Using HTML5 to Build Offline Applications Woody Pewitt Icenium Evangelist @woodyp [email protected]
  • 2. Features that make HTML5 offline web apps a reality • Application cache • Online/Offline events • localStorage • Web SQL & indexed database
  • 3. Application cache • Offline browsing • Speed • Reduced server load
  • 4. App Cache Via. Cache Manifest CACHE MANIFEST # version 0.4 # Files to cache <html manifest="demo.manifest"> ... CACHE: </html> favicon.ico index.html onlinedemo.html fallback.html Content/jquery.mobile-1.1.1.min.css Scripts/jquery-1.6.4.min.js Scripts/jquery.mobile-1.1.1.js Content/images/ajax-loader.gif Manifest file must be served Content/images/icons-18-white.png with the mime-type “text/cache-manifest” NETWORK: * FALLBACK: http://manifest-validator.com/ *.html fallback.html
  • 5. Online/Offline events • checking • Fired once when the app reads the manifest file to see if it has changed. • noupdate • The manifest file has not changed. • downloading • Files are being downloaded • progress • Fired once per each file downloaded. If you have 15 files, you’ll see 15 progress events. Unfortunately, the event itself doesn’t contain information about which file just completed, so it’s fairly limited in its current form. • cached • Files have finished downloading. • updateready • A new copy of the cache is ready to be swapped in. • obsolete • The manifest file is code 404 or code 410; the application cache for the site has been deleted. • error • An error occurred when loading the manifest, its parent page, or a listed resource, or the manifest file changed while the update was running. The cache update has been aborted.
  • 6. LocalStorage • Web Storage • Provides a simple key-value mapping • Web SQL Database • Gives you all the power - and effort - of a structured SQL relational database • IndexedDB • Like Web Storage, it's a straightforward key-value mapping, but it supports indexes • File Access • An API for reading file content in JavaScript
  • 7. Web Storage • localStorage & sessionStorage • Supported on all modern browsers • Simple API & usage • Semantic events available • Poor performance with large/complex data • searching, storing and retrieving
  • 8. Web SQL Database • Supported on major mobile browsers • Android Browser, Mobile Safari, Opera Mobile & several desktop browsers • Good performance generally • Asynchronous API (Synchronous API is also available for WebWorkers.) • Good search performance • Robust • Supports a transactional database model • Easier to maintain integrity of data, due to rigid data structure.
  • 9. IndexedDB • Arisen from experiences with both Web Storage & Web SQL Database • Can be seen as an attempt to combine their strengths without incurring their weaknesses • Asynchronous API • Indexes
  • 10. File Access • Can store large content and binary files • images, audio, video, PDFs, etc. • Good performance • Asynchronous API • Very early standard • No transaction support • No built-in search/indexing support