Logo

GRAS: GRAS3

GRAS3


GRAS3 is the latest version of GRAS. It is a set of libraries and programs that together implement a structure-oriented client/server database management system. In general, structure-oriented DBMS offer a richer set of data types and constructors than e.g. relational DBMS. The data model of GRAS is the directed, attributed, node and edge labelled graph. GRAS3 is not intended as a stand-alone system, but must be accessed via its application programming interface.

GRAS3 features include
  • nested transactions implementing the ACID paradigm
  • multi-user capable client/server architecture (page-server)
  • sophisticated undo/redo mechanism
  • support for versioning
  • graph schemata with inheritance and derived attributes
  • extensible event-trigger mechanism
  • The system is distributed as source code release.

System Requirements


GRAS3 is entirely written in Modula-3 using the Critical Mass cm3 compiler under Solaris 2. It is also tested on Linux with the SRC 3.6 compiler and kernel 2.0.30, but I guess any kernel above 2.0 should work. Porting to different unix platforms shouldn't be to hard.

The current release is a source code distribution, so you will need a Modula-3 compiler to install it. You would need one to access GRAS3 anyway, because all its interfaces are Modula-3 interfaces. To learn more about Modula-3, have a look at http://www.m3.org or http://www.research.digital.com/SRC/modula-3/html/home.html. You can also find links to public domain compilers there. We are working on a C interface to the rgras package included in this release, which will be usable without a main program written in Modula-3, so that we might come up with binary distributions for GRAS in the future.

History


GRAS' development started in the mid 80's in Pascal on IBM PCs. The system evolved over the years with more and more functionality being added (undo/redo, versioning, schema handling, client/server distribution). The implementation language changed from Pascal to Modula-2 and finally to Modula-3 and C. The result of this line of development is called RGRAS.

GRAS3 is closely related to RGRAS, sharing many features and the coarse architecture. However, GRAS3 was implemented new from scratch in Modula-3 to clean-up the code and experiment with new features. It also follows a different approach to distribution (page-server instead of a query-server). It allows graphs with more nodes than rgras and has better multi-user support.

Future


What is to come in future GRAS3 releases? As short term goals, we want to fully implement access to private data for clients (local parameter for graphs) and come up with a fully functional C interface, so that the system will be accessible from C without the need for a Modula-3 compiler. In the long run, the data model of GRAS will change to hierarchical graphs, i.e. graphs containing other graphs. This will affect the graph schema implementation, but the current implementation will still coexist in a separate subsystem.

Contact


Your problems, suggestions, and remarks are welcome. Please send e-mail to roland@i3.informatik.rwth-aachen.de. If you want to improve the example programs, or even write new applications for GRAS, I would be glad to include them in the distribution.

Copyright


GRAS, its demo applications, and its utilities are free software; you can redistribute and/or modify them under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.

You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Created by: system last modification: Wednesday 01 of December, 2004 [10:37:49 UTC] by Sven