Alert.png The wiki is deprecated and due to be decommissioned by the end of September 2022.
The content is being migrated to other supports, new updates will be ignored and lost.
If needed you can get in touch with EGI SDIS team using operations @ egi.eu.

Difference between revisions of "GOCDB/Doctrine"

From EGIWiki
Jump to navigation Jump to search
(Replaced content with "Moved to GOCDB/Release4/Development/v5")
 
(One intermediate revision by the same user not shown)
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 5.
 
= 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].

Latest revision as of 14:51, 5 August 2013