Forums / Developer / Separate database for custom objects?

Separate database for custom objects?

Author Message

Torbjørn Myhre

Monday 01 October 2007 9:07:24 am

Hello!

I'm currently building a module in which I've been planning to extend the eZPersistentObject class to store data in custom database tables. To better separate this extension from the eZ installation, I want to use a separate database for these (about 10) tables.

However, I can't figure out how to utilize a second database from within the eZPersistentObject framework, if at all possible?

I'd appreciate any thoughts on this, perhaps there's a better way?

Lazaro Ferreira

Monday 01 October 2007 11:07:46 am

Hi,

I haven't tried this, I have never seen why to put custom tables in a separate database, as keeping on the same database has no problem regarding ezpersistentobject

Nevertheless, I guess this

eZPersistentObject gets Ezpublish current database instance calling ezDB class like

  $db =& eZDB::instance();  

eZDB has a method to set Ezpublish current database instance , so calling it should do the trick

 

//get ezpublish current instance
$ezdb =&  eZDB::instance();  

//create your database instance 
$mydb =&  eZDB::instance( ..., $yourdatabaseparameters, $forceNewInstance=true);  

//set it as default 
eZDB::setInstance( $mydb );  

//from here any call to ezpersistent will use your database instance  
....

/don't forget to restore ezpublish database instance
eZDB::setInstance( $ezdb );  

Basically , it keeps switching between ezpublish database, and your custom database

Lazaro
http://www.mzbusiness.com

Kristof Coomans

Monday 01 October 2007 11:35:36 pm

Hi guys

I once had to connect to a custom MS SQL database (read-only access) to show some data of it on our eZ Publish site. To be able to use eZPersistentObject for this a hack was required. You can find a patch at http://issues.ez.no/10667. Be careful, this is only tested for reading external data, but normally it should also work for modifying the external database. Let me know if you have problems using it. Good luck!

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Torbjørn Myhre

Tuesday 02 October 2007 8:43:21 am

Thanks very much, Kristof!

I tested your patch for fetching some data and it worked like a charm. At some point, we'll need to write data back to the database, I'll keep you posted on the progress :)

eZ debug

Timing: Jan 18 2025 15:11:47
Script start
Timing: Jan 18 2025 15:11:47
Module start 'content'
Timing: Jan 18 2025 15:11:48
Module end 'content'
Timing: Jan 18 2025 15:11:48
Script end

Main resources:

Total runtime0.9605 sec
Peak memory usage4,096.0000 KB
Database Queries199

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0066 587.7344180.8281
Module start 'content' 0.00660.8303 768.5625587.4063
Module end 'content' 0.83700.1234 1,355.9688337.6797
Script end 0.9604  1,693.6484 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00420.4356210.0002
Check MTime0.00150.1610210.0001
Mysql Total
Database connection0.00100.108710.0010
Mysqli_queries0.892892.95661990.0045
Looping result0.00200.20921970.0000
Template Total0.928696.720.4643
Template load0.00250.255820.0012
Template processing0.926196.424520.4631
Template load and register function0.00020.023010.0002
states
state_id_array0.00240.251510.0024
state_identifier_array0.00150.157720.0008
Override
Cache load0.00190.1960240.0001
Sytem overhead
Fetch class attribute can translate value0.00140.144840.0003
Fetch class attribute name0.00100.108550.0002
XML
Image XML parsing0.00120.126640.0003
class_abstraction
Instantiating content class attribute0.00000.001050.0000
General
dbfile0.00180.1881270.0001
String conversion0.00000.000530.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
4content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
7content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
1content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
2content/datatype/view/ezxmltags/literal.tpl<No override>extension/community/design/standard/templates/content/datatype/view/ezxmltags/literal.tplEdit templateOverride template
1content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 17
 Number of unique templates used: 7

Time used to render debug report: 0.0002 secs