Mike Carey - Microsoft Research

Download Report

Transcript Mike Carey - Microsoft Research

••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
Going, Going, … Gong!
(a.k.a. What I Wish Database
Researchers Would Solve For Me)
Mike Carey
BEA Systems, Inc.
May 2003
Time to Revisit DB Server Basics!
••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Basic design of today’s major DB server products
dates back to the Client-Server Era (~early 1980’s)
– Revisit server architectures and their APIs!
• 1980’s assumptions no longer hold (if they ever did)
– Clients don’t talk to DB servers – applications talk
to DB servers (ex: SAP, J2EE apps, web services)
– Application servers and applications end up
redoing and/or working around DBMS features
• Security ends up in the application
• App servers or apps do connection pooling
• Apps use programming tricks / patterns to deal with
disconnection, result pagination, etc.
Idea #1: Modernize DBMS APIs
••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• Revisit client/server state management
– Everything must be lighter and cheaper!
• Connections (no pooling)
• User identity management
• Fix the client/server result handling model
– Lightweight paginated results
• Ex: 1003 matching products – first 20, next 20, …
• Let client consume query results incrementally
• Don’t hold critical DB resources (locks, buffers, …)
– Optimistic updates (single- and multi-row)
• Read / think / update support for interactive web apps
(e.g., disconnected rowsets) is ad hoc
• Now time to ignore [Agrawal, Carey, Livny 1987]? ()
Idea #2: Be Middleware-Friendly
••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
• DB servers ought to cooperate with middleware that
does caching and needs to be change-aware
– EJB servers, data integration servers, fancy apps
– Note: Remember that the world is heterogeneous!
• I’m not sure what this means, but it might mean
– Support gazillions of triggers, and/or
– Add external change eventstream APIs, and/or
– Add native (standard) support for version stamps?