Oracle and PostgreSQL

GBrowse supports various databases and database schemas. Right now, there is full support for the Bio::DB::GFF schema running on MySQL, preliminary support for the Bio::DB::GFF schema running on top of Oracle, preliminary support for the Bio::DB::GFF schema running on top of PostgreSQL, and preliminary support for the BioSQL schema running on top of MySQL.

There is also support for the Chado schema (using Postgres) and the BioSQL schema (Mysql, Postgres, Oracle). You will find more information on these databases and schemas at http://www.gmod.org.

Bio::DB::GFF on Oracle

To run GBrowse on top of Oracle, you will need a recent version of BioPerl that contains Shuly Avraham's Bio::DB::GFF::Adaptor::dbi::oracle adaptor. Create the database, name it, and set access permissions. Then run the load_gff.pl script to initialize and load it with the GFF data:

 load_gff.pl -c -adaptor dbi::oracle -user <user> -pass <pass> \
             -dsn 'dbi:oracle:sid=<service>;host=<host>' yeast_data.gff

Replace <service> with the service definition for your database, as well as the username, password and host fields.

If you haven't already, you must configure Apache so that various Oracle environment variables are available to CGI scripts. An example httpd.conf file contains these declarations:

 <Directory "/var/www/cgi-bin">
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
    SetEnv ORACLE_BASE /home/oracle
    SetEnv ORACLE_HOME /home/oracle/Home
    SetEnv ORACLE_SID  gbrowse
    SetEnv NLS_LANG    AMERICAN_AMERICA.US7ASCII
 </Directory>

You will need to adjust these values to suit your particular Oracle installation.

The final step is to tell GBrowse to use the Oracle database. In the [GENERAL] section, enter the following values for db_adaptor and db_args:

    db_adaptor = Bio::DB::GFF
    db_args = -dsn     dbi:Oracle:sid=<service>;host=<host>
              -adaptor dbi::oracle
              -user    <username>
              -pass    <password>

Replace <service>, <host>, <username> and <password> with the values appropriate for your system.

PostgreSQL

In order to use Bio::DB::GFF with PostgreSQL (Pg), the Pg adaptor is required. Pg version 7.3 or greater is required to use with this adaptor. The adaptor is part of BioPerl but is not released yet; it will be part of the 1.3 release. Until it is released, you can obtain a tarball of bioperl-live using this link:

   http://cvs.bioperl.org/cgi-bin/viewcvs/viewcvs.cgi/bioperl-live/bioperl-live.tar.gz?tarball=1&cvsroot=bioperl
   (note that pod2html usually breaks this URL--you will probably have to cut and paste it.)

It is suggested that during the make process for BioPerl that you run `make test` for the Pg adaptor.

After successful installation of BioPerl, there are a few configuration items in Pg. Before loading the data, the database must be created. The database can either be created from within psql or from the command line:

   % createdb --owner <username> <dbname>

To load the data, two options are available from the BioPerl installation:

bp_load_gff.pl

This will incrementally load a database, optionally initializing it if it does not already exist. This script will work correctly even if the PostgreSQL server is located on another host.

bp_pg_bulk_load_gff.pl

This Perl script will initialize a new Bio::DB::GFF database with a fresh schema, deleting anything that was there before. It will then load the file. Only suitable for use the very first time you create a database, or when you want to start from scratch! The bulk loader is as much as 10x faster than bp_load_gff.pl, but does not work in the situation in which the PostgreSQL database is running on a remote host.

Next, the configuration must be set to work with Pg. It is fairly straight forward. First, the GBrowse configuration file needs the adaptor line changed to 'dbi::pg' (note that case matters):

  [GENERAL]
  description = C. elegans (via Wormbase Release 60
  db_adaptor    = Bio::DB::GFF
  db_args       = -dsn  dbi:Pg:dbname=chado
                  -adaptor dbi::pg
                  -user <username>
                  -pass <password>

Next, the database needs to have SELECT permission for the username that will do the querying. While Postgres usernames and unix usernames are different things, it is usually easier to name them the same. So, if your webserver is running as 'nobody' (which is typicall), run the following commands in psql as the database owner:

  CREATE USER nobody;
  GRANT SELECT ON TABLE fmeta                 TO nobody;
  GRANT SELECT ON TABLE fgroup                TO nobody;
  GRANT SELECT ON TABLE fdata                 TO nobody;
  GRANT SELECT ON TABLE fattribute_to_feature TO nobody;
  GRANT SELECT ON TABLE fdna                  TO nobody;
  GRANT SELECT ON TABLE fattribute            TO nobody;
  GRANT SELECT ON TABLE ftype                 TO nobody;

That should be it. If you encounter problems, please contact the <a href=``mailto:gmod-gbrowse@lists.sourceforge.net''>gmod-gbrowse@lists.sourceforge.net.