krotik / eliasdb

EliasDB a graph-based database.
Mozilla Public License 2.0
994 stars 49 forks source link

Return key? #8

Closed dmikov closed 7 years ago

dmikov commented 7 years ago

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?

krotik commented 7 years ago

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

krotik commented 7 years ago

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.

dmikov commented 7 years ago

Thank you.