|
|
Line 1: |
Line 1: |
| {{Template:Op menubar}}
| | Moved to [[GOCDB/Release4/Development/v5]] |
| {{Template:GOCDB_menubar}}
| |
| {{TOC_top}}
| |
| | |
| [[Category: GOCDB]]
| |
| << Back to [[GOCDB/Release4/Development]] <br />
| |
| | |
| = Introduction =
| |
| By replacing the PROM model with the [http://www.doctrine-project.org Doctrine ORM] GOCDB will support RDBMSs other than Oracle. This will be released as GOCDB v5 (early Sept).
| |
| Important changes to the Portal URLs and to the PI are detailed below.
| |
| | |
| = Benefits =
| |
| * 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
| |
| | |
| {|
| |
| |[[File:Get_Site_PROM.png|200px|thumb|left|PROM SQL]]
| |
| |[[File:Get_Site_Doctrine.png|200px|thumb|left|Doctrine SQL]]
| |
| |}
| |
| | |
| = Drawbacks =
| |
| * 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 on the requirements roadmap ).
| |
| * 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 some PI methods (paging and carrying over v4 PKs)
| |
| * Changes to Portal URLs and object IDs (below)
| |
| | |
| = Changes =
| |
| 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:
| |
| | |
| https://goc.egi.eu/portal/index.php?Page_Type=View_Object&object_id=123&grid_id=0
| |
| | |
| 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:
| |
| | |
| https://goc.egi.eu/portal/index.php?Page_Type=Site&id=123
| |
| | |
| https://goc.egi.eu/portal/index.php?Page_Type=Service_Endpoint&id=123
| |
| | |
| https://goc.egi.eu/portal/index.php?Page_Type=Downtime&id=123
| |
| | |
| (...and so on for each GOCDB entity type)
| |
| | |
| [[File:GOCDB_URLs.png|900px]]
| |
| | |
| == PI XML Output Values ==
| |
| In the GOCDB PI there are a number of PROM specific XML values that will change when we move to Doctrine: PRIMARY_KEY, ID and GOCDB_PORTAL_URL. These are highlighted in RED below:
| |
| | |
| [[File:Get_Site_Fields.png]]
| |
| | |
| The ID fields will NOT be consistent between v4 and v5 (each new object will get a new ID value).
| |
| | |
| <br/>
| |
| <br/>
| |
| <b>Update Aug 2013 - Preserving v4 <PRIMARY_KEY> element values</b>
| |
| <br/>
| |
| * v4 <PRIMARY_KEY> element <u>values</u> are carried over for <b>Sites</b> to maintain backward compatiblity (get_site, get_site_list)
| |
| * v4 <PRIMARY_KEY> element <u>values</u> are carried over for <b>Downtimes</b> (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
| |
| ** <b>Please check!</b>
| |
| | |
| = Request for Comments =
| |
| If these changes affect a system that reads from the GOCDB-PI or links to the web portal please [mailto:gocdb-admins@mailman.egi.eu let us know].
| |