.ig >>
<STYLE TYPE="text/css">
<!--
        A:link{text-decoration:none}
        A:visited{text-decoration:none}
        A:active{text-decoration:none}
        OL,UL,P,BODY,TD,TR,TH,FORM { font-family: arial,helvetica,sans-serif;; font-size:small; color: #333333; }

        H1 { font-size: x-large; font-family: arial,helvetica,sans-serif; }
        H2 { font-size: large; font-family: arial,helvetica,sans-serif; }
        H3 { font-size: medium; font-family: arial,helvetica,sans-serif; }
        H4 { font-size: small; font-family: arial,helvetica,sans-serif; }
-->
</STYLE>
<title>shsql: shsql overview</title>
<body bgcolor=99cc99 vlink=0000FF>
<br>
<br>
<center>
<table cellpadding=2 bgcolor=FFFFFF width=550 ><tr>
<td align=right><a href="shsql_home.html">
<img src="img/shsql.gif" border=0><br><small>SQL database system</a> &nbsp; </td></tr>
<td>
.>>

.TH shsql overview TDH "28-APR-2004   TDH scg@jax.org" 

.ig >>


<font size=+2><b>SHSQL</b></font> 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
<a href="../../qman/html/quisp_home.html">quisp</a> server pages system, but may be used 
independently if desired.

<br><br>

<h3>What problem(s) does SHSQL attempt to address?</h3>
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.


<br><br>
<h3>What makes SHSQL special?</h3>
<li> embed directly into applications - no server process or connections to manage
<li> no access permissions enforcement - this is left to the application 
<li> easy to install... no root privilege is generally needed to install or deploy applications
<li> stores data in whitespace-delimited ascii text files which you can modify in a text editor 
<li> you can have your own software generate data, then use shsql to build indexes and do indexed retrievals
<li> small code size and memory footprint
<li> text comparison operator for intuitive search engines
<li> ISAM indexes
<li> convenience features such as automatic serial number generation
<li> timeout record locking
<li> sets of tables can be organized hierarchically
<li> read-only tables can reside anywhere in the unix file system
<li> shell commands can be used as "virtual temporary tables"
<li> "list-centric" features-- small-scale vectorization can be handled by <a href="commalist.html">comma-delimited lists</a>
which can simplify schema and code



<br><br> 
<h3>Who should consider SHSQL?</h3>
Developers of small- or medium- scale systems on unix/linux platforms who:
<li> don't have a DBMS such as MySQL available, or choose not to use it
<li> want to embed a DBMS directly into their application
<li> wish to deploy or deliver dependency-free applications
<li> can take advantage of SHSQL's unique/unusual features
<li> want the convenience of being able to modify data tables using a text editor
<li> want to manage data without having to always go through SQL 
<li> for data manipulation tasks, prefer working with unix files and directories, rather than always SQL

<br><br>
<h3>Who should avoid SHSQL?</h3>
<li> developers whose needs are best met by the functionality, performance, and complexity
provided by a fullscale DBMS such as MySQL
<li> developers who require commit/rollback transaction control, triggers, stored procedures, BLOB support
<li> projects where dynamically updated indexes are required
<li> situations where adherance to existing IT standards is mandatory, or where 
  creativity, experimentation, and trying new things are prohibited



<br><br>
<h3>Prerequisistes</h3>
<li> SQL basics
<li> Unix / linux concepts such as file permissions modes, soft links, and setuid executables

.>>

.ig >>
<br>
<br>
</td></tr>
<td align=right>
<a href="shsql_home.html">
<img src="img/shsql.gif" border=0></a><br>
<a href="Copyright.html">Copyright Steve Grubb</a> &nbsp;
</td></tr>
</table>
.>>
