Added Store.pm
Rob Kinyon [Mon, 17 Aug 2009 17:08:23 +0000 (13:08 -0400)]
lib/DBIx/Class/Manual/Store.pm [new file with mode: 0644]

diff --git a/lib/DBIx/Class/Manual/Store.pm b/lib/DBIx/Class/Manual/Store.pm
new file mode 100644 (file)
index 0000000..5d31515
--- /dev/null
@@ -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<< <rkinyon@cpan.org> >>
+
+=head1 LICENSE
+
+You may distribute this code under the same terms as Perl itself.
+
+=cut