asdine / storm

Simple and powerful toolkit for BoltDB
MIT License
2.06k stars 139 forks source link

[WIP] Storm v4 #290

Open asdine opened 3 years ago

asdine commented 3 years ago

After v3, I realized Storm was becoming hard to maintain. It was relying too much on reflection, felt bloated, and was performing poorly. There were a lot of ongoing discussions on the subject, like https://github.com/asdine/storm/issues/211 or https://github.com/asdine/storm/issues/222, that led me to realize what was the actual problem: Storm design was good enough for a simple toolkit but not for an actual database. If fixing some of the performance issues can be done by tweaking a loop there and there, any other addition was a real pain and my motivation wasn't high enough to handle that level of plumbing. Instead, I decided to write an actual database as a separate project, Genji, with the goal of, someday, building Storm on top of it. However, Genji's API is still not yet stable and requires a little bit more work before being able to be relied upon. But as a first step, here is a draft of what it would look like.

Another aspect I wanted to fix was the Storm API. I believe the current API is error-prone and requires too much magic, as we can see in these issues. I think this is the opportunity to improve that design as well.

Storm now uses Genji. What does it mean?

Genji is a document-oriented, embedded SQL database written in Go.

What are the big changes in the API?

Take a look at the README file.

How can I contribute?

Inputs are welcome! Don't hesitate to comment on the PR or creating an issue.

Next steps

codecov-commenter commented 3 years ago

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@23213e9). Click here to learn what that means. The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff            @@
##             master     #290   +/-   ##
=========================================
  Coverage          ?   33.33%           
=========================================
  Files             ?        2           
  Lines             ?      132           
  Branches          ?        0           
=========================================
  Hits              ?       44           
  Misses            ?       75           
  Partials          ?       13           

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 23213e9...8678f8c. Read the comment docs.