One thing to note is that an ORM bean can map to a database view. We've used this technique with great success in an Oracle db, keeping zero sql in our client application. Sure, we're using a tiny subset of ORM features because of this, but it has kept complexity down for us.
Dominic On 26 September 2011 21:35, Russ Michaels <r...@michaels.me.uk> wrote: > > It is a pretty easy test. > make 2 pages. > > 1 that uses cfquery > 1 that uses ORM > > get them both to do the same heavy database work > compare the execution times. > > ORM is clearly going to have some overhead by its very nature, so you > have to measure whether the convenience and portability outweighs the > performance hit. > > ORM has multiple uses, it is a RAD framework the same as CFML allowing > you to do complex tasks easily without underlying knowledge of the > database structure, it also creates portability so that the same code > will work on multiple database platforms. > For many ORM removes too much control as you are limited to the > confines of what ORM can do so you may find yourself unable to do > certain complex or dynamic queries without dropping back into regular > SQL. > There is also the fact that you are moving all your data abstraction > into the application layer, the stored proc advocates who prefer to > keep data abstraction within the database would say this is a bad > thing. > > It is really a case of weighing up the pros and cons of each method > and choosing which best suits you and your application. It you are > concerned with squeezing every cycle of speed and performance out of > your app, then ORM is probably not for you. > But overall I would say that most developers use CFML because of its > RAD speed and convenience, so ORM is really just an extension of that > so the performance hit is acceptable. > > On Mon, Sep 26, 2011 at 8:50 PM, Richard (J7 Group) <rich...@j7is.co.uk> > wrote: >> >> Thanks for your reply Jochem. >> >> This is some excellent advice and we will def look into it. >> >> I wonder if I am over complicating this issue. Basically our application is >> a Software as a Service (SaaS) and each client that accesses it really only >> needs to connect to their own data source due to the type of data our >> application processes... and regulations in the industry say their data must >> be separated. >> >> So, the actual objects in the database may vary but only *very* slightly. >> The only real issue we have here is not that the objects will vary but how >> do I get ORM to point to purely a different data source name - but use the >> same set of objects. >> >> >> >> >> >> >> -----Original Message----- >> From: Jochem van Dieten [mailto:joch...@gmail.com] >> Sent: 26 September 2011 20:22 >> To: cf-talk >> Subject: Re: ORM overhead >> >> >> On Mon, Sep 26, 2011 at 8:07 PM, Richard (J7 Group) wrote: >>> Performance overhead, especially in an application that could be linked to >>> thousands of data sources? >> >> I think an application with thousands of datasources is so far out of >> the experience of other users that we will have no way of answering >> your question. I do have a few questions that may be helpful in >> finding the right questions and answers yourself. >> >> 1. What would you consider an acceptable overhead in terms of GB of RAM? >> 2. What would you consider an acceptable overhead ni terms of seconds >> delay of application startup? >> >> Once you have answered that, run the following experiment: >> 1. For one database, generate the CFCs for the tables using a code >> generator (such as the plugin to CF Builder). >> 2. Add the database to the orm configuration in application.cfc >> 3. Add the CFC folder to the orm configuration in application.cfc. >> 4. Measure startup time. >> 5. Repeat step 1-3 for 9 more databases. >> 6. Measure startup time. >> 7. Extrapolate. >> >> With thousands of datasources even a small number of tables per >> datasource means on startup CF has to compile and process tens or even >> hundreds of thousands of CFCs to build all the right relations and >> objects. I expect that to be prohibitively expensive on startup time >> (question 2) long before you have a problem with RAM (question1), even >> if you use HBMXML files to store the relations. Since my experience >> does not go further then close to 200 tables in one application I have >> no idea what the result will be and am very interested in what your >> measurements will tell. >> >> Jochem >> >> -- >> Jochem van Dieten >> http://jochem.vandieten.net/ >> >> >> >> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:347740 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm