Direct synchronization typically uses views to synchronize data between Identity Manager and a database.
Indirect synchronization uses intermediate staging tables to synchronize data between the Identity Vault and a database.
While every situation is unique, We recommend using Indirect Synchronization model whenever possible. The Indirect Synchronization model properly breaks the work responsibility to the DBA and allows changes within the Database to not require changes to the JDBC Driver.
There might be more information for this subject on one of the following: