Recently I stumbled on Orchestrate service:
Orchestrate unifies multiple databases through one simple REST API. Orchestrate runs as a service and supports queries like full-text search, events, graph, and key/value.
Orchestrate handles security, monitoring, backups, and replication. There are no licenses to buy, no software to download, no hidden costs, and no lock-in.
The big attraction of this service is its pricing model and what it offers for it. They charge USD $2 per millions of ops no matter what kind of the operation is being performed (no additional storage, bandwidth, backup costs) and at the same time offer much more than just key/value store.
To test it out I built a small data collection service using its events API and this proved to be very easy, reducing the entire interaction to a single
POST (as it should be - of course). So it works as advertised - which for me is the highest compliment (I hate services that waste my time).
The rich API that the service offers is at the same time its biggest advantage and its worst weakness. This is simply because if you use the full extent of their API, you have locked yourself in as there is no frictionless alternative. If you use the key/value storage subset of the API then the attraction of the service is much lower though I would still likely use it due to its great business model. I would much prefer to see this kind of high-level API created on top of an open-source database (there's an idea) like CouchDb that would allow me to self-host or use some other DBaaS compatible with CouchDb API (like Cloudant which I use in production)
So when Tony Falco from Orchestrate reached out to me in regards my thoughts on their service, I used the opportunity to ask him about the lock-in and what exactly do they mean with "zero lock-in" they promote on their site. Here's his answer in full:
Thanks for getting back to us. I am glad to hear you found the system to work smoothly for your use case.
Lock-in is an important topic for us. We want users to always feel like they can leave at any time. We have written on the topic as both a general design principle of our system (http://orchestrate.io/blog/2014/02/05/data-lock-in-a-qa-with-orchestrate-cto-ian-plosker/ and http://orchestrate.io/blog/2014/02/12/what-you-should-demand-from-apis/) More importantly, we just released a feature that allows you to export all your data on demand (http://orchestrate.io/blog/2014/03/12/new-feature-data-export-for-zero-lock-in/), which when coupled with cancel-any-time pricing, means from a business and data perspective you are not locked in. You can leave at will and take your data with you.
Queries are more complex, as you observe, but right now there isn’t that much CRUD. We aren’t running extra query types, we are only exposing a subset of the queries each database type supports. (I can expand on the reason for that if you want.)
Where lockin might be of more concern: you have your data, so now what do you do with it? You should be able to run Elastic Search or Riak Search (or any Lucene-based system), a key-value store, a column database, and a graph database on your own and the data should work. This costs you the expense and distraction of running your own databases but this very well may be counterbalanced by your specific needs. This seems to be both a business and a technical decision you would have to make.
Does that address your concerns?
I have to say (and I told Tony as much) this is if not the best then one of the best answers I got from a vendor. I hope that I have written some as good but that's for others to judge. The usual vendor answer is usually too short, useless, unspecific, defensive or combination of all of the above. As an example I recently asked a vendor that promoted "unlimited storage" as part of its service, what exactly was the actual limit and it turned out it was 10 megabytes of data because and I quote:
"Unlimited" is, in some sense, always inaccurate, especially at $4.95 per month.
And I love that service as well but it goes to show that it's easy to lose track of what really matters (user's trust) vs. writing marketing copy.
Anyway, Orchestrate.io service works as promised, they are trying to do mucho more than just a simple key/value storage and with a really simple pricing model. I had a great interaction with them, they seem earnest to earn the trust of their users and I will definitely consider using the service in the future.