From: Rob Kinyon Date: Mon, 17 Aug 2009 17:08:23 +0000 (-0400) Subject: Added Store.pm X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=603430404622e33e55ce631ffb341e8d60ab2ce0;p=dbsrgits%2Fdbic-future.git Added Store.pm --- diff --git a/lib/DBIx/Class/Manual/Store.pm b/lib/DBIx/Class/Manual/Store.pm new file mode 100644 index 0000000..5d31515 --- /dev/null +++ b/lib/DBIx/Class/Manual/Store.pm @@ -0,0 +1,80 @@ +=head1 NAME + +DBIx::Class::Manual::Storage + +=head1 SYNOPSIS + +This document details how the Data::Store works. + +=head1 EXAMPLES + + Fill me in here + +=head1 OVERVIEW + +Data::Store is an abstraction layer that sits over a physical datastore and +provides a common interface across various physical datastores. + +=head1 DETAILS + +Data::Store abstracts a physical datastore in a Hash of Collection of +Objects (or Hash[Collection[Objects]]). Each Collection[Objects] conforms to a +given minimal specification for each Collection. This specification is defined +as a Collection of Types (or Collection[Types]). + +From the client code perspective, there is one virtual store which provides an +abstraction around the concrete stores which map to physical datastores. + + +=head1 SUPPORTED DATASTORES + +=head2 Relational databases + +Relational databases map extremely well to this abstraction. The schema is the +Hash and each table within it is the Collection. The rows map to the Objects and +the table definition maps to the Collection[Types]. + +=head2 Object databases + +Object databases map extremely well to this abstraction. The schema is the Hash +and each object maps to the Object. The Collection is the group of all objects +that belong to a given class. The class is the Collection[Types], each Type +being an attribute within the class. + +=head2 Document databases + +Document databases, such as CouchDB and Tokyo Cabinet, map relatively well to +this abstraction. The datastore itself is the Hash. Should each document have a +Class (or Table) value provided, then groups of docuemnts that have a given +value for Class act as a Collection[Objects]. Otherwise, the entire schema is +the Collection[Objects]. The Types are whatever types you have chosen to define. + +=head2 KiokuDB + +KiokuDB is being treated separately from OODBs and DocDBs. From the outside, +KiokuDB acts as an OODB and, if it provides an index on the classname, can be +treated as such. Otherwise, it acts as a DocDB and should be treated as such. + +=head2 Perl data structures + +Fill me in here. + +=head1 TODO + +=over 4 + +=item * Add EXAMPLES + +=item * Fill in Perl data structures + +=back + +=head1 AUTHOR(S) + +robkinyon: Rob Kinyon C<< >> + +=head1 LICENSE + +You may distribute this code under the same terms as Perl itself. + +=cut