PERL GTM module version 1.26
============================

This module allows a PERL programmer to access the GT.M globals database.
GT.M is a fast and flexible hierarchical database system.

It is assumed that the user has already installed GT.M, set up a database
and has the appropriate environment variables defined to allow GT.M to run.

A hierarchical database (also called an object database) allows data to be
stored at different levels of depth.  It behaves differently than either
of the two common database types; "Relational" and "Flat File".  The most
widely used hierarchical database is the registry in Microsoft Windows.

Instead of a simple key, each database node name is defined as a PERL 
list.  One example could be 
  ["Clients","Auto Dealerships","ACME Auto","Phone Number"]

If you're thinking of objects and object properties, this would be
analagous to:
  clients.auto_dealerships.acme_auto.phone_num

Data can be stored at any levels, and any level can also have sub-levels (also
called children, sub-nodes or child nodes).  Hierarchical databases can be 
treated as a collection of flat files, or a relational database, or a post-
relational or object-relational database with minimal effort.

Your mileage may vary, but hierarchical databases can outperform relational
databases in many cases, especially for certain types of queries.

INSTALLATION

Prior to installation, you probably want to modify the default settings in
GTM.h that govern environment variable settings.  This will allow you to
use Db::GTM without having to define environment variables in advance or
use the environment that GTM uses.  See the "DEFAULT LOCATIONS" section 
below.

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install

  Now you need to copy 'extapi.m' somewhere that GT.M will find it, and
  move the file 'calltab.ci' to /usr/local/gtm/xc/calltab.ci

DEFAULT LOCATIONS 

  The locations that GTM will search for the extapi.m file are defined
  in the 'gtmroutines' environment variable.  There is a default location
  defined in GTM.h (/home/vmacs/rtn-obj and /home/vmacs/rtn-cvs/misc),
  but this is unlikely to be useful to you if you aren't one of my 
  co-workers.  GTM will always look in the current folder for extapi.m,
  and this will take precedence over anything in 'gtmroutines'.

  If you'd prefer a different location for the calltab.ci file, you can
  change the location in GTM.h and recompile, or specify a new location
  in the environment variable 'GTMCI' when using the database.  The
  environment variable always takes precedence over the hard-coded location.

  The default environment variable settings are at the top of the GTM.h
  file, named _GT_ .. _LOC.

DEPENDENCIES

  This module does not requires any other modules.

RECENT CHANGES

1.27  Mon Sep 12 19:15:43 2005
        - Transaction support added 
        - Support for the M locking system
        - Bugfix to using a $db->node as the 2nd argument to copy()
1.21  Mon Apr 4 14:34:02 2005
        - order/first/last/next/prev etc.. return the full name as a
          list when called in list context
        - Get/Order/Children/Query will short-circuit exit when called
          in void context (they won't call-in to GTM at all)

COPYRIGHT AND LICENCE

Copyright (C) 2005 -- Regents of the University of California

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself. 
