shsql: shsql overview

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

  Markup created by unroff 1.0, `` `` April 28, 2004.