From EGIWiki
Revision as of 13:35, 13 May 2013 by Davidm (talk | contribs) (PI XML Output Values)
Jump to: navigation, search
Main EGI.eu operations services Support Documentation Tools Activities Performance Technology Catch-all Services Resource Allocation Security

GOC DB menu: Home Documentation Index

<< Back to GOCDB/Release4/Development


By replacing the PROM model with the Doctrine ORM GOCDB will support RDBMSs other than Oracle. This will be released as GOCDB 5.


  • Write code once, deploy to Oracle, MySQL, Postgres, SQLite.
  • Much simpler than the GOCDB/PROM model (see query comparison below)]
  • Easier for other projects to extend / modify
  • Easier for new developers to learn
  • Better performance
    • Reduced risk of failover performance issues
Doctrine SQL


  • Data will be deleted rather than marked as 'off'. We therefore require an audit table to record who/when performed data deletions/updates (this is already on the requirements roadmap however).
  • Loose some flexiblity as the DB will manage the relationships (FKs) between entities rather than the application (but in turn we gain performance/simplicity/db-agnostic).
  • Changes to Portal URLs and object IDs (below)


The move to Doctrine will introduce changes to the GOCDB portal URLs and to the PRIMARY KEY, ID and GOCDB_PORTAL_URL fields of the GOCDB PI.

Portal URLs

In PROM, each "entity" (site, service endpoint, downtime) was assigned an ID from a global pool. There is only one object 123, the GRIDOPS-GOCDB site. The following URL is used to access an entity regardless of type:


In Doctrine, each entity receives an ID unique only to that entity type. There is a site with ID 123, a service endpoint with ID 123 and a downtime with ID 123. The new URL will reflect the entity type:




(...and so on for each GOCDB entity type)


PI XML Output Values

In the GOCDB PI there are a number of PROM specific XML values that will change if we move to Doctrine: PRIMARY_KEY, ID and GOCDB_PORTAL_URL. These are highlighted in RED below:

Get Site Fields.png

The PRIMARY_KEY and ID fields are generated by PROM and will be either removed or replaced with similar values from Doctrine.

We would like to remove the ID field entirely and use the primary key only. The primary key will be purely numeric and unique only to the specific entity type (e.g. there will be a Site with ID 5 and a Service Endpoint with ID 5).

  • Update May 2013 - Preserving v4 <PRIMARY_KEY> element values
    • v4 <PRIMARY_KEY> element values will be carried over for Sites to maintain backward compatiblity (get_site, get_site_list etc)
    • TODO: v4 <PRIMARY_KEY> element values will also be carried over for Downtimes (get_downtime)
    • No preservation of v4 <PRIMARY_KEY> element values planned for:
      • get_service_endpoint (no report that v4 values are required)
      • get_ngi
      • get_service_group
      • Please check !

Request for Comments

If these changes affect a system that reads from the GOCDB-PI or links to the web portal please let us know.