[Dbix-class] DBIx::Class, another data validation approach

fREW Schmidt frioux at gmail.com
Thu Jul 30 04:02:22 GMT 2009


On Wed, Jul 29, 2009 at 3:15 AM, Alexander Hartmaier <
alexander.hartmaier at t-systems.at> wrote:

> Am Dienstag, den 28.07.2009, 16:20 +0200 schrieb Moritz Onken:
> > Am 28.07.2009 um 10:59 schrieb Alexander Hartmaier:
> >
> > > Am Dienstag, den 28.07.2009, 00:29 +0200 schrieb Rob Kinyon:
> > >> On Thu, Jul 23, 2009 at 08:28, Alexander
> > >> Hartmaier<alexander.hartmaier at t-systems.at> wrote:
> > >>> The DBMS validates data types, length, undef and foreign keys
> > >>> anyway, so
> > >>> maybe using it as validator (parse its error messages) is a
> > >>> possibility?
> > >>
> > >> The problem is that many DBMSes do -NOT- validate things sanely -
> > >> SQLite and MySQL being the biggest offenders, though every DBMS has
> > >> its problems. Oracle, for example, in 9.2.0.3 had an issue where
> > >> certain invalid datetime entries were accepted. Furthermore, part of
> > >> the benefit of an ORM is that it is DBMS-independent - I want to know
> > >> that the same value restrictions are going to be maintained
> > >> regardless
> > >> of backend.
> > >>
> > >> And, finally, the biggest win for validation is things that DBMSes
> > >> cannot do. For example, a SMALLINT that, for business reasons, has to
> > >> be within 20 of another column. How do you express that constraint in
> > >> a DBMS-independent fashion?
> > >>
> > >> I, for one, cannot wait for our new Moose overlords!
> > >>
> > >> Rob
> > > I didn't mean that we don't need business logic or extended
> > > validation,
> > > but use the basic validation the db does anyway instead of cloning it
> > > which could lead to different checks and a performance penalty (i
> > > had to
> > > disable validation for an app that inserts lots of data because it
> > > wasn't fast enough).
> >
> > I'm not sure whether the performance argument applies here because you
> > need a roundtrip to the database. This takes time, especially if the
> > database server is not located on the same machine as the app server.
> >
> > moritz
> You'd do the sql query (insert or update) like now, but use the error
> message (if any) as validation result.


The point is that could be slower than having perl do a check on a value
because of network issues.  And as Rob pointed out, it could be wrong.

-- =

fREW Schmidt
http://blog.afoolishmanifesto.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20090729/34f=
199da/attachment.htm


More information about the DBIx-Class mailing list