Open
Description
Earlier this week we received an issue asking if other database types could be used to store Session information. This was due to the user wanting to have multiple servers hosting their applications while sharing the same database.
This topic was discussed in our Jupyter Server meeting earlier today. Since this is precisely where we want to take "the server", I was asked to open an issue for discussion. As a team, there appeared to be general enthusiasm (consensus may be too strong) for introducing a means for users to substitute different database applications and SQLAlchemy appeared to be the de-facto approach taken within the Python community.
Here are some points worth discussing (please feel free to add others):
- If SQLAlchemy were to be the approach, should we use
SessionManager
as the litmus test where SQLAlchemy could be introduced with a default database type of SQLite. We could open an issue with a 'help wanted' tag and let the community contribute to that effort. With this approach, there should be roughly zero user-facing changes (perhaps a configurable trait or two) as the underlying functionality should work identically to today as everything is currently internal. - Create a different repo that would house an alternative
SessionManager
implementation that also takes this approach. In this case, users would need to opt-in to using thisSessionManager
. This approach also required repository maintenance and release management. - Should we offer the ability for users to use a NoSQL database instead, which SQLAlchemy does not support? There are definitely cases where a NoSQL database makes better sense, especially when talking about scaling the server horizontally. This would manifest in the form of a general ORM layer.
- How much of this should be deferred to Jupyverse if that is indeed the next-generation, multi-tenant, server?