Fwd: Module submission DBIx::Portable
Darren Duncan
darren at DarrenDuncan.net
Mon Jan 6 01:01:59 CST 2003
>Delivered-To: cpanmail-duncand at cpan.org
>Date: Mon, 6 Jan 2003 07:56:49 +0100
>Reply-To: modules at perl.org
>Subject: Module submission DBIx::Portable
>From: "Perl Authors Upload Server" <upload at pause.x.perl.org>
>To: modules at perl.org, duncand at cpan.org
>X-SMTPD: qpsmtpd/0.20, http://develooper.com/code/qpsmtpd/
>X-Spam-Status: No, hits=0.8 required=5.0
> tests=SPAM_PHRASE_02_03
> version=2.43
>X-Spam-Level:
>
>
>The following module was proposed for inclusion in the Module List:
>
> modid: DBIx::Portable
> DSLIP: cdpOp
> description: Framework for RDBMS-generic apps and schemas
> userid: DUNCAND (Darren Duncan)
> chapterid: 7 (Database_Interfaces)
> communities:
> victoria-pm at pm.org - more later when demo is up
>
> similar:
> more than fit here; eg: DBI, SQL::Schema, DBIx::AnyDBD,
> SQL::Builder, DBIx::Browse, DBIx::Abstract, DBIx::SearchBuilder, ...
>
> rationale:
>
> I will make a detailed list how how each of the above and other
> modules are different from or like mine in the near future.
> Meanwhile, here is a general summary, from my module's Description
> POD (hopefully not truncated by form): -----------------------------
>
> DESCRIPTION
>
> The DBIx::Portable framework is intended to support complex (or
> simple) database-using applications that are easily portable across
> databases because common product-specific details are abstracted
> away. These include the RDBMS product and vendor name, what dialect
> of SQL its scripting or query interface uses, whether the product
> uses SQL at all or some other method of querying, how query results
> are returned, what features the RDBMS supports, how to manage
> connections, how to manage schema, how to manage stored procedures,
> and perhaps how to manage users. The main thing that this framework
> will not be doing in the forseeable future is managing the
> installation and configuration of the RDBMS itself, which may be on
> the same machine or a different one.
>
> There are two main types of functionality that the DBIx::Portable
> framework is designed to implement; this functionality may be better
> described in different groupings.
>
> The first functionality type is the management (creation,
> modification, deletion) of the schema in a database, including:
> tables, keys, constraints, relations, sequences, views, stored
> procedures, triggers, and users. This type of functionality
> typically is used infrequently and sets things up for the main
> functionality of your database-using application(s). In some cases,
> typically with single-user desktop applications, the application may
> install its own schema, and/or create new database files, when it
> starts up or upon the user's prompting; this can be analogous to the
> result of a "New..." (or "Save As...") command in a desktop
> financial management or file archiving application; the application
> would then carry on to use the schema as its personal working space.
> In other cases, typically with multiple-user client-server
> applications, one "Installer" or "Manager" type application or
> process with exclusive access will be run once to create the schema,
> and then a separate application or process will be run to make use
> of it as a shared working space.
>
> The second functionality type is the management (creation,
> modification, deletion) of the data in a database, including such
> operations as: direct selects from single or multiple tables or
> views, direct inserts or updates or deletes of records, calling
> stored procedures, using sequences, managing temporary tables,
> managing transactions, managing data integrity. This type of
> functionality typically is used frequently and comprises the main
> functionality of your database-using application(s). In some cases,
> typically with public-accessible websites or services, all or most
> users will just be viewing data and not changing anything; everyone
> would use the same database user and they would not be prompted for
> passwords or other security credentials. In other cases, typically
> with private or restricted-access websites or services, all or most
> users will also be changing data; everyone would have their own real
> or application-simulated database user, whom they log in as with a
> password or other credentials; as the application implements, these
> users can have different activity privileges, and their actions can
> be audited.
>
> The DBIx::Portable framework can be considered a low-level service
> because it allows a fine level of granularity or detail for the
> commands you can make of it and the results you get back; you get a
> detailed level of control. But it is not low-level in the way that
> you would be entering any raw SQL, or even small fragments of raw
> SQL; that is expressly avoided because it would expose
> implementation details that aren't true on all databases. Rather,
> this framework provides the means for you to specify in an
> RDBMS-generic fashion exactly what it is you want to happen, and
> your request is mapped to native or emulated functionality for the
> actual RDBMS that is being used, to do the work. The implementation
> or mapping is different for each RDBMS being abstracted away, and
> makes maximum use of that database's built-in functionality.
> Thereby, the DBIx::Portable framework achieves the greatest
> performance possible while still being 100% RDBMS-generic.
>
> This differs from other database abstraction modules or frameworks
> that I am aware of on CPAN, since the others tend to either work
> towards the lowest-common-denominator database while emulating more
> complex functionality, which is very slow, or more often they
> provide a much more limited number of abstracted functions and
> expect you to do things manually (which is specific to single
> databases or non-portable) with any other functionality you need.
> With many modules, even the abstracted functions tend to accept sql
> fragments as part of their input, which in the broadest sense makes
> those non-portable as well. With my framework I am attempting the
> "holy grail" of maximum portability with maximum features and
> maximum speed, which to my knowledge none of the existing solutions
> on CPAN are doing, or would be able to do short of a full rewrite.
> This is largely why I am starting a new module framework rather than
> trying to help patch an existing solution; I believe a rewrite is
> needed.
>
> enteredby: DUNCAND (Darren Duncan)
> enteredon: Mon Jan 6 06:56:48 2003 GMT
>
>The resulting entry would be:
>
>DBIx::
>::Portable cdpOp Framework for RDBMS-generic apps and schemas DUNCAND
>
>
>Thanks for registering,
>The Pause Team
>
>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=34100000_a06412c7cf6a82fc&SUBMIT_pause99_add_mod_preview=1
>Immediate (one click) registration:
> https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=34100000_a06412c7cf6a82fc&SUBMIT_pause99_add_mod_insertit=1
More information about the Victoria-pm
mailing list