<[EMAIL PROTECTED]> writes:

> Well, I've come across a few.  A handful of hanging bugs that I've managed
> to work around - the latest one to do with dropping/creating tables,
> different to another one mentioned on here.  It's default caching strategy -
> I recently wrote a performance test to see how my models worked with
> millions of records, argh - default was they're all stored in memory.  It
> only supports a subset of table management features (correct me if I'm wrong
> but no way to drop an index etc).  Performance madness - that it
> automatically accesses the database when you set/get fields in the model
> objects - letting users do users.save() is hardly a mind-strech.

I've also noted those performance problems, but I've solved them by working
with subsets of data (nobody is going to look at millions of rows so I am
retrieving sets of 100, for example.

About accessing the database on set, I'm using lazyUpdate, as in the docs, and
it just access the database when I .sync(), so this is a non-issue to me.

With regards to get, if you're using cache and the information is cached it
might not go there again.  Unfortunately, caching and multi-threaded
applications doesn't work fine so...  Anyway, how did you want it to retrieve
the latest information considering that there are several parallel concurrent
users that might be working on the same record you're retrieving?  If they
changed it, then you have to fetch it again.  Either that or work with wrong
information. 

With regards to table management, I'm not creating / dropping indices in a
normal situation, so I don't mind having other routines to do that (even using
SQLObject's sqlbuilder if I need to run queries by hand).  This is an
exception in daily use so I handle it as an exception as well.

> On the other hand code written with it has a simplicity which I really like
> - more so than the other ORM's I've looked at.

I got the same conclusions...

> In short, it's useful enough (with tweaking) but not quite finished.  And
> before it got finished Ian decided to rewrite it.

Yep.  He saw that without this redesign things would be harder than they
needed to be, so...

> Yes, I could switch to SQLAlchemy but I'd rather be using TG out of the box
> especially since there are tool dependencies on SQLObject now.

You can code using only SQLAlchemy in your code.  You can't use all toolbox
tools, but it won't prevent you from getting what you need done.

> Never mind, guess I'll manage and sit tight for SQLObject2

If it gets ready before SQLAlchemy gets stable, then it might be a good
choice.  Otherwise you can use some compatibility layers that already exist
within TG and run SQLAlchemy.  Of course, not everything works with it when
you consider the toolbox, but for your system it might be worth the change
(and even let toolbox specific parts be handled by SQLObject). 

-- 
Jorge Godoy      <[EMAIL PROTECTED]>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~----------~----~----~----~------~----~------~--~---

Reply via email to