Hi Vaibhav,
This is something that comes up every now and again, but I don't think
there's been any big interest internal to the project itself so far.
That's not to say a REST API is without value: there just hasn't been
anyone who stood up to own the feature. It's great that you want to do
this and it would be a good way to get more involved.
Some thoughts on the important bits:
* As stateless of an API as possible
- This is a little tricky as the server itself would need to hide
this state in how it connects to Accumulo, as well as some notion of a
"cursor" if a scanning API is supported. It may be easier to write an
API around gets and puts as a first go and try to tackle scanning later
as that gets real tricky, real fast.
* User authentication
- Having a good authentication story for clients to ensure that they
receive only the data they should is tantamount. Lots of ways to go
about this -- it would be good to identify the scope of the problem you
want to solve then work towards that.
* User authorization
- Close together with authentication. The simple approach is to
require Accumulo accounts for users connecting to the webservice. A more
advanced approach (with more flexibility) is to build a
delegation/impersonation service where the webserver would authenticate
as some monolithic user and manage user authorizations on its own. This
can be tricky to get correct, but is likely easier to manage resources
this way.
* Check out other systems' services before coding
- This might seem a little odd, but I would take a look at what other
projects like HBase or Cassandra have along this line. HBase has
Stargate as a REST service (not sure how well it's maintained now) and I
see a bunch of different projects for Cassandra. Getting an idea of what
other have found useful in an API would be good and help make a usable
API. You would likely be able to find some good discussions about what
works well and what is problematic in these other projects. Thinking
about those problems up front might help you avoid bigger problems down
the road.
In general, start small and get a nice, tested codebase. That will help
in the long run. Keep us informed! This sounds great :D
vaibhav thapliyal wrote:
Dear all,
I am trying to build a Rest-api for accumulo. I would like to know the
minimum features that should be there in the rest api?
Also are there any plans to make a rest api for accumulo by the
development team at accumulo itself?
Thanks and regards,
Vaibhav Thapliyal