Hi ,

I felt the need for using schema of existing databases for holding tenant

Currently the command  eg:

./gradlew createTenant -PtenantId=tenant001
-PtenantName="My Tenant 001" -PdomainName=tenant001.example.com
-PdbPlatform=P -PdbIp=

creates following data sources in tenant_data_source table.

tenant_id             | tenant001
entity_group_name     | org.apache.ofbiz
jdbc_uri              | jdbc:postgresql://
jdbc_username         | ofb_tenant001
jdbc_password         | ofbiz@tenant
 -[ RECORD 2 ]---------+------------------------------------------------
tenant_id             | tenant001
entity_group_name     | org.apache.ofbiz.olap
jdbc_uri              | jdbc:postgresql://
jdbc_username         | ofb_tenant001
jdbc_password         | ofbiz@tenant


I feel IF the command and entity TenantDataSource are extended to
allow specification of *database *and *database-schema * it shall
be very useful in certain use cases.

schemas in databases allow a level of compartmentalization between
database and tables . The advantage of having schema over separate databases
is that it allows joining of tables across schemas whereas cross database
joins are not supported well in many databases.

In current use case I had housed the ofbiz entities in a schema of a database
and utilized the  schema-name attribute of <datasource/> element in
entityengine.xml. In the same database other schema was being used to
store non-OFBiz custom entities.

Since current tenant_data_source does not allows specification of schema

it shall be difficult to use that dataset as a part of multi-tenant setup.

Fortunately PostgreSQL supports a feature that shall be the basis of an
work-around to deal with this situation. It allows to set a config
parameter at per user level.

This feature can be exploited set set the search_path of a given user
so that a user "sees" only that schema in DB.

given the fact that <datasource/> allows specification of schema
and DB in entityengine.xml i feel it should be possible.


Reply via email to