Extensibility & Object-Relational Systems

Extensibility: The Ultimate API Design Challenge

Elegance of extensibility API drives both Performance and Functionality

Q: What's the difference between an API and a language?

Aside: Program as Proof

Note the top-down design philosophy! Related note: typically SW engineering cycle is top-down:
  1. Brainstorm
  2. Approval for business reasons
  3. Functional spec followed by review
  4. Design spec followed by review (and perhaps redo functional spec)
  5. Code
  6. Test (...code...test...code...test...etc.)

Extensible DBMS Motivation & Politics

In the early 80’s, it became clear that Relational systems were not powerful enough for non-administrative data-intensive applications of the day:

Can roll the logic in the app, but two key problems:


Two buzz-phrases began to emerge: "Object-Oriented" and "Extensible" Databases

Much vision & politics ensued:

Systems were built, companies started, etc.

By now, the dust of battle has cleared:

Object-relational won in the marketplace, and remaining OODB companies struggling to redefine themselves (ObjectStore now trying to sell an XML database engine!)

Systems History

Influential research systems: Today: focus on POSTGRES, discuss Starburst briefly.
 

Object-Relational Systems

Informix's buzzphrase for extensible relational systems (courtesy Roger Sippl).  Didn't patent the name!

Query-based, extensible systems with some OO features like inheritance and OIDs.

SQL99 is very much like this.

Stonebraker’s application matrix:
 

Query  RDBMS ORDBMS 
No Query File Sys.  OODBMS 
  Simple Data Complex Data

Argues that the upper right is growing, and will engulf upper left and lower right.
 
 

Hot Applications:

Players:

Overview: Things needed in an Object-Relational DBMS

(From the "Third-Generation Database System Manifesto")

The relational data model (as implemented!) is "semantically impoverished":

Instead, people want a "semantically rich" data model

Stonebraker: Extensible ADTs

Seminal paper.

Idea: you should be able to add new atomic types to the system, along with methods for the types, and new access methods.

Type is defined by:

Then you could do standard relational processing over those types.

Example: add 2d spatial operators to RDBMS

Engineering issues (some from the paper, some not):

 Note: Extensible ADTs do not fundamentally change a relational system

POSTGRES

Stonebraker, Rowe, a few staff and many students, 1986-1994. Post-INGRES.

 The Postgres Data Model

  1. Co-opt the OO terminology
  2. Support extensible ADTs
  3. Support type constructors
  4. added class inheritance (gives method inheritance and collection hierarchies)
Implementation Details Postgres Rule System: Active Database support. Other Postgres stuff Editorial Comments

Starburst

Original goal: build a nice playpen for whatever comes next.

Extensible "in-house". Not by users!

No one survey paper seems to capture the work they did. Best bet: "Starburst Mid-Flight: As The Dust Clears", Haas, et al., TKDE 1990

Extensibility features:

"Proofs" of Extensibility: Many of the Starburst folks took a "vacation" from research, and merged Starburst technology into DB2 UDB.