[Monetdb-developers] Planning the next MonetDB release

Stefan Manegold Stefan.Manegold at cwi.nl
Sun Oct 15 23:31:38 CEST 2006


Dear all,

with the recent deadlines passed and the next(?) one (SIGMOD) five weeks
ahead, it might be a good time to assess the current status of developments
around MonetDB to make more concrete plans for the next release.

I guess, we all agree that the next release should be *the* MonetDB/XQuery
Update release, i.e., providing an implementation of the W3C XQuery Update
Facility (http://www.w3.org/TR/xqupdate/) for MonetDB/XQuery.
Hence, the major focus is obviously on finishing this implementation. 
See details below under "XQuery Updates".

Concerning MQX/PF, there are three more subjects/areas where we need to see
to which extend they should be officially announced with the release (and
hence, need to be "finished" before the release):
 - algebra path (TUM: JanR, Jens)
 - recursions   (TUM: JanR, Jens)
 - XRpc         (CWI: Jennie, Peter)

Further, the 64-bit Windows port of MQX (i.e., pathfinder) is still open.

Concerning MonetDB in general, we need to see to which extend we want/need
to improve the compilation process before the release:
 - clean-up configure scripts
 - clean-up usage of *-config.h include files
 - "meta scripts" to simplify the cvs checkout/update and build process

Additionally, Niels & Fabian probably also have a todo list for MonetDB/SQL.


Finally, all parts require some thorough testing --- especially all newly
added features, in particular the XQuery update & transaction features and
the new multi-document support --- simply using it (like with the recently
added (multi-doc) benchmark tests) is a good start...

Also, there are 50(!) open bug reports, and for many (most?) bugs that have
been filed or closed since 01.01.2006, no test script has been provided,
yet, to monitor their status.

Lots of work to do...

As said, this is to trigger an assessment of the current state and a
planning for the release, hence, please feel free to comment and add your
points.

I suggest to discuss this in (or after) "MADAM" tomorrow and in the PF skype
conference on Tuesday.

Stefan


XQuery Updates
==============

As far as I'm aware, the major missing features are transaction support,
mainly logging & recovery. Undoubtedly, this is a CWI task.

Apart from that, we need to finish/extend the implementation of document
management within MonetDB/XQuery --- both in MIL & XQuery.
My vision is that we provide comparable (if not equal) functionality in
both MIL & XQuery, providing functions beyond the XQuery standard where
necessary. The envisaged functionally should cover the following:

- access a single document by name (or URI)
  XQ!: fn:doc($uri as xs:string?) as document-node()?
       Done.

- access all documents in a collection
  XQ!: fn:collection($arg as xs:string?) as node()*
       ToDo!


- shred a single document into a new "singleton" collection:
  MIL: shred_doc(str URI [,str doc-name [,str col-name]] [,lng freeSlotsPerPage]) : void
       (defaults: doc-name = URI, col-name = doc-name?doc-name:URI,
                  freeSlotsPerPage = 0 (i.e., read-only))
       Done.
  XQ!: fn:doc($uri as xs:string?) as document-node()?
       (implies doc-name = URI, col-name = URI,
        freeSlotsPerPage = 0 (i.e., read-only))
       Done.

- shred a set of documents into a single new collection:
  MIL: shred_doc(BAT[void,str] URI [,BAT[void,str] doc-name [,str col-name]] [,lng freeSlotsPerPage]) : void
       (defaults: doc-name = URI, col-name = doc-name?first-doc-name:first-URI,
                  freeSlotsPerPage = 0 (i.e., read-only))
       ToDo!
  XQ!: loop-lifted fn:doc($uri as xs:string?) as document-node()?
       (implies doc-name = URI, col-name = URI,
        freeSlotsPerPage = 0 (i.e., read-only))
       Done.
  XQ?: fn:doc($uri as xs:string*) as document-node()?
       (implies doc-name = URI, col-name = first-URI,
        freeSlotsPerPage = 0 (i.e., read-only))
       ToDo?

- shred a set of documents into a set of new collections:
  MIL: shred_doc(BAT[void,str] URI [,BAT[void,str] doc-name [,BAT[void,str] col-name]] [,BAT[void,lng] freeSlotsPerPage]) : void
       (defaults: doc-name = URI, col-name = doc-name?doc-name:URI,
                  freeSlotsPerPage = 0 (i.e., read-only))
       (constraint: freeSlotsPerPage must be identical for all documents within a collection)
       Done.
  XQ?: loop-lifted fn:doc($uri as xs:string*) as document-node()?
       (implies doc-name = URI, col-name = first-URI,
        freeSlotsPerPage = 0 (i.e., read-only))
       ToDo?


- shred a single document and add it to an existing collection:
  MIL: add_doc(str URI, str col-name [,str doc-name] [,lng freeSlotsPerPage]) : void
       (defaults: doc-name = URI, freeSlotsPerPage = 0 (i.e., read-only))
       ToDo!
  XQ?: fn:add_doc($uri as xs:string, $coll as xs:string) as document-node()?
       (implies doc-name = URI, freeSlotsPerPage = 0 (i.e., read-only))
       ToDo!

- shred a set of documents and add it to a single existing collection:
  MIL: add_doc(BAT[void,str] URI, str col-name [,BAT[void,str] doc-name] [,lng freeSlotsPerPage]) : void
       (defaults: doc-name = URI, freeSlotsPerPage = 0 (i.e., read-only))
       ToDo!
  XQ?: loop-lifted fn:add_doc($uri as xs:string, $coll as xs:string) as document-node()?
       (implies doc-name = URI, freeSlotsPerPage = 0 (i.e., read-only))
       ToDo!
  XQ?: fn:add_doc($uri as xs:string*, $coll as xs:string) as document-node()?
       (implies doc-name = first-URI, freeSlotsPerPage = 0 (i.e., read-only))
       ToDo!

- shred a set of documents and add it to a set of existing collections:
  MIL: add_doc(BAT[void,str] URI, BAT[void,str] col-name [,BAT[void,str] doc-name] [,BAT[void,lng] freeSlotsPerPage]) : void
       (defaults: doc-name = URI, freeSlotsPerPage = 0 (i.e., read-only))
       (constraint: freeSlotsPerPage must be identical for all documents within a collection)
       ToDo!
  XQ?: fn:add_doc($uri as xs:string*, $coll as xs:string*) as document-node()?
       (implies doc-name = URI, freeSlotsPerPage = 0 (i.e., read-only))
       ToDo!


- delete a single document by name (and the whole collection, if this was
  the last document in that collection)
  MIL: delete_doc(str doc-name) : void
       Done.
  XQ?: fn:del_doc($uri as xs:string) as ???
       ToDo!

- dito for a set of documents?
       
- delete a collection
  MIL: delete_col(str col-name) : void
       ToDo!
  XQ?: fn:del_col($col as xs:string) as ???
       ToDo!

- dito for a set of collections?

- delete all cached/persistent documents
  MIL: delete_all_docs(bit cachedOnly) : void
       Done.
  XQ?: fn:del_all_docs($cachedOnly as xs:boolean) as ???
       ToDo!


- view all explicitly shredded and/or cached documents and collections 
  (at least their names, maybe more info) in the database/cache, a la
  "xmlcache_print()" & "xmldb_print()"

- view/list all documents (names) in a collection

- manage cache rules


Anything more?


-- 
| Dr. Stefan Manegold | mailto:Stefan.Manegold at cwi.nl |
| CWI,  P.O.Box 94079 | http://www.cwi.nl/~manegold/  |
| 1090 GB Amsterdam   | Tel.: +31 (20) 592-4212       |
| The Netherlands     | Fax : +31 (20) 592-4312       |




More information about the developers-list mailing list