A Universal Database Definition


Another new CPAN module today, Contextual::Return::Wrapper. If nothing else, this initiative represents an attempt to formalize my code development.
Contextual::Return::Wrapper is the result of a more topical initiative, NoSQL::PL2SQL::DBIxClass.  This new module is basically complete, tested, and ready to go.  Probably in a week or so.
Alternatively named NoSQL::PL2SQL::DBI::DBIxClass because this new package is modelled on the NoSQL::PL2SQL::DBI interface.  Both DBIxClass.pm and DBI.pm create an abstract database interface.  So DBIxClass is both an implementation and replacement of the original NoSQL::PL2SQL::DBI.
Self-consciously, I'm aware that DBI may have sunk significant resources to re-invent the wheel.  Yes and no.  At the outset, it wasn't obvious that the constraints of DBIx::Class wouldn't compromise the design objectives of NoSQL::PL2SQL. In fact, NoSQL::PL2SQL::DBI (and consequently DBIxClass) is a bit more abstract than DBIx::Class.  Undoubtedly, some problems were avoided as a result of this extra effort.
Greetings from Austin, TX, where I just attended my first YAPC Perl conference.  I chickened out on an opportunity to present a lightening talk, but response was very encouraging, and had some active inquiries about Google::OAuth.
In particular, I'd like to thank JT Smith who offered free consulting to anyone who approached him with a crazy idea/opportunity.  I would interprete his response as intrigued and encouraging.  Among his recommen-dations is to write an application that demonstrates NoSQL::PL2SQL's functionality and bootstraps an installation base.  Hello Google::OAuth.
Chatter at the conference encouraged me to write a couple extensions.  Although backlogged on many fronts, I hope to push Twitter::OAuth and NoSQL::PL2SQL::DBI::PostGreSQL out in the very near future.
A more pressing obligation is a presentation for the Washtenaw Linux Users Group and Ann Arbor Perlmongers in a couple weeks.  The significance is that the presentation kicks off the sort of low-level marketing campaign that JT Smith would encourage.
Released Google::OAuth which implements NoSQL::PL2SQL. Data is saved as JSON::from_json() output, which relies heavily on scalar reference constants.
Performed some clean-ups and released version 1.21.
PL2SQL 1.20 Released.
NoSQL::Simple released as version 0.21.
Currently, NoSQL::PL2SQL does not run on Perl v5.10 or v5.12. This Perlmonks posting describes my progress to date.
Most other interfaces save JSON data in a single record.  One feature, in particular, that distinguishes PL2SQL: Updates are partially written to the database.  For example, if a single property or value is changed in a very large object, the resulting SQL consists of nothing but the new value.  This feature extends the original philosophy of databases to maintain the data discretely.
If two clients concurrently access an object, and both write partial updates independently, the resulting data would be an indeterminate mess.  Although PL2SQL was originally written to capture HTML posts, support for concurrent access is a fundamental requirement.  Version 1.2 addresses this shortcoming.
Theoretically, the approach is simple: Determine if the object record's state changes during the time between the record read and record write.  And perform a full update when a state change is detected.  The actual code is a bit more complicated, because record updates are performed simultaneously with object destruction.  Happily, this complexity is encapsulated in a new class definition, NoSQL::PL2SQL::Clone.
NoSQL::PL2SQL is updated to 1.14.
NoSQL::PL2SQL::Simple has been updated to 0.20
Primarily, this update adds a feature for one-to-many and many-to-many relationships in NoSQL::PL2SQL::Simple.  The method keyValues() is overloaded to set, add and delete relationships.
Current version of NoSQL::PL2SQL is 1.13. Hopefully, no more revisions for the year.
Additionally, NoSQL::PL2SQL::Simple has been released.  Since I'm no longer receiving CPAN notifications, I'm confident that these applications are ready for development.
Released my third subversion today.  Wish I was getting a little more attention, but enjoying the opportunity to start building apps and thus exposing a few shortcomings and problems.
For a few years, I have supported what may well be the most stripped down contact manager ever written.  It's original purpose was to archive "Contact Us" form submissions.  But now provides the basis of some fairly complicated apps such as the Outdoor Athlete Event Calendar and MDSC Trip Calendar.
I would like to release the framework as NoSQL::PL2SQL::Simple. This is part of a gamble that a package named Simple might get a little more interest- specifically because this module can be used without knowing how to define classes. For the record, though, it's hard to imagine a simpler interface.
At 11:52 today, amidst a chorus of angels, I uploaded NoSQL-PL2SQL-1.00.tar.gz to CPAN. In case anyone is impatient, the package can also be downloaded using the navbar link.
Since my last update, I have been entirely focused on this upload.  Quite a few urgent obligations are waiting in postponement, that now need attention.
With NoSQL::PL2SQL successfully installed, I hope to update the script that handles the comments section here by the end of the day.  Everything on this site has been superceded by the documentation accompanying the package.  Over the next few days, I will start updating this website.
At the first opportunity- maybe several weeks- I hope to publish another module: DBIx::Class::PL2SQL. This module will be a NoSQL::PL2SQL::DBI implementation for DBIx::Class.  DBIx::Class seems to be widely installed, and this module should make it easy to roll out PL2SQL to an even larger installed base.  I am counting on others to write other implementations.
Otherwise, PL2SQL already contains all the features I've envisioned.  Future updates will consist of bug fixes and enhancements requested by a (hopefully) growing user base.  I plan to gradually migrate my own applications to this data mechanism.  On top of that I'm hoping for more opportunities to promote this package.
To be completely successful, PL2SQL needs to be deployed in languages other than Perl.  My ultimate goal has always been a PHP implementation of PL2SQL, even though I'm uncertain how effectively this can be accomplished with PHP's limited OO structure.
In the very long term, if this effort is successful, I hope to move another of my creations, HTML::Pen, to wide distribution.
CPAN has approved NoSQL::PL2SQL. In addition to everything else, I will be delighted to see other entries in the NoSQL root.
The comment functionality of this website is currently not working.  FWIW, this situation reflects the current status.  Development is currently a week behind the point when I launched this website with a prototype version.
Whatever the precise interpretation of the 80-20 rule, it's usually invoked when the unplanned-for starts to overwhelm an undertaking.  I'm getting my @$$ whooped trying to implement the obscure feature of scalar references.
The architecture is based on nodes that are either containers or scalar data.  Scalar references can be either, depending on the context.  In order to implement this feature, many fundamental abstractions have become much more subtle.  In other words, my mind isn't wrapped around the foundations as well as it had been.
Happily CPAN approval comes at the perfect time to help motivate me past this obstacle.
Not as much feedback as I'd like.  But I've received enough to feel comfortable moving forward.
Instead of using the local xml module, I am registering something similar on CPAN, XML::Parser::Nodes, that will include all the functionality required by the PL2SQL module.
I am also going to request DBI::NoSQL from the CPAN maintainers.  If approved this module will be officially renamed and this documentation will be overhauled appropriately.  I hope to release a Beta version within a couple weeks.
CPAN requires a place for sharing comments about a new module.  Please enter any comments below.
I needed about 3 weeks to get a working prototype.  Version 1.00 finally passed all of my tests.
I really would like some peer review as well as thoughts about how to make this module more useful.  Whatever comments or thoughts are shared will be greatly appreciated.
The next obvious step is to build a module for CPAN. I don't have enough experience to feel comfortable moving this prototype to where it can be published.  Can anyone help?
Comments Leave a comment
  • DBI::NoSQL
    Sep 28 2012
    TQIS Jim
    2 Replies
  • Test Harness
    Sep 19 2012
    TQIS Jim
    0 Replies
  • Updates
    Sep 18 2012
    TQIS Jim
    0 Replies
  • This application uses PL2SQL
    Sep 18 2012
    TQIS Jim
    0 Replies