Concept of schemas?

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!