[squeak-dev] Threaded ODBC

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
32 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Threaded ODBC

Philippe Marschall
2008/5/11, Klaus D. Witzel <[hidden email]>:

> On Sun, 11 May 2008 12:11:53 +0200, Philippe Marschall wrote:
>
>
> > 2008/5/11, Klaus D. Witzel wrote :
> >
> > > On Sun, 11 May 2008 10:22:46 +0200, Philippe Marschall wrote:
> > >
> > > > 2008/5/11, Klaus D. Witzel wrote:
> > > >
> > > > > On Sat, 10 May 2008 19:45:57 +0200, Rob Rothwell wrote:
> > > > >
> > > > > > Hello,
> > > > > >
> > > > > > I was just wondering if anyone knew what work would be required to
> > > provide
> > > > > a
> > > > > > threaded ODBC connection in Squeak similar to what is available
> for
> > > > > > VisualWorks or Smalltalk/X.  The ability to not freeze the VM
> while
> > > > > running
> > > > > > a query would be very useful for me, but I don't even know where
> to
> > > start.
> > > > > >
> > > > >
> > > > >  Out of curiosity, what would it be that you intend to let the users
> do
> > > > > while longish queries are tickling the db?
> > > > >
> > > >
> > > > If you use Seaside: reply to other requests.
> > > >
> > >
> > >  Sure, goes without saying. *but*what*else* ?
> > >
> >
> > Doing the usual GUI updates (hover, progress bar, whatsoever) so that
> > the application does not appear "frozen".
> >
>
>  We asked the users (releases 1-2 where developed by our "predecessors", we
> did the 3.x release series, the users where *very* well experienced :=
> plagued by DB response time). Guess what they asked for.
>
>  BTW: progress bar update is #fork work.

UI updates in general have to happen in a very specific thread.

> Furthermore, you'll earn credit if
> you can predict the 100% base and the respective increments, of arbitrary db
> queries which are performed on some dedicated server multi-user, predict
> with a small epsilon (not like MS$ does it when they copy/move around
> files).

Progress bars in general have a indeterminate mode for such cases.

> >
> >
> > > > Cheers
> > > > Philippe
> > > >
> > > >
> > > > >  I ask with this background in mind: over several years I headed a
> team
> > > of
> > > > > developers who produced 1.5 releases/year of a
> > > > > (fat+GUI)client<->(shared+fast)db server app with
> > > between 6
> > > > > and 60 GB data etc, 50+ installation sites (institutions with their
> own
> > > db
> > > > > server) and 100+ users, with 98% of the db data being updated over
> night
> > > > > (incrementally). We brought down the app's db response time from
> minutes
> > > to
> > > > > seconds but still never found any reason for using non-blocking
> queries,
> > > > > because nothing much was there that could have been done by the user
> in
> > > the
> > > > > meantime.
> > > > >
> > > > >  Do you just want to see non-freezing queries running or have some
> other
> > > > > reason for that need?
> > > > >
> > > > >  /Klaus
> > > > >
> > > > >
> > > > > > Or, is it a bigger issue than just ODBC, something buried deep
> within
> > > the
> > > > > VM
> > > > > > and/or the FFI?
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > Rob
> > > > > >
> > > > >
> > > >
> > >
> > >
> >
> >
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: Threaded ODBC

Klaus D. Witzel
On Sun, 11 May 2008 12:47:29 +0200, Philippe Marschall wrote:

> 2008/5/11, Klaus D. Witzel <[hidden email]>:
[...]

>> > > > >  Out of curiosity, what would it be that you intend to let the  
>> users
>> do
>> > > > > while longish queries are tickling the db?
>> > > > >
>> > > >
>> > > > If you use Seaside: reply to other requests.
>> > > >
>> > >
>> > >  Sure, goes without saying. *but*what*else* ?
>> > >
>> >
>> > Doing the usual GUI updates (hover, progress bar, whatsoever) so that
>> > the application does not appear "frozen".
>> >
>>
>>  We asked the users (releases 1-2 where developed by our  
>> "predecessors", we
>> did the 3.x release series, the users where *very* well experienced :=
>> plagued by DB response time). Guess what they asked for.
>>
>>  BTW: progress bar update is #fork work.
>
> UI updates in general have to happen in a very specific thread.

Sure.

>> Furthermore, you'll earn credit if
>> you can predict the 100% base and the respective increments, of  
>> arbitrary db
>> queries which are performed on some dedicated server multi-user, predict
>> with a small epsilon (not like MS$ does it when they copy/move around
>> files).
>
> Progress bars in general have a indeterminate mode for such cases.

NP with me but, this is just an excuse from the IT-shamanes (not you nor  
me nor anybody else reading this ;) , for their inability to predict  
*time*.

>> >
>> >
>> > > > Cheers
>> > > > Philippe
>> > > >
>> > > >
>> > > > >  I ask with this background in mind: over several years I  
>> headed a
>> team
>> > > of
>> > > > > developers who produced 1.5 releases/year of a
>> > > > > (fat+GUI)client<->(shared+fast)db server app with
>> > > between 6
>> > > > > and 60 GB data etc, 50+ installation sites (institutions with  
>> their
>> own
>> > > db
>> > > > > server) and 100+ users, with 98% of the db data being updated  
>> over
>> night
>> > > > > (incrementally). We brought down the app's db response time from
>> minutes
>> > > to
>> > > > > seconds but still never found any reason for using non-blocking
>> queries,
>> > > > > because nothing much was there that could have been done by the  
>> user
>> in
>> > > the
>> > > > > meantime.
>> > > > >
>> > > > >  Do you just want to see non-freezing queries running or have  
>> some
>> other
>> > > > > reason for that need?
>> > > > >
>> > > > >  /Klaus
>> > > > >
>> > > > >
>> > > > > > Or, is it a bigger issue than just ODBC, something buried deep
>> within
>> > > the
>> > > > > VM
>> > > > > > and/or the FFI?
>> > > > > >
>> > > > > > Thanks,
>> > > > > >
>> > > > > > Rob
>> > > > > >
>> > > > >
>> > > >
>> > >
>> > >
>> >
>> >
>>
>>
>>
>>
>
>



Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Threaded ODBC

Rob Rothwell
In reply to this post by Klaus D. Witzel
On 5/11/08, Klaus D. Witzel <[hidden email]> wrote:
Out of curiosity, what would it be that you intend to let the users do while longish queries are tickling the db?

I ask with this background in mind: over several years I headed a team of developers who produced 1.5 releases/year of a (fat+GUI)client<->(shared+fast)db server app with between 6 and 60 GB data etc, 50+ installation sites (institutions with their own db server) and 100+ users, with 98% of the db data being updated over night (incrementally). We brought down the app's db response time from minutes to seconds but still never found any reason for using non-blocking queries, because nothing much was there that could have been done by the user in the meantime.

Do you just want to see non-freezing queries running or have some other reason for that need?

Well..l was the one who asked the question in the first place, so I guess I should try to explain myself!

First...I completely agree with nightly processing.  We (two of us, not a team of developers!) do some of that now, but only in one of our many data sources because we don't have an operational warehouse yet and violate our license agreements every time we run batch processing on our production systems!

However, we are using Smalltalk in a Healthcare environment where:

1.  We deal with many "special cases" based on a "per patient model."  We have "inherited" data that was not set up with aggregate querying in mind.  We are trying to improve the quality of said data, but this is a long term project, and in the meantime we do a lot of "if-then's" that are much simpler in "programming" mode than in SQL.  I'm sure the DBA's out there might throw eggs, but how else can you get a timestamp out of an xml file whose name and location is found in a field in a table?  What about systems that don't even use tables?  Etc, etc, etc...  Healthcare is FUN if you like something DIFFERENT all the time!!!

2.  We are just now implementing a data warehouse to enable cross-system nightly processing.  For the weird systems mentioned above, we will Smalltalk our way to "feed the machine," extracting data and creating input files for the warehouse.  For this part of the nightly processing, is it necessary to NOT lock up the VM?  Probably not.  Multiple images for each system and so on.  But debugging is much easier when you can just "stop the process."  Sometimes a "frozen" Squeak image is just not that easy to deal with for novices such as ourselves.

3.  We support "research querying" for Six Sigma (process improvement) activities, and are starting to use a Smalltalk image as an "interactive querying tool" to deal with all the special cases mentioned above, generate random lists, massage and format the data, etc...  In this "interactive mode," it is nice to keep working in the image, planning your next "move," while your query chugs along.  In VisualWorks (still trying to swing the license fee, and still wondering if it is necessary), I can even start "trying out" some of the results while a lengthy query is running.  Some of our systems are so slow, and because we are "researching," we make mistakes.  It's nice to be able to end a process when you forgot to save the image before executing the query!

4.  One of our "big" applications is for data collection tools for regulatory reporting.  Much of our data isn't even IN a computer yet.  Employees abstract the data by hand from paper medical records.  We are trying to get SOME of what they need if it is available by generating nightly "work" lists as new patients are "coded" and end up in various reporting populations, extracting what data we can (either from pre-built queries or dealing with the special cases mentioned above), and presenting Aida-based "forms" for them to fill in the remaining data. At that point, I defer to the arguments presented already with regards to the user "waiting"
for their form to load... 

Then, of course, we will feed the combined data back into the warehouse...

So, in the end, a lot of our "customers" aren't users at all, but just us, the programmers, interactively using Smalltalk as a tool or developing other nightly processing tools.  I just liked the threaded connections I tried out in VisualWorks and 
Smalltalk/X because it made it easier form ME to work with the image, so I just wondered how hard it would be to implement.

Thanks for asking the question, though; I have been asking the same one of myself for several months now as we have been struggling to "choose" a Smalltalk product.  One thing is for sure, though, Smalltalk is DEFINITELY the right tool for the right job amidst the natural objects and subclasses of healthcare!

Hope some of that made sense,

Rob


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Time for a new DB-Plugin [wa: Threaded ODBC]

Rob Rothwell
In reply to this post by Klaus D. Witzel
Klaus,

I would be happy to help any way I can!  I and co-worker have access to Oracle, SQL server, Postgres, MySQL, DB2, and KBase data sources, to name a few.  And we are definitely good at "breaking" things.

Not so long ago, I was a decent assembly language programmer, but have never written a Squeak plugin before and still consider myself to be on the "novice" end of the Smalltalk spectrum, although I am starting to turn the corner.

Thanks for the invitation,

Rob

On 5/11/08, Klaus D. Witzel <[hidden email]> wrote:
On Sat, 10 May 2008 21:08:53 +0200, Rob Rothwell wrote:

On 5/10/08, Igor Stasenko wrote:

2008/5/10 Rob Rothwell :

I can help with windoze port of openDbx. Lets hope its wouldn't be too
hard.
Also i can help with making generic binding of openDBX to squeak by
implementing a plugin.
But i'm not yet ready to start with it :)


Sounds good.  Is there anything I can try to learn in the meantime that
would make me more useful?

Yes, sure. Igor+my have decided to build a new DB plugin for the MS$ platform, so that we perhaps no longer hear complaints about missing MS$+DB support (for the major/open DB vendors) in Squeak. You are invited to join us, we could make use of some input and also help with non-toy DB testing (and whatever you'd like to share or help with).

This is also an invitation to join the project, for Squeakers who asked for Oracle support on their MS$ platform.

Send email please.
 




Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: Time for a new DB-Plugin [wa: Threaded ODBC]

EstebanLM
Hi all,
Sorry for jumping to this thread so late, but it was weekend and I was
far from my computer :)
A little team of students and I are developing SqueakDBX... It is just
the begining, but we hope to provide a realiable DB plugin, who uses
asyncronic calls for performing the queries (and OpenDBX do that). This
project was rejected from SoC (the comunity felt that other projects
were more importat), but we kept working on, and now it is listed as a
possible SummerTalk project.
Currently, the code in www.squeaksource.com/SqueakDBX is just a proof
of concept and little more, but we are very exited about the preliminar
results. Of course, OpenDBX currently runs only on *nix systems (and
OSX, of course), and not windows, but I think it wont be difficult to
migrate it to windoze... Norbert, the mantainer of OpenDBX is very
helpful.

I invite you (Igor, Rob, Klaus and all the interested in developing a
modern DB plugin) to join efforts, not duplicating them.

Thanks,
Esteban

On 2008-05-11 12:02:07 -0300, "Rob Rothwell" <[hidden email]> said:

>
>
> Klaus,
>
> I would be happy to help any way I can!  I and co-worker have access to
> Oracle, SQL server, Postgres, MySQL, DB2, and KBase data sources, to name a
> few.  And we are definitely good at "breaking" things.
>
> Not so long ago, I was a decent assembly language programmer, but have never
> written a Squeak plugin before and still consider myself to be on the
> "novice" end of the Smalltalk spectrum, although I am starting to turn the
> corner.
>
> Thanks for the invitation,
>
> Rob
>
> On 5/11/08, Klaus D. Witzel <[hidden email]> wrote:
>>
>> On Sat, 10 May 2008 21:08:53 +0200, Rob Rothwell wrote:
>>
>> On 5/10/08, Igor Stasenko wrote:
>>>
>>>>
>>>> 2008/5/10 Rob Rothwell :
>>>>
>>>> I can help with windoze port of openDbx. Lets hope its wouldn't be too
>>>> hard.
>>>> Also i can help with making generic binding of openDBX to squeak by
>>>> implementing a plugin.
>>>> But i'm not yet ready to start with it :)
>>>>
>>>>
>>> Sounds good.  Is there anything I can try to learn in the meantime that
>>> would make me more useful?
>>>
>>
>> Yes, sure. Igor+my have decided to build a new DB plugin for the MS$
>> platform, so that we perhaps no longer hear complaints about missing MS$+DB
>> support (for the major/open DB vendors) in Squeak. You are invited to join
>> us, we could make use of some input and also help with non-toy DB testing
>> (and whatever you'd like to share or help with).
>>
>> This is also an invitation to join the project, for Squeakers who asked
>> for Oracle support on their MS$ platform.
>>
>> Send email please.
>
>
> <span class="gmail_quote">Klaus,<br><br>I would be happy to help any
> way I can! &nbsp;I and co-worker have access to Oracle, SQL server,
> Postgres, MySQL, DB2, and KBase data sources, to name a few. &nbsp;And
> we are definitely good at &quot;breaking&quot; things.<br>
>  <br>Not so long ago, I was a decent assembly language programmer, but
> have never written&nbsp;a Squeak plugin before and still consider
> myself to be on the &quot;novice&quot; end of the Smalltalk spectrum,
> although I am starting to turn the corner.<br>
> <br>Thanks for the invitation,<br><br>Rob<br><br>On 5/11/08, <b
> class="gmail_sendername">Klaus D. Witzel</b> &lt;<a
> href="mailto:[hidden email]">[hidden email]</a>&gt;
> wrote:</span><blockquote class="gmail_quote" style="margin-top: 0;
> margin-right: 0; margin-bottom: 0; margin-left: 0; margin-left: 0.80ex;
> border-left-color: #cccccc; border-left-width: 1px; border-left-style:
> solid; padding-left: 1ex">
> On Sat, 10 May 2008 21:08:53 +0200, Rob Rothwell
> wrote:<br><br><blockquote class="gmail_quote" style="border-left-color:
> #cccccc; border-left-width: 1px; border-left-style: solid;
> padding-left: 1ex"> On 5/10/08, Igor Stasenko wrote:<br>
> <blockquote class="gmail_quote" style="border-left-color: #cccccc;
> border-left-width: 1px; border-left-style: solid; padding-left:
> 1ex"><br> 2008/5/10 Rob Rothwell :<br><br> I can help with windoze port
> of openDbx. Lets hope its wouldn&#39;t be too<br>
>  hard.<br> Also i can help with making generic binding of openDBX to
> squeak by<br> implementing a plugin.<br> But i&#39;m not yet ready to
> start with it :)<br><br></blockquote><br> Sounds good. &nbsp;Is there
> anything I can try to learn in the meantime that<br>
>  would make me more useful?<br></blockquote><br> Yes, sure. Igor+my
> have decided to build a new DB plugin for the MS$ platform, so that we
> perhaps no longer hear complaints about missing MS$+DB support (for the
> major/open DB vendors) in Squeak. You are invited to join us, we could
> make use of some input and also help with non-toy DB testing (and
> whatever you&#39;d like to share or help with).<br>
> <br> This is also an invitation to join the project, for Squeakers who
> asked for Oracle support on their MS$ platform.<br><br> Send email
> please.</blockquote><div>&nbsp;</div><br><br>




Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Threaded ODBC

johnmci
In reply to this post by Janko Mivšek
I'm not reading all the threads here, but certainly the Hydra VM work  
could dovetail nicely with work on database queries that lock up the  
image thus causing issues with serving up web requests.


On May 11, 2008, at 2:09 AM, Janko Mivšek wrote:

> Klaus D. Witzel wrote:
>> Philippe Marschall wrote:
>
>>>> Out of curiosity, what would it be that you intend to let the  
>>>> users do
>>>> while longish queries are tickling the db?
>>>
>>> If you use Seaside: reply to other requests.
>> Sure, goes without saying. *but*what*else* ?
>
> For web apps it is really important not to block a whole web app  
> server while processing a single SQL request. What else? It can be  
> another SQL request running in parallel, or just building some web  
> pages from a cached data, etc etc. To repeat, threaded ODBC or  
> something similar is really needed for Squeak to be used in web app  
> world.
>
> Janko
>
> --
> Janko Mivšek
> AIDA/Web
> Smalltalk Web Application Server
> http://www.aidaweb.si
>

--
=
=
=
========================================================================
John M. McIntosh <[hidden email]>
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
=
=
=
========================================================================



Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: Time for a new DB-Plugin [wa: Threaded ODBC]

Klaus D. Witzel
In reply to this post by EstebanLM
On Mon, 12 May 2008 05:32:26 +0200, Esteban Lorenzano wrote:

> Hi all,
> Sorry for jumping to this thread so late, but it was weekend and I was  
> far from my computer :)
> A little team of students and I are developing SqueakDBX... It is just  
> the begining, but we hope to provide a realiable DB plugin, who uses  
> asyncronic calls for performing the queries (and OpenDBX do that). This  
> project was rejected from SoC (the comunity felt that other projects  
> were more importat),

Well, we asked GSoC for many more slots for our 20+ registered  
applications, got one but not six more, and so many projects (among them  
yours) could not make it.

> but we kept working on, and now it is listed as a possible SummerTalk  
> project.

Good news & good to see that you're keen to "sell" your project :)

> Currently, the code in www.squeaksource.com/SqueakDBX is just a proof of  
> concept and little more, but we are very exited about the preliminar  
> results. Of course, OpenDBX currently runs only on *nix systems (and  
> OSX, of course), and not windows, but I think it wont be difficult to  
> migrate it to windoze... Norbert, the mantainer of OpenDBX is very  
> helpful.

The way I see it (and I offered that opinion to Igor in email) is, that  
the OpenDBX project doesn't see much value in the MS$ platform. So many  
releases but no attempt for a port, not even a plan on their homepage (and  
Slashdot doesn't know about OpenDBX). You might want to take the many  
failed projects into consideration, for example Chilli and ADOdb, to name  
a few. We don't want to be locked in and Igor+my drafted a plan which  
explicitly avoids that and lets us put our effort *only* on our parts and  
*not* on theirs (except bug reports).

None of us (incl. your team?) is in the professional DB business and all  
we can do is use existing modules (like OpenDBX) as soon as there is  
years-long support available and they proved to perform very well on the  
MS$ platform and receive the respective DB vendor(s) support. We're  
talking about very expensive enterprise DB's and that's a point at which  
I'm not willing to accept a single compromise in our project.

> I invite you (Igor, Rob, Klaus and all the interested in developing a  
> modern DB plugin) to join efforts, not duplicating them.

Last night Igor designed the module layer and convinced me that OpenDBX  
can easily be made an external module (mini-driver) once it's available.  
Our project intends to support more than just one such mini-driver,  
loadable on demand. Part of this is Igor's mini-driver API which is all  
that needs to be adapted for making a new external DB module. And Igor  
insists on our plugin to manage multiple native threads and their db  
sessions; wink, blink ;)

Now, unfortunately MS$ is the platform that Rob and Frank want *now* and  
so OpenDBX is, for a loong, loong time, out of reach for us. This is also  
the reason behind our project, the *absence* of MS$ platform support.

We intend to avoid duplication by matching your project with our draft,  
and then see what can be re-used or needs to be rewritten + added. Perhaps  
your team can jump in with review+feeback, that would be great! :)

/Klaus

> Thanks,
> Esteban
>
> On 2008-05-11 12:02:07 -0300, "Rob Rothwell" <[hidden email]>  
> said:
>
>>   Klaus,
>>  I would be happy to help any way I can!  I and co-worker have access to
>> Oracle, SQL server, Postgres, MySQL, DB2, and KBase data sources, to  
>> name a
>> few.  And we are definitely good at "breaking" things.
>>  Not so long ago, I was a decent assembly language programmer, but have  
>> never
>> written a Squeak plugin before and still consider myself to be on the
>> "novice" end of the Smalltalk spectrum, although I am starting to turn  
>> the
>> corner.
>>  Thanks for the invitation,
>>  Rob
>>  On 5/11/08, Klaus D. Witzel <[hidden email]> wrote:
>>>  On Sat, 10 May 2008 21:08:53 +0200, Rob Rothwell wrote:
>>>  On 5/10/08, Igor Stasenko wrote:
>>>>
>>>>>  2008/5/10 Rob Rothwell :
>>>>>  I can help with windoze port of openDbx. Lets hope its wouldn't be  
>>>>> too
>>>>> hard.
>>>>> Also i can help with making generic binding of openDBX to squeak by
>>>>> implementing a plugin.
>>>>> But i'm not yet ready to start with it :)
>>>>>
>>>> Sounds good.  Is there anything I can try to learn in the meantime  
>>>> that
>>>> would make me more useful?
>>>>
>>>  Yes, sure. Igor+my have decided to build a new DB plugin for the MS$
>>> platform, so that we perhaps no longer hear complaints about missing  
>>> MS$+DB
>>> support (for the major/open DB vendors) in Squeak. You are invited to  
>>> join
>>> us, we could make use of some input and also help with non-toy DB  
>>> testing
>>> (and whatever you'd like to share or help with).
>>>  This is also an invitation to join the project, for Squeakers who  
>>> asked
>>> for Oracle support on their MS$ platform.
>>>  Send email please.
[...cut the HTML part...]


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Time for a new DB-Plugin [wa: Threaded ODBC]

Rob Rothwell
On Mon, May 12, 2008 at 4:33 AM, Klaus D. Witzel <[hidden email]> wrote:
Last night Igor designed the module layer and convinced me that OpenDBX can easily be made an external module (mini-driver) once it's available. Our project intends to support more than just one such mini-driver, loadable on demand. Part of this is Igor's mini-driver API which is all that needs to be adapted for making a new external DB module. And Igor insists on our plugin to manage multiple native threads and their db sessions; wink, blink ;)

Wow.  Smalltalk.  Move fast...!

Plugin Name: DBPlugin...maybe this should include an OpenDBX reference since it will be based on it?  OpenDBXPlugin?

Package Name: SqueakDB...good

So, if I understand...the design would work like a "meta-db" service that would dynamically load new db modules for various databases?  Meaning a single service would be handling the Squeak transactions and doling them out to the correct mini-drivers?

And now, without knowing anything about your design, and probably sounding foolish, could your "transaction manager" be written in Squeak itself, running headless and passing requests to the appropriate drivers?

Now, unfortunately MS$ is the platform that Rob and Frank want *now* and so OpenDBX is, for a loong, loong time, out of reach for us. This is also the reason behind our project, the *absence* of MS$ platform support.

This is true!




Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Time for a new DB-Plugin [wa: Threaded ODBC]

Igor Stasenko
2008/5/12 Rob Rothwell <[hidden email]>:

> On Mon, May 12, 2008 at 4:33 AM, Klaus D. Witzel <[hidden email]>
> wrote:
>>
>> Last night Igor designed the module layer and convinced me that OpenDBX
>> can easily be made an external module (mini-driver) once it's available. Our
>> project intends to support more than just one such mini-driver, loadable on
>> demand. Part of this is Igor's mini-driver API which is all that needs to be
>> adapted for making a new external DB module. And Igor insists on our plugin
>> to manage multiple native threads and their db sessions; wink, blink ;)
>

Yes, that's a needed functionality, because different database
frontends may or may not support threading.
But we want VM to never be blocked by a calls to crappy modules, right? :)

> Wow.  Smalltalk.  Move fast...!
>
> Plugin Name: DBPlugin...maybe this should include an OpenDBX reference since
> it will be based on it?  OpenDBXPlugin?
>
> Package Name: SqueakDB...good
>
> So, if I understand...the design would work like a "meta-db" service that
> would dynamically load new db modules for various databases?  Meaning a
> single service would be handling the Squeak transactions and doling them out
> to the correct mini-drivers?

Yes, and some functionality can be visible at higher levels, so you
potentially can choose what mini-driver to use.

>
> And now, without knowing anything about your design, and probably sounding
> foolish, could your "transaction manager" be written in Squeak itself,
> running headless and passing requests to the appropriate drivers?
>

Not sure what is 'transaction manager' here. But surely, you can make
own abstraction for working with DBs in squeak.
The plugin API should serve as a uniform way for talking with
different DB frontends via minidrivers.

>From my mail to Klaus:

In ST code i can write:

DBManager>>useMiniDriver: aLibraryPath
<primitive: #connectMiniDriver>

this primitive should load a OS shared library, and using known
minidriver API ask for its capabilities and DB types it supports,
so, then users of plugin can write:

self ifWin32: [ driver := DBManager useMiniDriver: 'ADO.dll'. ].
driver enumSupportedDBTypes includes: 'MSSQL' ifTrue: [ .... ]

this will be a low-level support code in ST. A high level code would be

connect: dbType dbHost: ... dbName: ... dbUser: ... dbPass: .. options: ..

or, if users know what they do:

connectUsingLibrary: 'mysqlMiniDriver.so' dbHost: ... dbName: ...
dbUser: ... dbPass: .. options: ..

In this way, we implement plugin once, and as product we having:
- ST package
- plugin
- an API for minidrivers

then developers can implement own minidrivers using pure C - simply by
adopting API with external library they use.

>> Now, unfortunately MS$ is the platform that Rob and Frank want *now* and
>> so OpenDBX is, for a loong, loong time, out of reach for us. This is also
>> the reason behind our project, the *absence* of MS$ platform support.
>
> This is true!
>


--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: [ANN] Unload Traits script

Andreas.Raab
In reply to this post by Tapple Gao
Hi Matthew -

This is very interesting work. Your script presents a unique opportunity
to actually compare the traitified version of the class kernel with one
that doesn't have these modifications applied and compare notes
directly. I am still in the process of doing that, but one thing that I
almost instantly noticed was the subjective feeling that "sanity had
suddenly returned" to a previously insanely complex part of the system.
And I'm slowly starting to understand why that is.

Let's do a little exercise: One thing I regularly do when there are
changes to the class kernel is to go through the main hook for method
addition (addSelector:withMethod:) to see if there are any changes along
the way. When you do this in the image without traits you end up with an
exploration chain like here:

* addSelector:withMethod: has one implementor which calls
addSelector:withMethod:notifying:
* addSelector:withMethod:notifying: has two implementors (in Behavior as
well as ClassDescription) where the latter is basically just adding the
SystemChangeNotifier around its superclass implementation. Both versions
call addSelectorSilently:withMethod:
* addSelectorSilently:withMethod: has the same pattern (the base
implementation in Behavior and an added notification in
ClassDescription) which calls methodDictAddSelectorSilently:withMethod:
* methodDictAddSelectorSilently:withMethod: calls then
#basicAddSelector:withMethod: which ultimately does the work.

Coincidentally, the last two methods are completely superfluous and
could just be folded into Behavior>>addSelectorSilently:withMethod:
(which is the implementation in 3.8).

The total number of entities to deal with in this case is seven methods
(five if you discount the last two) in two classes.

Now let's do the same for the traits version:
* addSelector:withMethod: starts out with showing four implementors; two
traits (TCompilingBehavior and TPureBehavior) as well as two classes,
TraitBehavior and Behavior. The implementations look identical but it is
not clear if they are and how one would actually find out.
* addSelector:withMethod:notifying: shows *seven* implementors; but with
only two obviously different versions which are the ones ultimately used
by Behavior and ClassDescription
* addSelectorSilently:withMethod: shows again seven implementor; this
time with four apparently different implementations
* methodDictAddSelectorSilently:withMethod: shows three implementors
with only one apparent implementation of the method
* and finally, basicAddSelector:withMethod: shows another four
implementors with only one apparent version of the method.

Total number of entities dealt with in the process: 25 methods, 4
classes, 3 traits. Even if you ignore those parts that aren't present in
the first image, you still end up with 18 methods, 2 classes, 3 traits.
In other words, the relative complexity one needs to deal with to
perform the same task is about 3-5 times higher.

I think that's the main problem that I have with the implementation at
hand. Any measure that I can think of to compare complexity comes up
with at least a doubling of the complexity introduced in the class
kernel, many of them show *much* larger increases. This is very similar
to the issues observed here:

http://lists.squeakfoundation.org/pipermail/squeak-dev/2007-August/119295.html

where the amount of complexity explodes similarly. I'm not completely
sure at this point whether the issues should be attributed to lack of
tool support, or whether they are just the natural result of using MI
inappropriately. I currently tend towards the latter because even with
better tools significant amounts of extra complexity would remain and
there is no real justification for the use of MI in that part of the system.

In any case, this is truly a *great* opportunity for people who haven't
made up their mind to compare both versions directly and see which one
they prefer.

Cheers,
   - Andreas

Matthew Fulmer wrote:

> I wrote a script that removes traits from a 3.9 or 3.8 image:
> http://installer.pbwiki.org/UnloadTraits
>
> In an image with Installer (preferably LPF), do:
> Installer install: 'UnloadTraits'
>
> I tested this in 3.10, 3.9, and 3.9.1
>
> What it does:
> - Stop all trait activity
> - Recompile all classes into the old format
> - Remove all traits from the system
> - Get rid of pointers to traits or traits-related classes
> - Remove/modify lots of methods that understand traits
>   functionality
> - Unload the traits package
> - Install 3 stub methods so that Monticello versions descended
>   from 3.9 still work
>
> This is not a modular solution, but it does make a 3.10 or 3.9
> system with no traits around anywhere, and the resulting image
> is quite stable. I don't intend to make Traits loadable right
> now, but if you want to, I can answer questions.
>
> Have fun
>


Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: Time for a new DB-Plugin [wa: Threaded ODBC]

EstebanLM
In reply to this post by Klaus D. Witzel
On 2008-05-12 05:33:21 -0300, "Klaus D. Witzel" <[hidden email]> said:

> On Mon, 12 May 2008 05:32:26 +0200, Esteban Lorenzano wrote:
>
>> Hi all,
>> Sorry for jumping to this thread so late, but it was weekend and I was  
>> far from my computer :)
>> A little team of students and I are developing SqueakDBX... It is just  
>> the begining, but we hope to provide a realiable DB plugin, who uses  
>> asyncronic calls for performing the queries (and OpenDBX do that). This
>>  project was rejected from SoC (the comunity felt that other projects  
>> were more importat),
>
> Well, we asked GSoC for many more slots for our 20+ registered  
> applications, got one but not six more, and so many projects (among
> them  yours) could not make it.

He, I wasn't complaining... just mentioning it. Maybe my limitatios in
english made it looks as a complain, but I far away of that feeling

>
>> but we kept working on, and now it is listed as a possible SummerTalk  project.
>
> Good news & good to see that you're keen to "sell" your project :)
>
>> Currently, the code in www.squeaksource.com/SqueakDBX is just a proof
>> of  concept and little more, but we are very exited about the
>> preliminar  results. Of course, OpenDBX currently runs only on *nix
>> systems (and  OSX, of course), and not windows, but I think it wont be
>> difficult to  migrate it to windoze... Norbert, the mantainer of
>> OpenDBX is very  helpful.
>
> The way I see it (and I offered that opinion to Igor in email) is, that
>  the OpenDBX project doesn't see much value in the MS$ platform. So
> many  releases but no attempt for a port, not even a plan on their
> homepage (and  Slashdot doesn't know about OpenDBX). You might want to
> take the many  failed projects into consideration, for example Chilli
> and ADOdb, to name  a few. We don't want to be locked in and Igor+my
> drafted a plan which  explicitly avoids that and lets us put our effort
> *only* on our parts and  *not* on theirs (except bug reports).
>
> None of us (incl. your team?) is in the professional DB business and
> all  we can do is use existing modules (like OpenDBX) as soon as there
> is  years-long support available and they proved to perform very well
> on the  MS$ platform and receive the respective DB vendor(s) support.
> We're  talking about very expensive enterprise DB's and that's a point
> at which  I'm not willing to accept a single compromise in our project.
>
>> I invite you (Igor, Rob, Klaus and all the interested in developing a  
>> modern DB plugin) to join efforts, not duplicating them.
>
> Last night Igor designed the module layer and convinced me that OpenDBX
>  can easily be made an external module (mini-driver) once it's
> available.  Our project intends to support more than just one such
> mini-driver,  loadable on demand. Part of this is Igor's mini-driver
> API which is all  that needs to be adapted for making a new external DB
> module. And Igor  insists on our plugin to manage multiple native
> threads and their db  sessions; wink, blink ;)
>
> Now, unfortunately MS$ is the platform that Rob and Frank want *now*
> and  so OpenDBX is, for a loong, loong time, out of reach for us. This
> is also  the reason behind our project, the *absence* of MS$ platform
> support.
>
> We intend to avoid duplication by matching your project with our draft,
>  and then see what can be re-used or needs to be rewritten + added.
> Perhaps  your team can jump in with review+feeback, that would be
> great! :)

Yes, I insist,  we can join our efforts, maybe we can collaborate not
just testing but working on the design/devolopment of squeak side of
the plugin.
This mini-driver intent to be capable to manage diferent backends such
as ADO, OpenDBX, etc?
We can drive our design to match that plugin to.
Anyway I recoment you take a look at the design of OpenDBX, it is very
easy and clear, and maybe, at least, a place of inspiration.

>
> /Klaus
>
>> Thanks,
>> Esteban
>>
>> On 2008-05-11 12:02:07 -0300, "Rob Rothwell" <[hidden email]>  said:
>>
>>>   Klaus,
>>>  I would be happy to help any way I can!  I and co-worker have access to
>>> Oracle, SQL server, Postgres, MySQL, DB2, and KBase data sources, to  name a
>>> few.  And we are definitely good at "breaking" things.
>>>  Not so long ago, I was a decent assembly language programmer, but have  never
>>> written a Squeak plugin before and still consider myself to be on the
>>> "novice" end of the Smalltalk spectrum, although I am starting to turn  the
>>> corner.
>>>  Thanks for the invitation,
>>>  Rob
>>>  On 5/11/08, Klaus D. Witzel <[hidden email]> wrote:
>>>>  On Sat, 10 May 2008 21:08:53 +0200, Rob Rothwell wrote:
>>>>  On 5/10/08, Igor Stasenko wrote:
>>>>>
>>>>>>  2008/5/10 Rob Rothwell :
>>>>>>  I can help with windoze port of openDbx. Lets hope its wouldn't be  too
>>>>>> hard.
>>>>>> Also i can help with making generic binding of openDBX to squeak by
>>>>>> implementing a plugin.
>>>>>> But i'm not yet ready to start with it :)
>>>>>>
>>>>> Sounds good.  Is there anything I can try to learn in the meantime  that
>>>>> would make me more useful?
>>>>>
>>>>  Yes, sure. Igor+my have decided to build a new DB plugin for the MS$
>>>> platform, so that we perhaps no longer hear complaints about missing  MS$+DB
>>>> support (for the major/open DB vendors) in Squeak. You are invited to  join
>>>> us, we could make use of some input and also help with non-toy DB  testing
>>>> (and whatever you'd like to share or help with).
>>>>  This is also an invitation to join the project, for Squeakers who  asked
>>>> for Oracle support on their MS$ platform.
>>>>  Send email please.
> [...cut the HTML part...]




Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: Time for a new DB-Plugin [wa: Threaded ODBC]

Klaus D. Witzel
On Mon, 12 May 2008 14:48:33 +0200, Esteban Lorenzano wrote:

> On 2008-05-12 05:33:21 -0300, "Klaus D. Witzel" said:
>
>> On Mon, 12 May 2008 05:32:26 +0200, Esteban Lorenzano wrote:
>>
>>> Hi all,
>>> Sorry for jumping to this thread so late, but it was weekend and I  
>>> was  far from my computer :)
>>> A little team of students and I are developing SqueakDBX... It is  
>>> just  the begining, but we hope to provide a realiable DB plugin, who  
>>> uses  asyncronic calls for performing the queries (and OpenDBX do  
>>> that). This  project was rejected from SoC (the comunity felt that  
>>> other projects  were more importat),
>>  Well, we asked GSoC for many more slots for our 20+ registered  
>> applications, got one but not six more, and so many projects (among  
>> them  yours) could not make it.
>
> He, I wasn't complaining... just mentioning it. Maybe my limitatios in  
> english made it looks as a complain, but I far away of that feeling

NP it was just an explanation for what "rejected" means asked by someone  
in the audience.

>>
>>> but we kept working on, and now it is listed as a possible SummerTalk  
>>> project.
>>  Good news & good to see that you're keen to "sell" your project :)
>>
>>> Currently, the code in www.squeaksource.com/SqueakDBX is just a proof  
>>> of  concept and little more, but we are very exited about the  
>>> preliminar  results. Of course, OpenDBX currently runs only on *nix  
>>> systems (and  OSX, of course), and not windows, but I think it wont be  
>>> difficult to  migrate it to windoze... Norbert, the mantainer of  
>>> OpenDBX is very  helpful.
>>  The way I see it (and I offered that opinion to Igor in email) is,  
>> that  the OpenDBX project doesn't see much value in the MS$ platform.
[...]
>>  We intend to avoid duplication by matching your project with our  
>> draft,  and then see what can be re-used or needs to be rewritten  
>> + added. Perhaps  your team can jump in with review+feeback, that would  
>> be great! :)
>
> Yes, I insist,

Heh! :) Okay, collaboration is always appreciated.

> we can join our efforts, maybe we can collaborate not just testing but  
> working on the design/devolopment of squeak side of the plugin.

Some hours ago a consolidated draft was sent to team members, at this  
point in time we should feel free from having to consider "prior art" and  
I'd appreciate users bring in their priorities from daily (nightly!)  
routine (Rob has talked about many of his requirements and expectations in  
this thread, Frank has Oracle as priority #1).

> This mini-driver intent to be capable to manage diferent backends such  
> as ADO, OpenDBX, etc?

Precisely (well, who said that his mini-driver API adaptation of  
msado15.dll will be a piece of cake ;)

> We can drive our design to match that plugin to.

Lots of synergy, yes no doubt.

> Anyway I recoment you take a look at the design of OpenDBX, it is very  
> easy and clear, and maybe, at least, a place of inspiration.

Yes, is on the plan after our draft has strong support within the team.  
You'll be cc'ed as soon as wiki.squeak.org has the news (presumably not  
before S3 in Potsdam this week).

>>  /Klaus
>>
>>> Thanks,
>>> Esteban
[...]


12