On Fri, Dec 25, 2009 at 10:10 PM, OvermindDL1 <[email protected]> wrote:
> On Fri, Dec 25, 2009 at 9:06 PM, OvermindDL1 <[email protected]> wrote:
>> I have started looking at Wt::DBO to replace my sqlite marshaller and
>> I notice something odd right off the bat.
>> It seems there can only be one session at a time?
>> Rather, more specifically, I would have to use some type of locking
>> queue of connections, and pull from it each time I wish to create a
>> session, and it kind of looks like it would be rather heavy to create
>> a session object each time as well.  So I can either use a pool of
>> connections and create sessions on demand from a connection in that
>> pool (with the running of many mapClass's), or I could make a pool of
>> sessions, each attached to its own connections, and use the sessions
>> from the pool as necessary, and so on and so forth.  The two files I
>> found that demonstrate how to use the DBO are just test frameworks and
>> it is quite obvious that this is not how it was designed to be used,
>> so is there an actual example somewhere that demonstrates its real
>> use, or should I just create a pool of session objects as I was
>> initially thinking?
>>
>> Also, the createtables, does it destructively recreate the tables, as
>> in deleting the existing data, or if the table already exists does it
>> do nothing, or what if the table layout is different, does it do
>> nothing, or does it create/remove columns as it needs, and is that
>> destructive or not to the existing data, and is there a method to drop
>> tables as well?
>>
>> You might look at the Python library SQLAlchemy, it handles all of
>> this extremely well (and I have actually linked in Python into some of
>> my C++ projects *just* so I could use sqlalchemy, it is that nice to
>> use, although a slight bit of an overhead since it is, well, python).
>
> I started looking at how DBO was implemented.
>
> In Cession.c:194, the parseSql function.  The parsing seems a bit
> heavy.  If you do not mind a requirement on a more recent version of
> Boost then I can Spirit'ify it, which can fill the final values with
> what they should be directly, instead of filling up temporaries and
> multiple finds over a string.  Also it mentions that it should start
> with select (would be nice to have a way to mutate values without
> needing to fetch them...  A counter is a good example of why this
> would be good), but the select test just looks to see if "select "
> appears anywhere in the sql string at all, what if it was in a string
> blob, or someone had a cell name of myselect, that would mess it up
> pretty well.  If I wrote a full Spirit.Qi parser then there would be
> no such issue, but that requires a newer version of Boost then what
> your current requirements state.

Also, SqlConnection:69, the line:
  typedef std::map<std::string, SqlStatement *> StatementMap;
With potentially a lot of entries (as I plan to do, no point
recreating often-used statements), would not boost::unordered_map be
faster?  Perhaps even a ternary tree?  Boost.Spirit has a wonderful
ternary tree that would also work quite well (wish it was in the main
boost namespace, but boost does not have a generic tree container yet
like it has unordered_map and such).

At the very least, perhaps change it to boost::unordered_map (while
including boost/unordered_map.hpp)?  It provides a speed boost over
std::map and is identical to tr1::unordered_map (as it was modeled on
boost's version).  I think boost's unordered_map is a using
declaration of tr1::unordered_map if your compiler has tr1.

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
witty-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/witty-interest

Reply via email to