Mayonaise (6.1) Beta Release: FourQ Overhaul

FarCry had the very first ColdFusion ORM (well at least that I'm aware of); the FourQ ORM created back during the Neo alpha, the initial port of ColdFusion to Java. It gets its name from the gist of something Mike Nimer said to me, "a database component only needs four queries" or words to that effect. I think we were discussing whether or not getter and setters were a good thing.

FourQ is different to other ORMs in the ColdFusion world. Things like Transfer, Reactor and even the ColdFusion Hibernate implementation all work on the basis of creating objects to match your relational database tables. That is, you have a database schema, and then you build objects to work with it. With FourQ you build components, and the ORM creates the database tables for you. If you make changes to your component, the framework changes the database schema to match.

FourQ works great but its accumulated years of debris -- adding new features has become impossible. FourQ needs an overhaul, the open heart surgery Kano style**.

So if you could make improvements to FourQ what would you do? Well in no particular order I'd love to see...

  • Precision; allow the developer to nominate the exact precision of a property and have the database schema update accordingly
  • Better support for new databases; a clean component architecture for adding new database gateways
  • Indexation; allow developers to nominate database indices that are automatically deployed, dropped and altered as needed 
  • Model schema tables that are not FarCry content types. Sometimes you just need a table without all the framework baggage; for example, refObjects and the nested tree model
  • Options for deploying and undeploying multiple objects, and mass property changes. This would make installers and updaters a breeze not to mention make development of customisations even simpler 

Blair's been heading up our efforts on the next major phase of the FarCry masterpiece, codenamed Mayonaise. Incredibly, with a Chev Chelios thumper in place, all these features are available for testing right now, in the FarCry 6.1 beta. Support is only available for mySQL and MS SQL at this time -- we're looking for help creating other supported database gateways so please get in touch.

For early access download:
http://org.farcrycore.s3.amazonaws.com/nightly/community-6-1-b0925.zip
svn checkout https://farcry.jira.com/svn/REL/trunk/community farcry

Enjoy!

** Open Heart Surgery: Kano's signature fatality has him ripping the heart out of his opponent's chest, then hoisting the still beating organ in the air in triumph.

4870 views and 5 responses

  • Oct 5 2010, 6:50 PM
    pat branley responded:
    why would i use fourQ over the CF9 ORM stuff ?
  • Oct 5 2010, 8:53 PM
    Geoff Bowers responded:
    FourQ and CF9 ORM are quite different. The real question is whether or not CF9 ORM features would be worthwhile integrating into FarCry.

    There is a fundamental difference in approach between CF9 ORM and FourQ. With FourQ you create an object (cf component) which then gets expressed as a data model; if you change the component, the model (ie database schema) is automatically updated. CF9 ORM only works with existing schemas; you create components to match your tables.

    At this stage the FourQ and FarCry view layer services offer more than CF9 ORM and EH Cache. While there is significant overlap in functionality, i'm not sure its worth the effort at this time to refactor FarCry to use CF9ORM/EHCache services instead of its own services.

    Mind you, it would certainly be possible to develop a plugin to swap out the relevant fourq object broker calls for cf9 ORM hibernate calls. Or to extend the view cache layer to leverage EhCache, if there was significant motivation to do so.

    With respect to compatibility, FourQ should work on CF7/8, Railo and OpenBD. CF9 ORM is stuck with CF9.

  • Oct 5 2010, 9:49 PM
    pat branley responded:

    Good points.<o:p></o:p>

    From:

  • Oct 9 2010, 2:09 PM
    Chris Kent responded:
    Just trying 6.1, some great new features

    - The new COAPI manager is going to be a real time saver when deploying new modifications, review and apply all changes in one hit.

    - Like the ability to set indexes in the content types, will be able to set these prior to install and then they will be applied as standard for each install without having to modify each db table for all installs

    - Webtray rebuild page and rebuild all anther great new feature

  • Oct 10 2010, 3:37 PM
    Geoff Bowers responded:
    @chris you'll be happy to know that web-tray "rebuild page" and "rebuild all" are also available in the 6.0.x maintenance releases :)