[Ur] Multitenancy
Adam Chlipala
adamc at csail.mit.edu
Sun May 13 09:31:14 EDT 2018
Can you explain why you don't want to run separate applications with
separate databases?
On 05/13/2018 05:50 AM, Simon Van Casteren wrote:
> Hi,
>
> I'm in the process of making a new application for music schools,
> using ur/web for front and backend. I'm at the point where I have two
> customers and am starting to implement support for multiple
> clients/tenants in one DB (postgres). I've been planning to implement
> multitenancy from the start, but haven't had the time yet.
>
> Has anyone implemented a form of multitenancy in ur/web before?
>
> I see two areas that need consideration.
>
> 1. Deciding which user belongs to which tenant. Ideally I'd have a
> seperate url for each tenant that I can give out to my clients (=the
> schools), do some dns magic to send them all to the same exe, extract
> the tenantname from the url and save the tenantId in a cookie. Also
> ideally, the user's url would not change, ie. All urls should go to
> myschool.coolschools.be <http://myschool.coolschools.be> during a
> session, not getting redirected at all. This is all in an ideal
> situation of course.
>
> 2. Database access: I'll have tenantId columns in all tables + foreign
> keys and indexes on these columns. I'm a bit afraid I'll forget adding
> tenantId = cookie.tenantid somewhere, so I was thinking I could make a
> function that takes a sql_exp and a tenantId and adds these clauses to
> all tables involved. Not 100% sure that will work but I think it's
> possible, I haven't had to dive into the internals of sql_exp yet.
> Secondly, I wonder if I can somehow declare my endpoints to be
> tenantdepandent (all but the most general will be) maybe via newtyping
> the transaction datatype and then allowing the execute only sql
> queries that have the above function applied. Just dreaming out loud here.
>
> I'd be very interested in any ideas or examples!
>
> Simon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.impredicative.com/pipermail/ur/attachments/20180513/33851ef6/attachment.html>
More information about the Ur
mailing list