krotik/eliasdb

Return key?

dmikov opened this issue · 3 comments

Well first off all, I like it very much. The storage engine is nice and well documented. I like how it's follows physical storage model, but dynamic size allocation. I wish I could get it for python lol.
Anyway trying to see on how I can get a key if I supply just a data. The swagger looks, like it doesn't return anything but 200 when you store. Is there special sequence provider I overlooked?
Thirdly, partitions are nice, but I liked how OrientDb linked them to the types(classes) so if you store Line db knows which partition it goes to. Makes for explicit configuration, but more fluid application coding. Just a suggestion.
Fourthly, do you hang on Gitter or any other channels to talk about this project other then issues section?

Hi,

I am glad you like it :-) The key (as well as the node kind) is supposed to be provided by the client. A simple way to generate a key would be for example to run MD5 over the existing data (if you want to avoid duplication) or you could just use a uuid generator.

In the moment the REST API does indeed only return a 200 or an error. The interface used in the tutorial is using the REST API.

If you just want to store a binary blob it might make sense to expose the low level storage manager interface in the REST API. Here you just store binary data and get a record location. This is currently not implemented.

A main reason why I didn't go with python was the GIL and that Go is a compiled language.

Assuming types/classes are the node kinds in EliasDB it would be possible to do some kind of auto routing for partitions but couldn't this be easily implemented on the client side? Implementing this on the server side, you would need some kind of mapping kind->partition and a default partition. Or have I misunderstood your suggestion?

I've never used Gitter before but I see that a lot of OSS projects are there so I'll open an account :-)

Address is: gitter.im/eliasdb

Hi Dmitriy,

I've done some work and added now a new endpoint to the REST API called "blob". This is basically the low-level storage interface exposed in the REST API. You can POST any kind of data to it and it will return you a unique id for it (unique within the partition). See the current swagger definition.

I haven't included the linking between kind and partiton for now as it is simple enough to code it on the client side and I want to be careful when adding non-obvious indirections.

Thank you.