NoSQL

A Relational Database Management System

NoSQL is a fast, portable, relational database management system without arbitrary limits, (other than memory and processor speed) that runs under, and interacts with, the UNIX1 Operating System. It uses the "Operator-Stream Paradigm" described in "Unix Review", March, 1991, page 24, entitled "A 4GL Language". There are a number of "operators" that each perform a unique function on the data. The "stream" is supplied by the UNIX Input/Output redirection mechanism. Therefore each operator processes some data and then passes it along to the next operator via the UNIX pipe function. This is very efficient as UNIX pipes are implemented in memory. NoSQL is compliant with the "Relational Model".

What is NoSQL

NoSQL, which I personally like to pronounce as noseequel2, is a derivative of the RDB database system. The latter was developed at RAND Organization by Walter W. Hobbs. The few Perl scripts included with NoSQL are still very close to the original RDB ones, so a good share of the credit for them goes to the original author.

Other major contributors to the original RDB system, besides Walter Hobbs, are:

As its name implies, NoSQL is not an SQL database but rather a shell-level tool, as explained in Philosophy of NoSQL. NoSQL data is contained in regular UNIX ASCII files, and so can be manipulated by regular UNIX utilities, e.g. ls, wc, mv, cp, cat, head, more, less, editors like 'vi,' etc., as well as by powerful versioning systems, such as RCS and CVS.

The form of each file of data is that of a relation, or table, with rows and columns of information.

To extract information, a file of data is fed to one or more "operators" via the UNIX Input/Output redirection mechanism.

There are also programs to generate, modify, and validate the data. A more thorough discussion of why this type of relational database structure makes sense is found in the book, "UNIX Relational Database Management", in the "References" section below.

It is assumed that the reader has at least a basic familiarity with the UNIX Operating System, including knowledge of Input/Output redirection (e.g., STDIN, STDOUT, pipes).

NoSQL tends to be biased in favor of Linux. This means that, wherever it matters, NoSQL makes use of the GNU version of the various UNIX commands, as those are the ones normally found on Linux. NoSQL is Free Software, released under the terms of the GNU General Public License. As such, it fully qualifies also as Open Source Software.

What NoSQL is not

NoSQL has been around since 1998 and it has nothing to do with the newborn NoSQL Movement, which has been receiving much hype lately. While the former is a well-defined software package, is a relational database to all effects and just it intentionally does not use SQL as a query language, the newcomer is mostly a concept (and by no means a novel one either), which departs from the relational model altogether and it should therefore have been called more appropriately "NoREL", or something to that effect, since its not being SQL-based is just an obvious consequence of not being relational, and not the other way around.

How to get NoSQL

NoSQL can be freely downloaded from this link. Make sure you get also any patches to the base code, for the version that you download.

Starting from version 4.0.14 the NoSQL development repository was moved from CVS to Subversion. Authorized users can download the latest development code from my Subversion server:

Versions of NoSQL from 4.1.0 to 4.1.6 depend on the Shell-Ware Utilities (SWU) package, which can be downloaded from http://www.strozzi.it/shared/swu/ . Since only a small portion of SWU is actually required for NoSQL to work, starting from version 4.1.7 I have removed such dependency by including a minimal, stripped-down version of SWU with NoSQL itself. If you have already installed the full-blown SWU, NoSQL will use that one instead.

Support

There is a mailing list for discussions related to NoSQL. The address is noseequel@strozzi.it. To subscribe simply send a message to noseequel-request@strozzi.it with the phrase " subscribe noseequel" (without the quotes) in the subject of the message.

Please send bug reports (fixes are most welcome) to the same list noseequel@strozzi.it. Always include as much information as possible, especially the content of file nosql.version, which is created in the NoSQL installation directory during install. By "bug reports" I mean not just errors in the code, but also grammatical mistakes, typos, and bad English constructions in the documentation, as English isn't my native language.

Contributions

If you want to help with NoSQL by contributing your own code you are most welcome, but please read the Notes for Contributors first.

Copyright

NoSQL RDBMS, Copyright (C) 1998,2010 Carlo Strozzi. Part of NoSQL code comes from RDB, a similar package written by W.Hobbs, an has been included in NoSQL with permission from the author.

1UNIX is a registered trademark of The Open Group. All brand names, product names, or trademarks mentioned in this publication belong to their respective owners.

2An alternative pronunciation is no-squeal, proposed by Cosmo Freund Lee, who writes: "I agree with the philosophy followed by NoSQL. I don't like having to loose the power of Unix and being cornered into the limitations of SQL. I propose an alternate pronunciation. I pronounce SQL as squeal, because when I'm forced into the confines of this limited, single-purpose language, I want to squeal like a tied-up pig!"