 SQL database system |
Manual page for shsql(overview)
SHSQL is a standalone SQL database that stores data in
ascii text files. It has a small memory footprint and code size and can be embedded
directly into applications-- there is no server process.
SHSQL is a pared-down SQL implementation but retains useful features
such as timeout record locking and search engine comparison operators.
A shsql database can be updated
via SQL, or by editing data files with a text editor. Applications link to the supplied
"C" language API. There is also a command-line SQL utility. SHSQL is distributed with the
quisp server pages system, but may be used
independently if desired.
What problem(s) does SHSQL attempt to address?
Existing DBMS systems are complex and require significant expertise (and systems privileges) to
install, administer, and upgrade. These client-server systems require management of a persistent
server process, connections, and access permissions. We feel that for some applications a
simpler model would be useful, where there are more flexible opportunities for data update
and data organization (eg. hierarchical sets of tables or tables residing anywhere in the unix file
system), and where copying, cloning, or moving databases is simplified.
What makes SHSQL special?
embed directly into applications - no server process or connections to manage
no access permissions enforcement - this is left to the application
easy to install... no root privilege is generally needed to install or deploy applications
stores data in whitespace-delimited ascii text files which you can modify in a text editor
you can have your own software generate data, then use shsql to build indexes and do indexed retrievals
small code size and memory footprint
text comparison operator for intuitive search engines
ISAM indexes
convenience features such as automatic serial number generation
timeout record locking
sets of tables can be organized hierarchically
read-only tables can reside anywhere in the unix file system
shell commands can be used as "virtual temporary tables"
"list-centric" features-- small-scale vectorization can be handled by comma-delimited lists
which can simplify schema and code
Who should consider SHSQL?
Developers of small- or medium- scale systems on unix/linux platforms who:
don't have a DBMS such as MySQL available, or choose not to use it
want to embed a DBMS directly into their application
wish to deploy or deliver dependency-free applications
can take advantage of SHSQL's unique/unusual features
want the convenience of being able to modify data tables using a text editor
want to manage data without having to always go through SQL
for data manipulation tasks, prefer working with unix files and directories, rather than always SQL
Who should avoid SHSQL?
developers whose needs are best met by the functionality, performance, and complexity
provided by a fullscale DBMS such as MySQL
developers who require commit/rollback transaction control, triggers, stored procedures, BLOB support
projects where dynamically updated indexes are required
situations where adherance to existing IT standards is mandatory, or where
creativity, experimentation, and trying new things are prohibited
Prerequisistes
SQL basics
Unix / linux concepts such as file permissions modes, soft links, and setuid executables
|

Copyright Steve Grubb
|