Hi Vincen,

Thanks a lot!  I will check for postgresql multi-tenancy.

Best regards,

Luis Aguirre



2014-05-23 3:12 GMT-03:00 Vincent Catalano <[email protected]>:

> Luis,
>
> This solution seems like it would work fine. There are many different ways
> you can handle database multi-tenancy and it really all depends on how you
> want to partition your client data.
>
> Recently, I had a project that required a multi-tenant configuration. I
> decided to use Postgres' Schema functionality (
> http://www.postgresql.org/docs/9.3/static/sql-createschema.html) for
> handling multiple tenants that required the same table structure. I'm not
> sure if this is an option for you at this point in your project but I
> recommend you explore some of the multi-tenancy options your database may
> provide.
>
> -Vincent
>
>
>
>
> On Wed, May 21, 2014 at 8:05 AM, Luis Aguirre <[email protected]>wrote:
>
>> Hi guys,
>>
>> I'm developing a multi-tenant application.  The model is pretty simple:
>>
>> * Each user as a tenant id
>> * Some objects has a tenant_id and some doesn't, if the object has a
>> tenant_id, I have to filter by this colum
>>
>> I don't want to have a
>> DBSession.query(SomeObject).filter(filter_by_tenant_id).filter(some_other_filter).all()
>>
>> So I had a method to DBSession called tdb that do all the work and return
>> a clear Query Object, so I did the following:
>>
>> #in application __init__
>> config.add_subscriber(tenantdb_on_new_request, events.NewRequest)
>>
>> #In models
>> DBSession =
>> scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
>>
>>
>> def tenantdb_on_new_request(event):
>>
>>     def tenant_db(*entities, **kwargs):
>>         q = DBSession.query(*entities, **kwargs)
>>         for e in entities:
>>             if hasattr(e, 'tenant_id'):
>>                 q = q.filter(e.tenant_id == event.request.user.tenant)
>>         return q
>>
>>     DBSession.tdb = tenant_db
>>
>> It's works fine, but it's ok? May I have problems when many requests came
>> in production?  Some idea to do it in other way?
>>
>> Thanks in advance!
>>
>> Best regards,
>>
>> Luis Aguirre
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "pylons-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/pylons-discuss.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Vincent Catalano
> Software Engineer and Web Developer,
> (520).603.8944
>
> --
> You received this message because you are subscribed to the Google Groups
> "pylons-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/pylons-discuss.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pylons-discuss.
For more options, visit https://groups.google.com/d/optout.

Reply via email to