What do you want from a database driver?

Following on from my post on Monday on the new JavaScript MarkLogic DB driver for NodeJS I’ve created, I was wondering what people wanted from such a driver. In this post I make a few suggestions and ask for feedback from the community.

Current features

I’ve already added, or started to add, the following: create DB and REST API endpoint, destroy endpoint, check if endpoint exists. Save, update, get, and delete a document. Retrieve documents within a collection or directory. Do a simple search grammar text query (Google like syntax), key value search. This includes support for Basic and Digest authentication schemes over HTTP.

Potential Features

There are a range of things I could add. Below is a quick list I’ve put together based on what I think may be most useful, and what is unique to MarkLogic. I’ve pretty much covered the whole existing REST API. I’ve grouped them in to rough categories for convenience.

Please, please go to my GitHub Issues page and add, or add a +1 vote comment, to the particular features you would like. Feel free to add ones I’ve not covered below.

Search

  • Define your own search grammars (/v1/config/query)
  • Lexicon support (/v1/values)
  • Common query type wrappers
  • Aggregate functions
  • Facet configuration
  • Search result and facet rendering, paging
  • XSLT transformations in search results
  • XML results (currently just returning JSON)
  • Return additional information from search – aggregates, constraints, frequencies, metrics, plan, query, similar
  • Suggestions
  • Delete documents returned in search results (E.g. collection, directory, or clear whole database)

Enterprise

  • Easy ACID transaction support – begin, rollback, commit wrappers
  • SSL/TLS support
  • Certificate support
  • Basic+Digest (rather than one or the other) authentication
  • Support for no authentication (default user only)
  • Support XML and JSON from every method in JavaScript API
  • Content versioning
  • Is latest document version query (ETag header with content versioning enabled)

Utility

  • CSV upload and management
  • Higher level HTML and JavaScript UI widgets to wrap the API
  • Ability to use the API from browser JavaScript as well as NodeJS
  • Abstract out Basic and Digest http request wrappers so they can be used on other projects

Administration

  • Index management (/v1/config/indexes)
  • Upload and use custom transformations (/v1/config/transformation)
  • Upload custom resources (REST API endpoints)
  • Management of the server (databases, clusters, groups, forests)
  • Configuration packages
  • Clear whole database of content (via DELETE to /v1/search with no query parameters)

REST API extensions

  • Create alert to send new information within a range of a point (lat,lon) via RESTful JSON to an endpoint (nodeurl) – E.g. for a NodeJS based Situational Awareness app with a HTML 5 and WebSockets powered front end
  • XDMP SQL execution and results returning
  • XDMP SPARQL query processing
Advertisements

One comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s