Does GES have the concept of schemas like in an RDBMS?
If I have multiple applications, which are not related to each other. And I have a GES cluster as part of infrastructure (like I would have a SQL Server), is it possible to define schemas to separate the applications on the same cluster, or do I have to setup multiple clusters next to each other for each application?
What would such a schema look like? A definition of the relevant streams?
If I would compare it with a database, just a name in a connection string
so the application only sees streams related to it, and nothing else,
without the risk of collisions if someone else happens to have the same
stream.
I want to avoid the overhead of running X clusters next to each other just
to separate streams.
Easiest way to do this right now is to prepend your streams with a prefix, one per application. Then if you are using projections or subscriptions, ignore events where the streamid do not start with the one you expect.
I already prepend with things like “user-” “account-” because GES out of the box turns prepends into categories.
How will it deal with things like “application-name1-account-” as prefixes?
Don’t use a dash. Alternatively, I believe there is a way to tell ges to use the first or last dash for the category projection.
Something like [myapp]user-123
As Joao has pointed out, you can do something like myapp:user-123
This is probably also not known since the documentation has been held back but the system projections can be changed to suite certain use cases.
The $stream_by_category’s body is
first
That’s a nice way, with the :
Thanks!