Best practices: External Oracle database

Hi,

Our customer wants to retrieve data from an Oracle Database. Maybe in the future we might have to write data to it as well. I suggested setting up a light weight PHP "middleware" server containing a simple rest API which sugar uses to retrieve the data. This way drivers and responsibilities are separated. Upgrading Oracle won't have impact on Sugar and Upgrading Sugar won't have impact on the Oracle drivers.

Due to server maintenance and costs they rejected the idea and started looking into it themselfs and suggested a DBLink. This would involve installing the Oracle Instant Client drivers on the SugarCRM MySQL server.

An alternative I thought of would be to install Oracle drivers on the Sugar application server and integrate it as a service on the Sugar application. This sounds like a better solution to me, but might have more risks regarding driver conflicts.

I am not a big fan of either solution due to the fact that I fear potential upgrade or performance issues on the SugarCRM instance. 

But maybe the customer is right and I am over concerned...

What is your experience on this matter? What would you suggest?

[Edit]: It involves an on-prem instance.

Regards,

Stijn

Parents
  •   how are you using the data from the foreign database? Are you accessing via the Sugar UX? Are you using schedulers? Are you using Logic Hooks? Can you provide more details?

    PHP can have many database drivers installed. You can have MySQL, Oracle, and MSSQL php-drivers all installed. Configuration information is stored in config.php and config_override.php.


    You can add as many db configurations as you would like into config_override.php

    $sugar_config['db']['oracle_database']['db_host_name'] = '<db_host_name>';
    $sugar_config['db']['oracle_database']['db_user_name'] = '<db_user_name>';
    $sugar_config['db']['oracle_database']['db_password'] = '<db_user_password>';
    $sugar_config['db']['oracle_database']['db_name'] = '<db_name>';
    $sugar_config['db']['oracle_database']['db_type'] = 'oracle';
    $sugar_config['db']['oracle_database']['db_manager'] = 'OracleManager';

    Within the code, you can then access Oracle like

    $conn = DBManagerFactory::getInstance('oracle_database')->getConnection();
    $conn->executeQuery("<SQL>");

Reply
  •   how are you using the data from the foreign database? Are you accessing via the Sugar UX? Are you using schedulers? Are you using Logic Hooks? Can you provide more details?

    PHP can have many database drivers installed. You can have MySQL, Oracle, and MSSQL php-drivers all installed. Configuration information is stored in config.php and config_override.php.


    You can add as many db configurations as you would like into config_override.php

    $sugar_config['db']['oracle_database']['db_host_name'] = '<db_host_name>';
    $sugar_config['db']['oracle_database']['db_user_name'] = '<db_user_name>';
    $sugar_config['db']['oracle_database']['db_password'] = '<db_user_password>';
    $sugar_config['db']['oracle_database']['db_name'] = '<db_name>';
    $sugar_config['db']['oracle_database']['db_type'] = 'oracle';
    $sugar_config['db']['oracle_database']['db_manager'] = 'OracleManager';

    Within the code, you can then access Oracle like

    $conn = DBManagerFactory::getInstance('oracle_database')->getConnection();
    $conn->executeQuery("<SQL>");

Children
No Data