Slides by Kalpesh Kapoor

Object Store

Abstract

ObjectStore is an object-oriented database management system (OODBMS) that provides a tightly integrated language interface to the traditional DBMS features of persistent storage , transaction management (concurrency control and recovery ), distributed data access, and associative queries. ObjectStore was designed to provide a unified programmatic interface to both persistently allocated data ( i.e., data that lives beyond the execution of an application program ) and transiently allocated data ( i.e. data that doesn't survive beyond an application's execution), with object-access speed for persistent data usually equal to that of an in-memory dereference of a pointer to transient data.

Goals

Application Interface

Examples from OBJECTSTORE

	class department
	{
	    os_set<employee **> employees inverse_member employee :: Dept;
	
	    add_employee(emp *e) 
	    {
	        employee->insert(e);
	    }
	
	    int works_here(emp *e)
	    {
	        return employees->contains(e);
	    }
	            
	};

	someFunction()
	{
	    employee *e;
	    department *d;
	    .
	    .
	
	    foreach(e,d->employees)
	    {
		    e->incrementSalary(5);
	    }
	}

	main()
	{
	    database * db;
	    Persistent<db> department * engg_dept;
	
	    db = database :: open("/a/b");
	
	    transaction::begin();
	
	    employee * emp = new (db) employee("Ravi");
	
	    eng_dept->add_employee(emp);
	
	    emp->salary = 1000;
	
	    transaction::commit();
	}

Associative queries

Selections

	    os.Set<emp *> all_emp
	    os.Set<emp *>& overpaid_emp = all_emp[: salary >= 1000 :] ;

Nested selections

	    all_emp[: dept->employees[: name == "Fred" :] :];
	
	    // all emp in Fred's department
	    // or we can say,

	    all_emp->query('employee *', "dept->employees[: name == 'Fred' :]");

Versions

Implementations



Related:

 Object Store Management Architecture

 Fine-Grained Sharing in a Page Server OODBMS

 Index Page