The following module was proposed for inclusion in the Module List:
modid: Persist
DSLIP: ampOb
description: Write-once/use-anywhere style persistence.
userid: HANENKAMP (Andrew Sterling Hanenkamp)
chapterid: 7 (Database_Interfaces)
communities:
http://contentment.sourceforge.net/
similar:
Persistent
rationale:
First, I'm not stuck on the name Persist. It's just the one I've
stuck to because I really couldn't find anything that was more
descriptive or appropriate. In fact, I didn't even start with this
name. The original name I chose was Persistent. I made this choice
partly because the existing Persistent was so similar and partly
because Persistent seems to be the best descriptive term available.
However, I switched away to Persist to avoid conflicting with
Persistent as it has very similar functionality and some similar
package names. I originally tried to contact the author of those
modules, DWINTERS, but was unable to get any response to my emails
on the possibility of merging my ideas into his modules. That is one
reason for the new project.
Other than that, I've agonized quite a bit over the choice of the
name Persist and several times about why I needed a module separate
from Persistent. However, the differences between Persist and
Persistent are too great to be reconciled. Both Persistent and
Persist present a unified Perl API for accessing their back-ends.
Both provide access to table schema for the creation of new tables
or whatever storage abstraction the back-end provides.
However, Persist also provides a filtering language that is used to
query all back-ends. Persistent uses the back-end's own query
language. Persist translates its query language into the native
language of the back-end. The query language is based upon SQL to
make common drivers easy to write (no or almost no translation) and
because SQL tends to be easy to understand and easy to parse.
Further, Persist provides more than just table schema, but also to
database instances. Persist allows for the creation and destruction
of new back-ends through a simplified interface. Finally, types are
provided through the use of constants in Persist rather than objects
in Persistent.
The Persist library is made up of 10 modules under Persist:
Persist, Persist::Driver, Persist::Driver::DBI,
Persist::Driver::DBI::PostgreSQL, Persist::Driver::Memory,
Persist::Filter, Persist::Join, Persist::Source, Persist::Table, and
Persist::Tabular. More classes will be added under Persist::Driver
as more drivers are implemented.
I would rather have named Persist as Persistent, but that, I feel,
would conflict with that namespace and create confusion since both
ideas are similar--perhaps I'm wrong as I have not paid too much
attention to the Perl modules lists. I would probably rather the
name be Persisting as Persisting::Source has a much nicer ring to
it.
I've chosen a rootlevel namespace because I couldn't find an
existing namespace that made more sense to me. I searched quite a
bit, but didn't find one. I'd be more than happy to stick Persist
somewhere in particular if it does make sense to. However, Persist
has an almost proprietary feel to it's API since it is rather
specialized, so a rootlevel seems to make sense anyway--but I'm
still not completely sold on any direction.
I'm working this project primarily as a means of supporting another
(described at http://contentment.sf.net/), so the name isn't really
important to me.
enteredby: HANENKAMP (Andrew Sterling Hanenkamp)
enteredon: Wed Jul 23 05:40:58 2003 GMT
The resulting entry would be:
Persist ampOb Write-once/use-anywhere style persistence. HANENKAMP
Thanks for registering,
--
The PAUSE
PS: The following links are only valid for module list maintainers:
Registration form with editing capabilities:
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=53300000_7c6a3693ea4108d8&SUBMIT_pause99_add_mod_preview=1
Immediate (one click) registration:
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=53300000_7c6a3693ea4108d8&SUBMIT_pause99_add_mod_insertit=1