Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Discussion] Revisit RocksDB and ZeebeDb responsibility #12203

Open
Tracked by #12033
Zelldon opened this issue Mar 31, 2023 · 4 comments
Open
Tracked by #12033

[Discussion] Revisit RocksDB and ZeebeDb responsibility #12203

Zelldon opened this issue Mar 31, 2023 · 4 comments
Assignees
Labels
component/db component/zeebe Related to the Zeebe component/team kind/question Categorizes an issue as a user question or discussion kind/toil Categorizes an issue or PR as general maintenance, i.e. cleanup, refactoring, etc.

Comments

@Zelldon
Copy link
Member

Zelldon commented Mar 31, 2023

Description

Last year we implemented the engine abstraction to support our team split. During implementing the abstraction and planning we have decided to assign ZDP as responsible team. . There have been now made several changes to the API because it was needed for ZPA. Some configurations might need to be changed for better access and performance, etc.

There is coming up a new pressing topic #12033 which is highly related to ZeebeDB, RocksDB and how they are accessed, and what type of data we store and how.

As we (ZDP) have no control over the data, @npepinpe was questioning me again whether this makes sense and I kind of have to agree.

Some points which stands out:

  • ZPA uses ZeebeDB in order to store there data
  • ZPA uses ZeebeDB in order to receive there data
  • ZDP has almost zero knowledge what type of data is stored and how
  • ZDP is now responsible for the ZeebeDB API
  • ZDP is right now in charge of RocksDB configuration

I/We see here some conflicts/challenges, which might be resolved when ZeebeDB is in ZPA's hands. This would allow the ZPA team to design the API to their needs without conflicting with us, configuring the underlying database to their needs. Furthermore, it might make it even easier to replace RocksDB with something completely different which maybe full-fils better there needs, like SQLite.

I think this is something we should discuss and think about again, especially you both @megglos and @abbasadel since this would allow each team to focus more on certain things and reduce conflict potential.

BTW there might be some arguments that performance is the mission of ZDP. I have to say that this can't be a mission of just one team. This needs to be a target of the whole platform, otherwise, it will not work.

@Zelldon Zelldon added kind/toil Categorizes an issue or PR as general maintenance, i.e. cleanup, refactoring, etc. kind/question Categorizes an issue as a user question or discussion planning/discuss To be discussed at the next planning. labels Mar 31, 2023
@npepinpe
Copy link
Member

npepinpe commented Mar 31, 2023

We have to change the gazintas and the gazoutas ;)

But really, it's very hard for us to optimize properly when we don't own the data model. The example of evaluating SQLite vs RocksDB for example is whether it could be more efficient to use a relational data model (and a technology which is optimized to understand it) instead of us hacking relationships on top of RocksDB. It also highlights that the ZDP team is hard pressed to make a proper comparison there since we aren't super familiar with the model itself, or how it's accessed, making it hard to intelligently optimize things like how much work is done in memory and how much is offloaded to disk.

Also just sayin, but my original vision for the team split was always to have RocksDB/zb-db owned by the ZPA team 👀

EDIT: BTW, just to clarify, the SQLite thing is an example. I doubt it would be the right thing long term, but its just to illustrate the point.

@korthout
Copy link
Member

korthout commented Apr 5, 2023

@abbasadel Please co-ordinate with @megglos :)

@npepinpe npepinpe removed the planning/discuss To be discussed at the next planning. label May 12, 2023
@korthout
Copy link
Member

Thanks @megglos, I'd like to rephrase my statements:

  • I wondered whether ZDP's goal is to provide a platform that can be used to build any replicated and fault tolerant application, and not just Zeebe
    • If so, then I expect that any other application would also need a way to keep track of the state in their state machine. So it would be useful if the platform provides some solution for this. In practice, it doesn't matter what this looks like (in the past it was just in memory, later it became RocksDB to avoid running out of memory), so I could even imagine some API that allows connecting different data stores.
    • If not, then I think it makes sense to look at how the team can benefit the most. In that case, I think it makes sense to shift the responsibility over to ZPA, as we use it and have specific needs for our data store.
    • Additionally, I don't think it makes sense that ZDP is focusing on performance while ZPA is not, but that may be a different discussion.

@megglos megglos self-assigned this May 30, 2023
@Zelldon
Copy link
Member Author

Zelldon commented Jun 29, 2023

Any status update here @abbasadel @megglos ?

@romansmirnov romansmirnov added the component/zeebe Related to the Zeebe component/team label Mar 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/db component/zeebe Related to the Zeebe component/team kind/question Categorizes an issue as a user question or discussion kind/toil Categorizes an issue or PR as general maintenance, i.e. cleanup, refactoring, etc.
Projects
None yet
Development

No branches or pull requests

6 participants