Originally posted by matthew
An important thing to note here is that Transactional systems are FAR FAR slower than non transactional systems. If you want entirely safe transactions (that is - no guarantee of loss) then you have to live with the fact that you can only get at best 70 transactions a second with standard hardware (due to the number of writes and syncs required). If you can stand to lose some amount of data then you can use other transactional models and get better throughput.
Actually, I've been testing database performance fairly extensively lately, and I know that they can do better than that. Here is a chunk of code for a very simple Oracle update test. On a P4 1.7Ghz system with 512MB, it gives me about 420 transactions per second (over a 100mbit LAN).
Code:
for (int i=0; i<NUM_ITEMS; i++)
{
Statement* stmt = conn->createStatement("UPDATE SHIPS SET NAME=:1 WHERE SHIPID=:2");
char name[100] = "updatetest";
stmt->setString(1, name);
stmt->setInt(2, i);
stmt->executeUpdate();
conn->commit();
delete stmt;
}
Originally posted by matthew
I think this is more because you have a particular model in mind to which you are trying to adopt Ice. This model doesn't appear to be particularly object oriented which makes adopting to the Ice object model more difficult. If your backend batch oriented system was viewed as a series of cooperating objects, my guess is that you'd find that the persistence model and the non-transactional nature of Freeze wouldn't be an issue. I bet the performance and ease of implementation would also be a pleasant suprise
I think you're probably right about my trying to fit Ice to my current model. Do you have any suggestions for books or online resources I might read to help reform my thinking? 
Thanks again Matthew,
Ken Carpenter