Hi there, I'm Max :wave: :smiley:
tl;dr - I need some help, but in return I could work on some in-depth Wiki pages :smile:
I just started to work on my bachelors' thesis in which my primary objective is to integrate orbit into a client-side heavy component library for e-learning components.
As of now, those components depend on a mongodb database to store persistent data (documents). The overall idea is to make those components completely independent of the backend using orbit and ipfs.
I cloned some of the projects, read a lot of code, played with orbit-cli and created my own test module using orbit, but there are still a lot of questions I can't seem to find the answers to.
It would be very nice, if you could point me in the right directions.
Some of my most important questions are:
Looking at the ./orbitdb-folder, where do I find the Oplog? Does it consist of the *.ldb files?
What kind of encoding do i need to use with the *.ldb files? (They're unreadable in vim and with less)
The structure of a store always looks something like this:
000042.ldb
000044.ldb
000047.ldb
000050.ldb
000051.log
CURRENT
LOCK
LOG
LOG.old
MANIFEST-000049
Where can i find a bit more information on those files?
Does orbit use ipld? Where can i find this in the code?
Okay that's enough for now :sweat_smile: , any help is much appreciated.
I'm definitely committed to orbit for the next 3 months and will gladly share everything I learn about it with the community. If needed, I could try to create a wiki or real world examples.
Hi, I don't know much about the internals of orbit-db but I can tell you it uses LevelDB for storage so those ldb files are probably leveldb stuff.
Thanks a lot @fazo96 for your help. I found out about that just yesterday and currently trying to understand how all the things fit together. Orbit-cache definitely uses leveldb to cache the data on disk and the browser. I assume, that the oplog (ipfs-log) is stored in leveldb, but i need to confirm that.
Do you happen to know any good tools to inspect leveldb? I found some libraries and gonna try some of them out today, but if you know about a reliable one that would definitely help me.
I'm closing this issue, since I found enough resources to keep me working for the next couple of weeks. Maybe opening an issue for this, wasn't really that clever in the first place.
@maxkerp It _was_ clever! The only issue is that people have very limited time to help out, as this is an open source project. Asking pointed questions can help a bit more, but having this context was useful.
I would suggest formatting your issue to be maximally easy to digest and help. For instance:
^ Something like this.
2 weeks is also _not a long time_ in open source world. I think you did the right thing. Come back if you've got more questions!
Thanks for your answer @RichardLitt. That's what i figured, asking broad questions that are hard to answer without a back and forth of comments is not really practical when time is rare. And I'm sure everyone involved in this project is pretty busy.
Right now I'm still in an exploratory phase, where I'm not really able to ask specific questions without an answer creating more questions for me. But I'll come back and format the issue when I'm a little bit more organized. Should I reopen the Issue then?
I would ask targeted questions in new issues in the future, and link back to this issue. It's not particularly actionable at the moment, so let's perhaps keep it closed. If you have some more general advice, there's the OrbitDB channel on IRC, I think. I'm not sure on current communication channels for this sort of question. :)
Most helpful comment
@maxkerp It _was_ clever! The only issue is that people have very limited time to help out, as this is an open source project. Asking pointed questions can help a bit more, but having this context was useful.
I would suggest formatting your issue to be maximally easy to digest and help. For instance:
Next Tasks
^ Something like this.
2 weeks is also _not a long time_ in open source world. I think you did the right thing. Come back if you've got more questions!