Monday, November 08, 2004

Having recently started working in Oracle again, on the server side to be exact, I am struck by how unintuitive the syntax is. To query an initialisation parameter, you would have to say 'SHOW PARAMETER <parameter name>'. To determine some other database property, you may have to fire a SELECT statement against a data dictionary view. The point is, there is no universal way of doing things. This may not seem like a big deal for someone steeped in DBA-related matters, but definitely makes the learning curve steeper. Of course, there are GUI applications like DBArtisan that hide this complexity, though I don't think they are very amenable with regard to programmability/scripting.

This got me thinking: why doesn't somebody write a parcel in VisualWorks that hides this complexity? We could have an object model that maps on to the various DB objects (mind you, what I have in mind is different from a typical client-side database package that is used for end-user database applications). For example, we could have a Database object at the top of the hierarchy. You will then do stuff like:

aDatabase := OracleDatabase new.
aDatabase host: someIP sid: someSID user: someUser password: somePassword.
allTablespaces := aDatabase getTablespaces. "returns a collection of all the tablespaces"
allParams := aDatabase getInitParams. "dictionary of init.ora parameters"

I think I will post this to comp.lang.smalltalk.