,Introduced with Identity Broker v5.3, a PostgreSQL database server can be used instead of Microsoft SQL Server. The following instructions details the process of configuring Identity Broker for use with a PostgreSQL database.
Creating the PostgreSQL Database
Log onto the PostgreSQL server with pgAdmin or via the command line tool and create a new database. Ensure the new database is being targeted and run the Identity Broker Install PostgreSQL script which is located at
<InstallDir>/Database/IdentityBroker Install PostgreSql.sql.
If the PostgreSQL server user account name is not the default
postgres, then the above install script will need to be edited to reflect this. Open the SQL script in a text editor and replace all instances of
postgres with the correct account name. Note that if the database is hosted on an Azure Database for PostgreSQL server which displays the account name as
<name>@<server> then only the name component preceding the
@ symbol should be used in the script.
Configure Identity Broker
Locate the following extensibility file
<InstallDir>/Service/Extensibility/Unify.Framework.Data.DataEnginePlugInKey.extensibility.config.xml. Remove or comment out the existing
dataConnection element. In its place, add the following:
<dataConnection name="postgres" repository="Unify.IdentityBroker" type="PostgreSql" connectionString="Host=;Port=;Database=;Username=;Password=" />
Ensure the following values are supplied as part of the
|Host||The host address for the PostgreSql server.|
|Port||The port for the PostgreSql server.|
|Database||The name of the Identity Broker PostgreSql database.|
|Username||The name PostgreSql user account for Identity Broker to use|
|Password||The password for the specified PostgreSql user account.|
connectionString attribute can be further customized to meet environment specific requirements. Note that non-standard connection string values may produce unintended behaviour in Identity Broker. See here more for information.
Optimising Performance of Entity Reads
Depending on how Identity Broker is configured and the number of entities being stored by the PostgreSQL, performance may be improved by adding indexes to certain schema fields. The addition of unneeded indexes will reduce performance in other areas and so should not be done without consideration. Key candidates for schema fields that should be considered are:
Adapter reflection with relational transformations
|Field Type||Benefits Observed In|
|Connector schema fields marked as Key.|
For best results, if multiple fields on a connector are key fields, all should be indexed.
|Processing connector deletes, adapter reflection with relational transformations|
|Right-side relationship keys of Group, Multi-Value Group, Foreign Multi-Value Group and Join transformations||Adapter reflection with relational transformations|
|Fields which contribute to fields used as either right or left side relationship keys in the above transformations|
For example: Connector field groupname renamed with a Rename Transformation to gname which is used as a Join Transformations left-side relationship key. groupname should be considered for an index. Furthermore, if groupname was, instead of being a connector field, generated by another transformation, the field or fields it is generated from should also be considered for indexes.
|Adapter reflection with relational transformations|
|Fields being filtered by on an OData or SCIM gateways||Reading of entities though these gateways|
|Fields which are set as the user id lookup field on a SCIM gateway||Reading of entities though this gateway|
Once the schema fields to index have been determined, the index can be created with the following SQL query:
CREATE INDEX unique_name_of_index -- Give the index a unique name ie: entity_fieldname_index ON public."Entity" USING btree (("EntityValues"->'field_name')) -- Replace field_name with schema field name. TABLESPACE pg_default;
Customer support service by UserEcho