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

Explore performance / scalability improvement of stub storage #14

Open
cmgrote opened this issue May 24, 2019 · 6 comments
Open

Explore performance / scalability improvement of stub storage #14

cmgrote opened this issue May 24, 2019 · 6 comments

Comments

@cmgrote
Copy link
Member

cmgrote commented May 24, 2019

Investigate use of an external component (like Redis) for the storage of the OMRS stub information, to both improve overall performance of the event mapper as well as (probably) increase its scalability.

@cmgrote cmgrote self-assigned this May 24, 2019
@cmgrote cmgrote added the enhancement New feature or request label May 24, 2019
@cmgrote
Copy link
Member Author

cmgrote commented May 24, 2019

Such an improvement could also be made optional, based on whether the repository connector is configured with a property to refer to such an external component or not. (If not, it can simply fall-back to the default of using the existing OpenIGC stub mechanism.)

@cmgrote
Copy link
Member Author

cmgrote commented Jun 10, 2019

Initial look at Redis seems promising: memory footprint appears negligible (single-digit MB in official Docker container at https://hub.docker.com/_/redis), performance is blazing fast, and there appear to be mature clients for various languages:

@cmgrote
Copy link
Member Author

cmgrote commented Sep 24, 2019

Downside to Redis is that it does not appear to be something that can be easily run in an embedded way; alternative may be to investigate H2, which we're already using for some of the UI demos.

@planetf1
Copy link
Member

For redis there have.been a few attempts. https://www.baeldung.com/spring-embedded-redis may help?

@cmgrote
Copy link
Member Author

cmgrote commented Sep 25, 2019

Indeed, I saw that, but still feels like it's geared towards more of a unit-test-specific scenario... But maybe that's still sufficient nonetheless.

I'm trying to keep in mind a broader vision here as well that such a "cache" might be a useful, more broadly configurable option to include in the core of Egeria for anything to make use of that needs to store state in an efficient and scalable way: whether that be repository connectors or other servers / daemons. (That way we don't end up with lots of one-off persistence mechanisms that are all managed differently using different tools, but could leverage the more general connector framework of Egeria itself to define which (configurable) "cache" to use for various scenarios: including whether embedded, external, persistent vs. non-persistent, etc.

In that sense, it probably makes sense to first come up with the interface(s) and configurable options, and then which connectors we build to particular back-ends just gives us a variety of options for backing those interface(s) (?)

@cmgrote cmgrote added optimization and removed enhancement New feature or request labels Dec 19, 2019
@cmgrote cmgrote removed their assignment Aug 13, 2020
@cmgrote
Copy link
Member Author

cmgrote commented Aug 13, 2020

Will leave this open, but as the event mapper (only piece that requires the stubs) is now considered experimental, this is unlikely to be implemented.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants