DataMgr Tour of Two Cities

I got back Friday from my two city DataMgr users group tour. I had a lot of fun presenting in both Boston and Nashville. Both groups were a lot of fun and had good questions.

While in Boston, I had a chance to look around the the city for a few hours before the presentation and it is really beautiful. Then I had time to talk to both Brian Rinaldi and Bernie Dolan a bit before the meeting, which was both fun and educational - two very smart guys.

The presentation to the Boston CFUG went well and everyone I talked to said that they enjoyed the presentation. Feel free to read Bernie's humurous tale of the event (I took the title of this blog entry from his). Afterward, I went to a local pub for a drink with Bernie, Brian, and Tom. Tom bought me a beer, which was much appreciated. Another fun and informational discussion there.

From Boston I flew to Nashville. I was too tired to look around the town, so I stayed in the hotel and napped and tried to get caught up on email and reading. The presentation to the Nashville CFUG also went well (you can read Steve "Cutter" Blades description of the presentation). This presentation was recorded, so feel free to watch the presentation (apologies for some silent spots where I am listening to questions and suggestions).

Some of the Nashville members made some good suggestions for DataMgr which will be in the next build (proving wrong my previous statement that it was feature complete).

The first suggestion was that the getXml() method should be able to return all tables if no table was passed in to the method. It turns out that DataMgr did this already. I went ahead and made it do the same if an empty string is passed in as well.

The second suggestion was that the logAction() method should record the SQL used in the action. I have added that feature and it will be in the next release. As an aside, I said in the presentation that calling this method directly when logging is not enabled would not cause DataMgr to log an entry. This is not true, but startLogging() must have been called before a logAction() method is called (or else the logging table won't exist).

Members of both groups asked about the performance of DataMgr. I was disappointed that I had not done any performance tests on DataMgr, so I had to give a conservative response that it would be best to avoid its use in very high-traffic situations. I believe that it should actually perform very well in those situations (better, I would think, than an ORM approach), but until I test that I can't really recommend its use for high-traffic applications.

That being the case, I would love any suggestions for what people think would be the best approach for load testing and performance testing for DataMgr. Ideally, I would love to see a set of tests that can be performed against DataMgr as well as cfquery, Transfer, and Reactor. I think that this could help people choose the approach that is the best fit for their environment. 

Somehow, I had time to cover "Special" functionality and "Relation Fields" at the Boston meeting, but not the Nashville one. I'm sure that means I left out something else in Nashville. Both of these features can be seen in the DataMgr Demonstration site. If you want a more complete information, the DataMgr page includes links to the documentation as well as Flash tutorials and the CFC Docs for DataMgr.

I would love to present this to any other groups that are interested (via Adobe Acrobat Connect). Just let me know if you would like me to present on DataMgr to your group).

Finally, a big thanks to Brian Rinaldi and Aaron West for allowing me to come to their groups and say a few words about my current pet project. It was a lot of fun to meet everyone in each group and I hope I get to see many of them again in the future. 

Comments (Comment Moderation is enabled. Your comment will not appear until approved.)
Hopefully there will be a "Best Two City User Group Tour" category in this years CFeMmy Awards. You'll be a shoe-in. :)
# Posted By Bernie Dolan | 2/26/07 10:09 PM
If that category exists and I am not the only entry, I will suggest a "Best Two City User Group Tour About DataMgr" category. ; -)
# Posted By | 2/26/07 10:25 PM
Hi Steve,
congrats for your work.
I'd suggest two update:
1)in getRecords() can you add an attribute to obtain a SELECT DISTINCT query?
2)in many to many relationship, could you add the possibility to set, in the join table, some fields other than keys?
best regards
# Posted By salvatore fusto | 2/27/07 6:35 AM

I will look into adding the ability to use DISTINCT in getRecords() (though that likely won't make it in the 2.0 release).

I don't understand what you want for the second item. Could you give me an example?
# Posted By | 2/27/07 2:09 PM
the classic example is to persist a composition where in the collection we have a quantity or another attribute that is not in the composed class.
i hope i'm clear
# Posted By salvatoe fusto | 2/27/07 2:47 PM

Sorry, I am still failing to see what DataMgr should do for this that it doesn't already do.
# Posted By | 2/27/07 2:53 PM

I just re-read your request again and I think I understand.

So, if you have an employees2groups table with employee_id and group_id as the key fields and a DateEmpAddedToGroup field in the same table, you want to be able to set that value using DataMgr?

Assuming that is a correct assessment of the request, how would you want that to work? My worry is that the syntax to do that from DataMgr would be sufficiently complicated that it wouldn't offer any advantage to writing your own SQL.

That being said, if a simple syntax exists, I would be willing to investigate adding that in a future version.
# Posted By | 2/27/07 5:41 PM
ok Steve,
i agree, but you know that examples often are misunderstandeing or inappropriate to decribe a concept; yes i can write my own sql statement, but if i can avoid intermixing dataMgr usage and hand writing, it is better is it?
back to your last comment, i would have tne possibility to update a field, other than key's, in the join table, in any way: what abour using datamgr to register the many to many relationship and the write a sql statement to update the same table?
thanks for your attention.
# Posted By salvatore fusto | 2/28/07 10:11 AM

I think that sounds like a good approach.

I am certainly willing to look at adding that functionality into DataMgr if I can figure out a syntax that would make it easier to do with DataMgr than it would be to write the SQL.

Thanks for the suggestion.
# Posted By | 2/28/07 2:17 PM
in the saveRelationList() follow the same sintax and add other arguments: from your doc: saveRelationList("employees2Group",....,"field2update",theValue)
# Posted By salvatore fusto | 3/1/07 3:19 PM

So the "field2update" field will have the same value for every record in the list?

If so, I could just an an "ExtraData" argument as a structure so that you could set that value of as many other fields as you want.

My only worry with this is that it seems to be combining to actions in one method (you couldn't set that data for just some of the related records).
# Posted By | 3/1/07 3:27 PM
Steve, excuse me but i was not clear.
i do not want the same value for all records.
when you save a manytomany relationship, you pass a list of key,one for a record of the join table: can you add another argumenta as a list of values, 1 for each of these records?
# Posted By salvatore fusto | 3/2/07 9:19 AM

I understand now. I will consider that.

Thanks for the idea!
# Posted By | 3/2/07 2:58 PM
Steve, it was great fun to go out with you-- thanks for introducing me to DataMgr. I've been wishing we had in our web site at work, and I'm considering adding it to another project. Cheers!
# Posted By Tom Mollerus | 4/4/07 11:46 PM

It was great to meet you. I am going to cfObjective this year, so hopefully I will run into you again there if you are going.

DataMgr 2.0 RC4 is just out today if you are using it. Look forward to hearing about your experience if you get a chance to use it on a project.
# Posted By Steve Bryant | 4/5/07 3:44 PM
BlogCFC was created by Raymond Camden. This blog is running version 5.8.001.