Solid Fluid System Solutions  
Home Software About Hardware Firmware

Document Icon VConsole (Library)
Document Icon Crypto
Document Icon Archive
Document Icon Container
Document Icon Pipe
Document Icon Compress
Document Icon Math
Document Icon Vector
Document Icon DateTime
Document Icon List/Array
Document Icon HashIntegerFloat
Current Document Icon Database
Document Icon Thread
Document Icon String
Document Icon Machine
Document Icon Regex
Document Icon SGMLParse
Document Icon HTTPHeader
Document Icon Comm
Document Icon Collab
Document Icon HierAgent
Document Icon Resource
Document Icon Colour
Document Icon Image

Database

The database group builds on the Hash/Integer/Float group and allows VTables of two dimensional arrays to be built.

VTable takes the form of a record list where each record has a cell for each table column. Individual cells may be of any type, and columns may be accessed by index or name. Columns may optionally be of "lookup type" which makes retrieval of record sets fast.

Retrieval of recordsets for a given query typically does not retrieve actual records, but merely record indexes. By using the lookup objects (hash et al.) and particularly the atom value type, in conjunction with their group operator retrieval scheme, it is possible to build any complex query. Normally this process requires an atom list of record indexes, where the atoms are refined for each part of the subquery. Once all subquery parts have been executed, remaining atom keys represent the record indces of the queried recordset.

VDatabase has support for containing multiple named VTables, which may be referenced by name or index. The VDatabase object includes the capability for reference counting by record linking. This helps to avoid the deletion of records that are referenced by cells, in the same or other tables of the database.

The database is fully serial, but unlike some of the big formal databases (Oracle et al.) it operates on the basis of a single database file (like MS Access).

This database was never intended to be a competitor to those of the main providers. It does not implement a query language like SQL. It has only a C++ interface. In mitigation that interface has many many overloads to allow any combination of stored types and queries imaginable. The database functionality is a key facilitator for complex data storage and retrieval. Particularly it avoids versioning issues that can be a specific problem with serialised file formats.

Typically one might implement a database as an executable module (.dll) with a simple _cdecl API. The module is capable of initialising the database, and providing meaningful accessor functions. This is perhaps analogous to a database with stored procedures.

Copyright © Solid Fluid 2007-2022
Last modified: SolFlu  Mon, 08 Jun 2009 01:42:35 GMT