How to handle Database pooling in MSSQL

Good morning glorious elixir community! :smile:

After a long time on Node, we finally made the decision to begin to try Elixir. So far, it has been a terrific success and exceeded all of our expectations. One of the last issues remaining that we are trying to work through is what to do about our database connectivity. As such, I have a question which may just be me not understanding the problem (I am very new to Elixir). Our firm makes pretty huge use of SQL queries on (Microsoft SQL Server) MSSQL, which we will likely keep using for the foreseeable future.

I already tested mssqlex https://github.com/findmypast-oss/mssqlex (the library is lovely, BTW) by executing a stored proc, similar to how we would have in Node. It all worked well, but I am a little unclear how it all works and how much work (or not) I need to do to make it scale in the instance of multiple concurrent queries (which is the primary use case) and queueing peaks which may exceed the size of the connection pool. I read that mssqlex implements the DB Connection behavior which includes pooling, but got way over my head (as a newbie) about poolboy and sojourn.

As this seems like a fairly standard use case and it would be, potentially, easy to get wrong, I wanted to ask if this was already a solved problem. If so, what libraries should I be looking at? I’m willing to do the research, but am not really sure what I should or should not be looking at or if this work has already been done.

Also, the reason I am not using Ecto is my (possibly incorrect) assessment that if I am only executing stored procedures from SQL, Ecto doesn’t add a lot of value for my use case.

Any help on things to look into or better understand would be greatly appreciated!

Thank you all so much!