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