The μDatabase project is constructing a toolkit (based on μC++) for providing highly-concurrent vertical shared-memory. The toolkit allows data structures containing normal language pointers to be built, stored, and subsequently retrieved and modified, directly on secondary storage, which eliminates the need for complex and expensive execution-time conversions of structured data between primary and secondary storage. In this environment, there are no explicit read and write routine calls to access data on disk. All read and write operations are done implicitly by the operating system during execution of a program. When the working set of the data structure can be kept in memory, performance begins to approach that of memory-resident databases. For complex structures, vertical shared-memory offers substantial performance advantages over conventional file access, which is crucial to database applications such as computer-aided design, text management, and geographical information systems.
A uniform view of data also allows the expressive power and the data structuring capabilities of a general purpose programming language, and its tool set, to be used in creating and manipulating data structures stored on secondary storage. For example, data structure libraries can be used to build structures on secondary storage without modification, and debugging and performance tools can be applied directly to data on secondary storage.
Because μDatabase is based on μC++, it is possible to build highly concurrent access to a data structure, such as supporting simultaneous requests to the data. It is also possible to use memory mapping in a novel way to support data striping to achieve parallelism at the I/O level. Basically, the address space in which a data structure exists is partitioned across multiple disks so that access to data in different partitions is performed in parallel. Again, the programmer does nothing explicit to achieve I/O parallelism except to access the data in the partitions in a particular order.