Merubah Database Solution Repository


User dan role user pada Administration Console atau User Console Pentaho defaultnya adalah menggunakan Hibernate, namun kita dapat mengubah settingnya agar user dan role user tersimpan pada DBMS yang kita inginkan. Pak Feris telah membuat artikel yang cukup praktis tentang bagaimana mengubah database repositori.

Di dalam proses membangun solusi berbasis BI Platform Pentaho maka kita akan memiliki beberapa kumpulan file :

  • konfigurasi
  • workflow (.xaction)
  • resource file Pentaho seperti file report, job / transformation Kettle, dan lain-lain

Kumpulan file tersebut dinamakan solution dari Pentaho dan biasa ditempatkan pada folder “pentaho-solutions” di BI Server.

Oleh BI Server sendiri, untuk mengorganisasikan dan menentukan hak akses user atas kumpulan solution ini maka platform harus memiliki database yang menyimpan deskripsi, lokasi dan hak akses file-file di atas. Database ini biasa disebut dengan Solution Repository.
Pada BI-Server 2.0 dan 3.0 PCI (Pre Configured Installation) di dalamnya sudah terdapat default database repository menggunakan embedded database HSQLDB. Artinya jika kita tidak perlu bersusah payah melakukan instalasi database terpisah.
Namun dalam prakteknya, penggunaan HSQLDB ini dirasakan banyak kekurangan jika dibandingkan produk database lain yang sudah mature seperti SQL Server, Oracle, MySQL, dll.
Jadi, apakah memindahkan repository tersebut ke produk database lain memungkinkan ? Tentu saja !
Artikel berikut akan memberikan contoh bagaimana hal itu dilakukan untuk pergantian ke MySQL.
Mengubah Database Repository ke MySQL

Persiapan Database Pengganti di MySQL

  • Buat database baru dengan nama hibernate dan quartz. Nama keduanya bisa diganti sesuai keinginan kita, disini hanya mengikuti standar contoh Pentaho.
  • Copy library jdbc mysql ke folder [ROOT]/tomcat/webapps/pentaho/WEB-INF/lib

Konfigurasi Hibernate

Berikut adalah tahap-tahap untuk merubah database repository dari PCI :

  • Rubah konfigurasi file hibernate-settings.xml untuk menggunakan MySQL di folder [BI-SERVER]/pentaho-solutions/system/hibernate

    File : hibernate-settings.xml

    <?xml version=’1.0′ encoding=’utf-8′?> <settings><!– * This setting allows the deployment to specify where to find the * database-specific hibernate configuration. The samples supplied * include the following: * * system/hibernate/hsql.hibernate.cfg.xml * system/hibernate/mysql5.hibernate.cfg.xml * system/hibernate/postgresql.hibernate.cfg.xml * system/hibernate/oracle10g.hibernate.cfg.xml * –>    <config-file>system/hibernate/mysql5.hibernate.cfg.xml</config-file>
    <!– * * managed should be set to true if running the BI Platform * in a managed environment (like JBoss, Orion, etc). In this configuration, * you should specify another location for the hibernate.cfg.xml (see below) * instead of simply using the default one provided. This setting essentially * tells the HibernateUtil class to use JNDI to locate the factory class for * getting sessions. This allows the platform to use Hibernate across boundaries * in message beans (for example). * <managed>false</managed> –><managed>false</managed>
    </settings>

    mysql5.hibernate.cfg.xml

    <?xml version=’1.0′ encoding=’utf-8′?>
    <!DOCTYPE hibernate-configuration
    PUBLIC “-//Hibernate/Hibernate Configuration DTD//EN”
    http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”&gt;
    <hibernate-configuration>
    <session-factory><property name=”cache.provider_class”>org.hibernate.cache.EhCacheProvider</property><property name=”hibernate.generate_statistics”>true</property>
    <property name=”hibernate.cache.use_query_cache”>true</property><!–  MySQL Configuration –>
        <property name=”connection.driver_class”>com.mysql.jdbc.Driver</property>
    <property name=”connection.url”>jdbc:mysql://localhost:3306/hibernate</property>
    <property name=”dialect”>org.hibernate.dialect.MySQL5InnoDBDialect</property>
    <property name=”connection.username”>root</property>
    <property name=”connection.password”>password</property>

    <property name=”connection.pool_size”>10</property>
    <property name=”show_sql”>false</property>
    <property name=”hibernate.jdbc.use_streams_for_binary”>true</property>
    <!– replaces DefinitionVersionManager –>
    <property name=”hibernate.hbm2ddl.auto”>update</property>
    <!– load resource from classpath –>
    <mapping resource=”hibernate/mysql5innodb.hbm.xml” />
    <!–  This is only used by Pentaho Administration Console. Acegi will not use these mapping files –>
    <mapping resource=”PentahoUser.hbm.xml” />
    <mapping resource=”PentahoRole.hbm.xml” />

    </session-factory>
    </hibernate-configuration>

Konfigurasi Security

  • Rubah konfigurasi acegi (access control list framework) di file [BI-SERVER]/pentaho_solutions/system/applicationContext-acegi-security-hibernate.properties dengan konfigurasi database MySQL kita. Konfigurasi berupa informasi driver dan connection string terhadap database yang bersangkutan. Untuk daftar konfigurasi database lainnya bisa coba dilihat di halaman Daftar Connection String JDBC.

    Update !

    Untuk versi 3.x file yang diubah bukan applicationContext-acegi-security-hibernate.properties, tapi :

    applicationContext-spring-security-hibernate.properties

    File: applicationContext-spring-security-hibernate.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost/hibernate?user=root
    jdbc.username=root
    jdbc.password=password
    hibernate.dialect=org.hibernate.dialect.MySQLDialect

    Catatan : Selain connection string, kita juga perlu memasukkan dialect Hibernate. Bisa dilihat referensinya di http://www.javabeat.net/qna/163-list-of-hibernate-sql-dialects/

  • Jika Anda menggunakan MySQL maka konfigurasi di file  [BI-SERVER]/pentaho_solutions/system/quartz/quartz.properties tidak perlu diubah. Kecuali jika Anda menggunakan database lain seperti daftar di bawah ini, maka  opsi dari org.quartz.jobStore.driverDelegateClass perlu diubah sesuai dengan nilai konfigurasi yang juga tertera pada tabel di bawah ini.
     Database System  Nilai Opsi yang Benar
     Microsoft SQL Server  org.quartz.impl.jdbcjobstore.MSSQLDelegate
     PostgreSQL
     org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
     WebLogic  org.quartz.impl.jdbcjobstore.WebLogicDelegate
     Oracle  org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
     Lainnya (JDBC-compliant drivers)  org.quartz.impl.jdbcjobstore.StdJDBCDelegate
  • Edit file  [BI-SERVER]/tomcat/webapps/pentaho/META-INF/context.xml sesuai dengan konfigurasi database kita. Sebagai contoh lihat konfigurasi di bawah ini.

    context.xml

    <?xml version=”1.0″ encoding=”UTF-8″?>
    <Context path=”/pentaho” docbase=”webapps/pentaho/”>
    <Resource name=”jdbc/Hibernate” auth=”Container” type=”javax.sql.DataSource”
    factory=”org.apache.commons.dbcp.BasicDataSourceFactory” maxActive=”20″ maxIdle=”5″
    maxWait=”10000″ username=”root” password=”password”
    driverClassName=”
    com.mysql.jdbc.Driver” url=”jdbc:mysql://localhost/hibernate
    validationQuery=”select 1″
     /><Resource name=”jdbc/Quartz” auth=”Container” type=”javax.sql.DataSource”
    factory=”org.apache.commons.dbcp.BasicDataSourceFactory” maxActive=”20″ maxIdle=”5″
    maxWait=”10000″ username=”root” password=”password”
    driverClassName=”
    com.mysql.jdbc.Driver” url=”jdbc:mysql://localhost/quartz
    validationQuery=”select 1″
     />
    </Context>
  • Start / Restart server Anda
  • Database hibernate dan quartz akan dibentuk dan dipopulasi ulang oleh BI Server. Screenshot berikut menunjukkan tampilan daftar table untuk database hibernate dan quartz dengan PHPMyAdmin

  • Cobalah login dengan user joe. Apabila sukses maka akses dengan repository DB baru telah berhasil dilakukan.

Refresh Repository Cache

  • Pada saat awal login ada kemungkinan semua menu selain “Steel Wheels” tidak muncul atau seperti hilang begitu saja. Untuk itu cobalah melakukan “Refresh Repository Cache” (Tools -> Refresh -> Repository Cache)
  • Selesai

Hapus Database Repository HSQLDB (hibernate & quartz)

  • Untuk menghindari kebingungan repository mana yang digunakan maka sebaiknya kita membuang database hibernate dan quartz yang sudah tidak diperlukan dari HSQLDB.
  • Hapus 4 file dari folder [BI-SERVER]/data atau [BI-SERVER]/data/hsqldb, yaitu :
    • hibernate.properties
    • hibernate.script
    • quartz.properties
    • quartz.script
  • Edit file [BI-SERVER]/data/start_hypersonic.bat seperti di bawah ini. Tujuannya agar Hypersonic/HSQLDB hanya menjalankan database sampledata.

    Text Box

    @Echo OffREM ——————————————— REM – Create the classpath for this application – REM ——————————————— SET tempclasspath= SET libdir=.\libFOR /f “delims=” %%a IN (‘dir %libdir%\hsqldb*.jar /b /a-d’) DO call :addToClasspath %%a
    GOTO :startApp

    :addToClasspath
    IF “%tempclasspath%”==”” SET tempclasspath=%libdir%\%1& GOTO :end
    SET tempclasspath=%tempclasspath%;%libdir%\%1
    GOTO :end

    REM ———————–
    REM – Run the application –
    REM ———————–
    :startApp
    SET command=java -cp %tempclasspath% org.hsqldb.Server -database.0 hsqldb\sampledata -dbname.0 sampledata
    echo %command%
    %command%
    exit

    :end

  • Dan ubah juga file stop_hypersonic.bat disesuaikan dengan baris berwarna merah berikut :

    Text Box

    @Echo Off
     
    setlocal 
     
    REM ———————————————
    REM – Create the classpath for this application –
    REM ———————————————
    SET tempclasspath=
    SET libdir=.\lib
     
    FOR /f “delims=” %%a IN (‘dir %libdir%\hsqldb*.jar /b /a-d’) DO call :addToClasspath %%a
    GOTO :startApp
     
    :addToClasspath
    IF “%tempclasspath%”==”” SET tempclasspath=%libdir%\%1& GOTO :end
    SET tempclasspath=%tempclasspath%;%libdir%\%1
    GOTO :end
     
    REM ———————–
    REM – Run the application –
    REM ———————–
    :startApp
    FOR %%b IN (sampledata) DO call :runCommand %%b 
    GOTO end
     
    :runCommand
     
    if exist “%~dp0..\jre” call “%~dp0set-pentaho-java.bat” “%~dp0..\jre”
    if not exist “%~dp0..\jre” call “%~dp0set-pentaho-java.bat”
     
    “%_PENTAHO_JAVA%” -cp %tempclasspath% org.hsqldb.util.ShutdownServer -url “jdbc:hsqldb:hsql://localhost/%1” -user “SA” -password “”
    echo %command%
    %command%
    GOTO :end
     
    :end
  • Jalankan BI Server Anda dengan mengeksekusi script start-pentaho.bat
  • Apabila semua berjalan dengan baik maka database HSQL di folder [BI-SERVER]/data/hsqldb akan tampak seperti gambar berikut ini :

Troubleshooting

Masalah yang kadang terjadi dari setting di atas adalah kadang database quartz tidak berhasil terbentuk dan mengakibatkan error. Penggalan pesan error tersebut adalah seperti berikut ini :

Quartz ERROR

ERROR [org.pentaho.platform.util.logging.Logger] misc-org.pentaho.platform.scheduler.QuartzSystemListener: QuartzSystemListener.ERROR_0001 – Scheduler was not properly initialized at startup
org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Couldn’t clean volatile data: Table ‘quartz.qrtz_triggers’ doesn’t exist [See nested exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table ‘quartz.qrtz_triggers’ doesn’t exist]]

Pemecahan

  • Karena database quartz yang hilang maka Anda perlu mengeksekusi semua script yang ada di folder [BI-SERVER]/data/mysql5
  • Atau Anda bisa download dan eksekusi 2 script sql di akhir artikel wiki (mysql_quartz_database_creation.sql dan mysql_hibernate_database_datasource_table.sql)
  • Restart Server Anda
  • Selesai
Comments
2 Responses to “Merubah Database Solution Repository”
  1. emiksan says:

    Dari kemarin artikelnya pentaho euy..mantap
    sekalian nanya gan, BI berbasis web contoh penggunaannya seperti apa? Bedanya dgn buat web bisnis sendiri? Kalau web bi yang bnyk digunakan pentaho kah?
    Trims inponya

    • faqih says:

      Begini mas bos,
      BI itu sistem yang mengkonsumsi data dari berbagai sumber data, dan divisualisasikan dalam bentuk report, data analytic, dashboard dan sebagainya.

      contohnya, di PT LEN terdapat banyak sistem informasi such as : SI SDM, SI Keuangan, SI Marketing, SI Operasional. Nah, BI awalnya akan melakukan ETL (extract transform dan load) dari database sumber (DBMS OLTP/Online Transaction Processing) masingnya SI itu, lalu disimpan di dalam data warehouse. lalu proses BI berikutnya adalah menampilkan data atau visualisasi data dari data warehouse tersebut. Objek usernya biasanya eksekutif perusahaan. Jadi eksekutif dapat memantau kondisi perusahaan based on fact/data dari masing-masing lininya. gitu bos

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: