Re: Not embedding SQL in perl (was RE: [OT] Inspired by closing comments from the UBB thread.)

2001-08-03 Thread Ken Williams

[EMAIL PROTECTED] (Jeffrey W. Baker) wrote:
>I've worked with Scott Ambler, and I could record everything Scott Ambler
>knows about actually devleloping large systems on the head of a pin, using
>a magic marker.  That guy is a hopeless academic without the slightest
>clue of how to actually make software happen.

Don't hold back Jeff, tell us how you really feel. =)  I know I've
worked with some people who I'd want to say the same thing about, but so
far nobody's posted any of their treatises on the list.

I find this thread kind of interesting, because it's really about how
different people have solved complicated problems.  It's clear that some
of the disagreement happens because people haven't adequately
experimented with the various approaches (who has time for that,
anyway?), but undoubtedly some of the disagreement happens because
people genuinely have very different problems to solve.


  ------
  Ken Williams Last Bastion of Euclidity
  [EMAIL PROTECTED]The Math Forum



Re: Not embedding SQL in perl (was RE: [OT] Inspired by closing comments from the UBB thread.)

2001-08-01 Thread Gunther Birznieks

At 02:44 PM 8/1/2001 -0700, Jeffrey W. Baker wrote:


>On Thu, 2 Aug 2001, Gunther Birznieks wrote:
>
> > When you've had your fill of wrestling over mySQL vs PostGres and stored
> > procs versus inline SQL (I know I have long ago)
> >
> > You guys should definitely read the following:
> >
> > http://www.ambysoft.com/persistenceLayer.html
> >
> > One of my current coworkers turned me on to this. I have found it to be one
> > of the best series of articles related towards what it takes to abstract
> > database away from your object layer and the various levels at which it
> > makes sense to do so.
> >
> > You may find the design a little complex, but Scott pretty explicitly
> > states that this is what is necessary for a *large* system. You can always
> > go down a less complex path by choice if you feel your programs aren't
> > complex enough to need the full Persistence Layer structure he advocates.
>
>I've worked with Scott Ambler, and I could record everything Scott Ambler
>knows about actually devleloping large systems on the head of a pin, using
>a magic marker.  That guy is a hopeless academic without the slightest
>clue of how to actually make software happen.

I suppose I can't comment on your opinion as I do not personally know him. 
But I find his statements to be worthy (as explained further below) 
regardless of what you say about his real-world knowledge.

So I can only imagine that he has taken in many comments from users over 
the years and made up his articles based on feedback since I think this one 
is particular is reasonable. Although I've never had to implement all 6 or 
so object abstractions in the ultimate persistence layer he recommends. :)

>Here's the brutal truth about persistance "abstractions" using an RDBMS
>backing store.  At some point, your DBA is going to come up to you and
>tell you that you code is too slow.  You need to rewrite some SQL queries
>to use a different index, or some sorting hints, or whatever.  You will
>realize that you need to pass some extra information down through your
>abstraction layers to make it all happen.  After that happens twice or
>thrice, you will slowly come to realize that your abstraction is really no
>abstraction at all: every time the schema changes, the top level interface
>needs to change as well.

I can't say that I agree.

It depends on what you are coding for. Are you coding for performance or 
are you coding for getting a product out there that is easy to maintain?

In many cases, these two requirements are quite at odds. This thread was 
originally sparked by someone getting annoyed that SQL was embedded 
throughout the code and finding it hard to grasp how to deal with this.

While it's true that the best performance comes from hand-coding the SQL, 
and if you hand-code the SQL, it should arguably be close to the section of 
code that requires this SQL, not all programs require this. In fact, very 
few in my experience. Those that have required speed have required it for a 
small subset of operations in a larger project.

I strongly believe many apps can get away without having SQL embedded. I've 
been doing it for the last several years and definitely coding and 
maintenance time improves with some persistence layer abstraction. But yes, 
you run the risk of having to go back and code a SQL statement or two, and 
you run the risk of somewhat lower performance, but as Scott mentions in 
his article, these should be the well-documented exception, not the rule.

Nick Tonkin posted a very clear and well written post a few minutes ago 
about embedding SQL close to the code which may demonstrate the opposite of 
what I am trying to say. But on the other hand, I could understand that a 
company such as ValueClick really have to make sure their databases and the 
SQL that accesses them are completely tweaked.

So I think given speed requirements, making a HERE document and using other 
clean-coding techniques to keep the SQL close to the code that needs it is 
quite reasonable.

However, in my experience...

Of the things that are harder to duplicate in a persistence layer to one 
degree or another...

Not all applications require transactions
Not all applications require aggregation beyond count
Not all applications require blinding speed (just decent speed)
Not all applications require joins
Not all applications require unions
Not all applications require subselects

And even if you would argue that taking into account a union of 
probabilities an application may need at least one of the above, I have 
found it simply is not true. Usually when an application has a fairly 
complex data model then they need more than one of the above and that's 
when you have to move to SQL.

In other words, if the probability that an app needs each of the features 
above is 5%, then rather than the union of the probabilities being 5 + 5 + 
5 + 5 + 5 + 5, it is really more like 8% where the majority of the 5% is 
really in applications that needs 

Re: Not embedding SQL in perl (was RE: [OT] Inspired by closing comments from the UBB thread.)

2001-08-01 Thread kyle dawkins

Yeah!

Go Gunther.  This is one of the better articles on persistence... Scott 
Ambler has tons of good stuff on his site and I highly recommend it as a 
source for finding out about interesting techniques.  What he describes 
is quite similar to the EOF link I put in one of my earlier posts.

> You guys should definitely read the following:
>
> http://www.ambysoft.com/persistenceLayer.html
>
>
> Oh another warning is that this is Java. Unfortunately, for better or 
> worse, I tend to find some of the best articles on OO design 
> abstractions to be Java ones these days.

yeah, this is (unfortunately) true too.  but it brings a point home: 
that it doesn't matter what language you use.  doesn't matter if it's 
Java+JDBC or Perl+DBI.  In the 10,000 foot view, it's the same shit, 
different pile.  you still have to solve all the same problems using a 
different coloured (and perhaps slightly heavier) toolbox.

kyle
Software Engineer
Central Park Software
http://www.centralparksoftware.com




Re: Not embedding SQL in perl (was RE: [OT] Inspired by closingcomments from the UBB thread.)

2001-08-01 Thread Jeffrey W. Baker



On Thu, 2 Aug 2001, Gunther Birznieks wrote:

> When you've had your fill of wrestling over mySQL vs PostGres and stored
> procs versus inline SQL (I know I have long ago)
>
> You guys should definitely read the following:
>
> http://www.ambysoft.com/persistenceLayer.html
>
> One of my current coworkers turned me on to this. I have found it to be one
> of the best series of articles related towards what it takes to abstract
> database away from your object layer and the various levels at which it
> makes sense to do so.
>
> You may find the design a little complex, but Scott pretty explicitly
> states that this is what is necessary for a *large* system. You can always
> go down a less complex path by choice if you feel your programs aren't
> complex enough to need the full Persistence Layer structure he advocates.

I've worked with Scott Ambler, and I could record everything Scott Ambler
knows about actually devleloping large systems on the head of a pin, using
a magic marker.  That guy is a hopeless academic without the slightest
clue of how to actually make software happen.

Here's the brutal truth about persistance "abstractions" using an RDBMS
backing store.  At some point, your DBA is going to come up to you and
tell you that you code is too slow.  You need to rewrite some SQL queries
to use a different index, or some sorting hints, or whatever.  You will
realize that you need to pass some extra information down through your
abstraction layers to make it all happen.  After that happens twice or
thrice, you will slowly come to realize that your abstraction is really no
abstraction at all: every time the schema changes, the top level interface
needs to change as well.

-jwb




Re: Not embedding SQL in perl

2001-08-01 Thread Henrik Edlund

On Wed, 1 Aug 2001, kyle dawkins wrote:

kd> Well, yes and no.  I was citing that example as *another* reason to keep
kd> SQL out of your application-level code.
kd> If you do, as Henrik suggests, write pure SQL92, then obviously you
kd> wouldn't need to wrap all your SQL in "ifs" like they did with
kd> wwwthreads... you could just switch out MySQL and switch in Filemaker
kd> Pro if it supported SQL92 and had a DBD module :-).  I maintain,
kd> however, that SQL embedded in application logic is evil in all but the
kd> simplest of scripts. Putting it in middleware is mandatory; I don't take
kd> issue with that.

I am not against removing redudancy and creating function/methods of code
that is used more than once so that you don't do the same SQL query at
several places in your code. But that is good programming practices within
your own classes/modules.

But to abstract everything to a SQL class only moves your SQL there and
probably causes severe limitations when wanting to do something advanced
Maybe if you were writing a data abstraction layer and API for some other
programmers, but if you have a database that you know only your script
will use, writing an extra abstraction seems very overkill.

I could see a use for abstraction if we were going to support several
different query languages, but as long as we only use SQL my belief is
that DBI is abstraction enough to maintain DMBS interoperability. And of
course only use SQL92.

Someone once said that more abstraction levels than four (4) is counter
productive.

I can see both sides in real life. It all comes down to what kind of
application development you are doing. And writing your SQL in your main
Perl code now does not make it impossible in the future to abstract it to
it's own class. But I have seen whole applications go under because they
have been so heavily abstracted that in the end no one is even sure what
happens anymore - and then of course - class/object operations in Perl 5
are not the fastest either.

Regards, Henrik

-- 
Henrik Edlund <[EMAIL PROTECTED]>
http://www.edlund.org/

"You're young, you're drunk, you're in bed, you have knives; shit
happens." -- Angelina Jolie




Re: Not embedding SQL in perl

2001-08-01 Thread ryc

> On Wed, 1 Aug 2001, Kyle Dawkins wrote:
>
> KD> Definitely; sotred procedures are hit-and-miss in a lot of
> KD> environments. Remember that a large number of people in the
> KD> mod_perl world can't use 'em because they (we) use MySQL.  If one
> KD> wanted to emulate this behaviour with MySQL, you would essentially
> KD> clone the functionality of your stored procedures using Perl + DBI
> KD> inside your persistence layer.  That is a perfectly viable
> KD> approach too, but a lot less efficient than stored procedures
> KD> (many roundtrips versus one).
>
> And while we are discussing "not cutting corners", those who still use
> MySQL should switch to a real DBMS before they even think of abstracting
> the SQL away from their Perl code.
>
> That people still use MySQL really shows how many lusers there are with
> computers that try to develop real software. I said _try_.
>
> *sigh*

MySQL has its place in the database world, otherwise it would not be so
widely deployed. Some tasks do not require a huge full featured DBMS to get
the job done, so why should they put that requirement on the end user? Are
you under the impression that Oracle is the best db server to use for a web
based voting application? Probably not...

Using MySQL is not cutting corners, its a design decision... if MySQL suits
the needs of the developers and their application, spending time switching
to a "real DBMS" is a total waste.

Ryan




Re: Not embedding SQL in perl

2001-08-01 Thread kyle dawkins

Jon

> I can see your arguement regarding SQL within one's code, but doesn't 
> your arguement fail to hold up if we assume that the SQL is fully 
> "compliant"? 

Well, yes and no.  I was citing that example as *another* reason to keep 
SQL out of your application-level code.
If you do, as Henrik suggests, write pure SQL92, then obviously you 
wouldn't need to wrap all your SQL in "ifs" like they did with 
wwwthreads... you could just switch out MySQL and switch in Filemaker 
Pro if it supported SQL92 and had a DBD module :-).  I maintain, 
however, that SQL embedded in application logic is evil in all but the 
simplest of scripts. Putting it in middleware is mandatory; I don't take 
issue with that.  

> In other words, if the makers of WWWThreads had stuck with standard 
> SQL, rather than using any non-standard features of MySQL like last 
> inserted ID, wouldn't their code be useable on Oracle, for example 
> (assuming we changed the correct var to tell DBI we are using Oracle 
> now) ? 

Sure thing.  

Cheers

Kyle
Software Engineer
Central Park Software
http://www.centralparksoftware.com





Re: Not embedding SQL in perl

2001-08-01 Thread Jonathon M. Robison

I can see your arguement regarding SQL within one's code, but doesn't 
your arguement fail to hold up if we assume that the SQL is fully 
"compliant"?

In other words, if the makers of WWWThreads had stuck with standard SQL, 
rather than using any non-standard features of MySQL like last inserted 
ID, wouldn't their code be useable on Oracle, for example (assuming we 
changed the correct var to tell DBI we are using Oracle now) ?

Just trying to make sure I understand what all the fuss is about.

Jon R.

[EMAIL PROTECTED] wrote:

> 
> 
>  Original Message --------
> Subject: Re: Not embedding SQL in perl
> Date: Wed, 01 Aug 2001 15:56:00 -0400
> From: kyle dawkins <[EMAIL PROTECTED]>
> To: Henrik Edlund <[EMAIL PROTECTED]>
> References: <[EMAIL PROTECTED]>
> 
> 
> 
> Henrik Edlund wrote:
> 
>> And while we are discussing "not cutting corners", those who still use
>> MySQL should switch to a real DBMS before they even think of abstracting
>> the SQL away from their Perl code.
>> 
>> That people still use MySQL really shows how many lusers there are with
>> computers that try to develop real software. I said _try_.
>> 
>> *sigh*
>> 
> 
> Henrik
> 
> Not sure if you're aware of it, but that argument is pretty old.  We're 
> onto a much more interesting, new argument now. :-)
> 
> Seriously though, you're right, MySQL is not a "real" RDBMS.  No 
> transactions, no foreign key constraints, no stored procedures.  It is, 
> however, free, and in use in a lot of places.  And interestingly enough, 
> in a way that makes the current argument even MORE important; writing 
> SQL into your code (as per the current thread of discussion) will make 
> it exponentially more difficult for you to move to a "real" RDBMS as 
> Henrik urges you to.  If you abstract DB access into a middleware layer, 
> you will have a much, much easier time.   By placing SQL into your 
> application code, you are removing the flexibility of changing your 
> persistence mechanism at a later date.  And believe it or not, that's 
> not as uncommon as you might think.
> 
> I cite the example of wwwthreads here... it's a great BBS, runs under 
> mod_perl, is fast, and has a DB backend.  However, the source is 
> LITTERED with SQL, and everywhere there's a line of SQL, the dude has to 
> put an "if" conditional around it to check if the installation is using 
> MySQL or something else, because MySQL has numerous features that are 
> not found elsewhere (last inserted id, REPLACE command, LIMIT m,n)... 
> so, twice the number of SQL statements in code that (in my opinion) 
> should not have any SQL in it at all...
> 
> It's all food for thought (I hope).
> 
> Kyle
> Software Engineer
> Central Park Software
> http://www.centralparksoftware.com




Re: Not embedding SQL in perl

2001-08-01 Thread Henrik Edlund

On Wed, 1 Aug 2001, kyle dawkins wrote:

kd> Not sure if you're aware of it, but that argument is pretty old.
kd> We're onto a much more interesting, new argument now. :-)

All old arguments eventually becomes new again, once in a while... :-)

kd> Seriously though, you're right, MySQL is not a "real" RDBMS.  No
kd> transactions, no foreign key constraints, no stored procedures.
kd> It is, however, free, and in use in a lot of places.  And
kd> interestingly enough, in a way that makes the current argument
kd> even MORE important; writing SQL into your code (as per the
kd> current thread of discussion) will make it exponentially more
kd> difficult for you to move to a "real" RDBMS as Henrik urges you
kd> to.  If you abstract DB access into a middleware layer, you will
kd> have a much, much easier time.  By placing SQL into your
kd> application code, you are removing the flexibility of changing
kd> your persistence mechanism at a later date.  And believe it or
kd> not, that's not as uncommon as you might think.

Or you can make sure you do not use any of those features and write pure
SQL92. I have managed so far to write one SQL statement (no if's) for what
I want to do, and it works with PostgreSQL, Oracle, (those two I use) and
even with MySQL and others. You have to be careful and have a SQL92
definition handy, and it doesn't take much extra time. Then you get easy
portability to other DBMS with DBI/DBD. (And yes, I do seperate code and
content, Perl and HTML, with the excellent Template Toolkit.)

There are times when abstracting your SQL has a use, and times when it is
overkill. If you can't write clean SQL92 (or what you are aiming at)
then you do need to abstract yourself even more than DBI already does. I
am though very anti the use of DBMS-specific SQL.

Regards, Henrik

-- 
Henrik Edlund <[EMAIL PROTECTED]>
http://www.edlund.org/

"You're young, you're drunk, you're in bed, you have knives; shit
happens." -- Angelina Jolie




Re: Not embedding SQL in perl

2001-08-01 Thread kyle dawkins



 Original Message 
Subject: Re: Not embedding SQL in perl
Date: Wed, 01 Aug 2001 15:56:00 -0400
From: kyle dawkins <[EMAIL PROTECTED]>
To: Henrik Edlund <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>



Henrik Edlund wrote:

>And while we are discussing "not cutting corners", those who still use
>MySQL should switch to a real DBMS before they even think of abstracting
>the SQL away from their Perl code.
>
>That people still use MySQL really shows how many lusers there are with
>computers that try to develop real software. I said _try_.
>
>*sigh*
>

Henrik

Not sure if you're aware of it, but that argument is pretty old.  We're 
onto a much more interesting, new argument now. :-)

Seriously though, you're right, MySQL is not a "real" RDBMS.  No 
transactions, no foreign key constraints, no stored procedures.  It is, 
however, free, and in use in a lot of places.  And interestingly enough, 
in a way that makes the current argument even MORE important; writing 
SQL into your code (as per the current thread of discussion) will make 
it exponentially more difficult for you to move to a "real" RDBMS as 
Henrik urges you to.  If you abstract DB access into a middleware layer, 
you will have a much, much easier time.   By placing SQL into your 
application code, you are removing the flexibility of changing your 
persistence mechanism at a later date.  And believe it or not, that's 
not as uncommon as you might think.

I cite the example of wwwthreads here... it's a great BBS, runs under 
mod_perl, is fast, and has a DB backend.  However, the source is 
LITTERED with SQL, and everywhere there's a line of SQL, the dude has to 
put an "if" conditional around it to check if the installation is using 
MySQL or something else, because MySQL has numerous features that are 
not found elsewhere (last inserted id, REPLACE command, LIMIT m,n)... 
 so, twice the number of SQL statements in code that (in my opinion) 
should not have any SQL in it at all...

It's all food for thought (I hope).

Kyle
Software Engineer
Central Park Software
http://www.centralparksoftware.com







Re: Not embedding SQL in perl

2001-08-01 Thread Henrik Edlund

On Wed, 1 Aug 2001, Kyle Dawkins wrote:

KD> Definitely; sotred procedures are hit-and-miss in a lot of
KD> environments. Remember that a large number of people in the
KD> mod_perl world can't use 'em because they (we) use MySQL.  If one
KD> wanted to emulate this behaviour with MySQL, you would essentially
KD> clone the functionality of your stored procedures using Perl + DBI
KD> inside your persistence layer.  That is a perfectly viable
KD> approach too, but a lot less efficient than stored procedures
KD> (many roundtrips versus one).

And while we are discussing "not cutting corners", those who still use
MySQL should switch to a real DBMS before they even think of abstracting
the SQL away from their Perl code.

That people still use MySQL really shows how many lusers there are with
computers that try to develop real software. I said _try_.

*sigh*

-- 
Henrik Edlund <[EMAIL PROTECTED]>
http://www.edlund.org/

"You're young, you're drunk, you're in bed, you have knives; shit
happens." -- Angelina Jolie




Re: Not embedding SQL in perl

2001-08-01 Thread Homsher, Dave V.

>> >>It would be interesting to know how other people have solved
>> >>that problem.
>> >>Currently, we are essentially using embedded SQL in our apps.
>>
>> I have found that stored procedures + perl module wrapper 
>>around the
>>procs.
>> is a nice, balanced approach.
>>
>Definitely; stored procedures are hit-and-miss in a lot of 
>environments.
>Remember that a large number of people in the mod_perl world 
>can't use 'em
>because they (we) use MySQL.  If one wanted to emulate this 
>behavior with
>MySQL, you would essentially clone the functionality of your stored
>procedures using Perl + DBI inside your persistence layer.  That is a
>perfectly viable approach too, but a lot less efficient than stored
>procedures (many roundtrips versus one).

Interesting, I will be working w/MySQL in a few days on a 
side project of my own. We'll see how my outlook changes ;) 
Any recommendations?

Regards,
Dave

"Language shapes the way we think, and determines what we can 
think about." -- B. L. Whorf  



Re: Not embedding SQL in perl

2001-08-01 Thread Michael Peppler

Perrin Harkins writes:
 > >  > I have found that stored procedures + perl module wrapper around the
 > procs.
 > >  > is a nice, balanced approach.
 > >  >
 > >  > The procs. give a nice performance boost as they are precompiled into
 > the
 > >  > server (we use Sybase).
 > >
 > > They are definitely faster, and significantly so.
 > 
 > Maybe so for Sybase.  In Oracle, your SQL statements get cached anyway, as
 > long as you're using bind variables instead of just dynamically building the
 > SQL strings.  (They get cached even if you don't use bind variables, but
 > they'll quickly overflow the cache if you keep changing them with each new
 > value in the WHERE clause.)

Actually I did benchmark this for Sybase, both with stored procs and
with SQL statements with bind variables.

The stored procs are still faster, and make it easier in a non-trivial
organization (where SQL code and perl code may be worked on by
different people) to separate the database logic somewhat, and give
SQL developpers and/or DBAs an easy way to tune SQL requests without
having to touch the application code.

 > 
 > > Using RPC calls instead of language commands also improves speed, and
 > > solves the "quoting" problem, too.
 > 
 > The same goes for bind variables.

Agreed.

Michael
-- 
Michael Peppler - Data Migrations Inc. - http://www.mbay.net/~mpeppler
[EMAIL PROTECTED] - [EMAIL PROTECTED]
International Sybase User Group - http://www.isug.com



Re: Not embedding SQL in perl

2001-08-01 Thread Perrin Harkins

>  > I have found that stored procedures + perl module wrapper around the
procs.
>  > is a nice, balanced approach.
>  >
>  > The procs. give a nice performance boost as they are precompiled into
the
>  > server (we use Sybase).
>
> They are definitely faster, and significantly so.

Maybe so for Sybase.  In Oracle, your SQL statements get cached anyway, as
long as you're using bind variables instead of just dynamically building the
SQL strings.  (They get cached even if you don't use bind variables, but
they'll quickly overflow the cache if you keep changing them with each new
value in the WHERE clause.)

> Using RPC calls instead of language commands also improves speed, and
> solves the "quoting" problem, too.

The same goes for bind variables.
- Perrin




Re: Not embedding SQL in perl

2001-08-01 Thread Kyle Dawkins

All


> Joe Breeden queried:
>
> >>It would be interesting to know how other people have solved
> >>that problem.
> >>Currently, we are essentially using embedded SQL in our apps.
>
> I have found that stored procedures + perl module wrapper around the
procs.
> is a nice, balanced approach.

Definitely; sotred procedures are hit-and-miss in a lot of environments.
Remember that a large number of people in the mod_perl world can't use 'em
because they (we) use MySQL.  If one wanted to emulate this behaviour with
MySQL, you would essentially clone the functionality of your stored
procedures using Perl + DBI inside your persistence layer.  That is a
perfectly viable approach too, but a lot less efficient than stored
procedures (many roundtrips versus one).

> The procs. give a nice performance boost as they are precompiled into the
> server (we use Sybase). I believe that they are more secure, in that you
> aren't dynamically generating sql that might be 'hijack-able'. You are
> providing a discrete amount of functionality. Placing the stored procedure
> execution code in a perl module makes for easy/clean perl access from the
> rest of the app. Moving to a new db isn't too terribly difficult in that
the
> proc names will probably remain as well as the parameters that you pass.
> Also, how often do you move to another database in the life of a web app
> anyway (at least in our corporate environment)?

True, although I don't think it's uncommon to want to move from MySQL to
Postgres, for example.  I have also seen a lot of places move away from
MySQL up to something like DB2 or Oracle when they get their
"it-all-has-to-be-spent" venture capital infusion.

Sigh.

Kyle
Software Engineer
Central Park Software
http://www.centralparksoftware.com





RE: Not embedding SQL in perl

2001-08-01 Thread Michael Peppler

Homsher, Dave V. writes:
 > Joe Breeden queried:
 > 
 > >>It would be interesting to know how other people have solved 
 > >>that problem.
 > >>Currently, we are essentially using embedded SQL in our apps. 
 > 
 > I have found that stored procedures + perl module wrapper around the procs.
 > is a nice, balanced approach.
 > 
 > The procs. give a nice performance boost as they are precompiled into the
 > server (we use Sybase). 

They are definitely faster, and significantly so.

 > I believe that they are more secure, in that you
 > aren't dynamically generating sql that might be 'hijack-able'. 

Using RPC calls instead of language commands also improves speed, and
solves the "quoting" problem, too.

 > Placing the stored procedure
 > execution code in a perl module makes for easy/clean perl access from the
 > rest of the app. 

Absolutely. I've actually created configuration files for logical
database requests (essentially a hash that describes the input and
output of each proc) which lets me use a generic module (about 400
lines) of Sybase::CTlib code for *all* database access.

Works very well, and abstracts the database layer quite nicely.

Michael
-- 
Michael Peppler - Data Migrations Inc. - http://www.mbay.net/~mpeppler
[EMAIL PROTECTED] - [EMAIL PROTECTED]
International Sybase User Group - http://www.isug.com



RE: Not embedding SQL in perl

2001-08-01 Thread Homsher, Dave V.

Joe Breeden queried:

>>It would be interesting to know how other people have solved 
>>that problem.
>>Currently, we are essentially using embedded SQL in our apps. 

I have found that stored procedures + perl module wrapper around the procs.
is a nice, balanced approach.

The procs. give a nice performance boost as they are precompiled into the
server (we use Sybase). I believe that they are more secure, in that you
aren't dynamically generating sql that might be 'hijack-able'. You are
providing a discrete amount of functionality. Placing the stored procedure
execution code in a perl module makes for easy/clean perl access from the
rest of the app. Moving to a new db isn't too terribly difficult in that the
proc names will probably remain as well as the parameters that you pass.
Also, how often do you move to another database in the life of a web app
anyway (at least in our corporate environment)?

Regards,
Dave

"Language shapes the way we think, and determines what we can think about."
-- B. L. Whorf