MarkLogic APIs galore…

An update about API wrappers in MarkLogic, including a teaser for the API session at MarkLogic World 2013…

As many of you may know I’ve been working on a NodeJS JavaScript driver for MarkLogic V6+ called MLDB. I’ve recently updated this work, and started working on other API too. Below is a taste of what’s coming soon in OpenSource API wrappers for MarkLogic…

MLDB – NodeJS JavaScript database driver

I’ve been continuing work on my MLDB NodeJS driver. I’m about to release the February version (Yes, I know it’s March now!) which includes a few minor bug fixes, a fully tested saveAll and alternate (thread throttled) saveAll2 function. The main work, however, is around an extension I’ve written that enables you to save a search as an alert, and specify a URL and format (XML or JSON) for documents to be sent to when they match your alert.

I’ve used this to create a real time alerting application using a mixture of NodeJS Request and MLDB with HTML5 and WebSockets on the front end. I’ve also used MLDB to write a Jabber bot – you can send searches to this or receive alerts to your desktop! Pretty useful stuff.

As always I’m open to requests for enhancement. Please fill in a new request on the MLDB issues page and I’ll get to it.

MLDotNet – .NET MLDB equivalent

I had a thought that a file sync client much like DropBox or SugarSync would be useful for MarkLogic. Not only to get files in to an ML system, but also for ourselves in Pre-Sales when we need to copy application code to a modules database. We’ve talked a lot about this internally, and thought about using NodeJS on the command line to do it.

I had a recent meeting with a British University where they mentioned SparkleShare, and that they were testing this for internal research documents sharing. This sounded like a good fit, so I took a look. Happily, although the default backend is Git based, it does support custom ones being plugged in to it using a pretty simple API. This also works cross platform.

SparkleShare is written in .NET though, so I’ve had to brush up the old C# skills and get coding! I decided to create a .NET version of MLDB – as I know this approach works, and means I really only have to remember one API rather than two different ones. I’ve started this work now.

It’s early days on this project but I aim to support all the standard functionality in MLDB within this MLDotNet wrapper. Also found out a partner has started writing an ML.NET driver. Only found this out after creating my Git repository though! Ah well. If MarkLogic takes it on officially we’ll have to give a different name to it anyway I would imagine.

Again, if you have any requests please visit this project’s separate issues page.

MarkLogic World 2013

I’ve been collaborating with colleagues at MarkLogic on a session covering the new V6 REST API, the Java wrapper, as well as other independently developed wrappers by MarkLogic staffers. We’re going to talk about my MLDB NodeJS wrapper, MLDotNet, MLPHP and Ruby on Rails ActiveDocument.

If you’re interested in any of these, or have thought about writing your own wrapper, then come along to this session.

MarkLogic World registration is still open, so book now to avoid disappointment!


  1. This is great work !
    Considering the need to easily deploy applications to an ML modules database for SE’s (or anyone). I have a simple script which is much like “rsync” in that it keeps a MD5 property for every document and in one command can copy a directory tree to ML only copying changed files. I use this daily for keeping a working copy in sync with a ML Database.
    Ping me if you are interested.
    -David Lee

Leave a Reply

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

You are commenting using your 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 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.