Tuesday, July 27, 2010

NoSQL(Not only SQL) 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:
  • Chuck Bush
  • Don Emerson
  • Judy Lender
  • Roy Gates
  • Rae Starr
People who helped with turning RDB into NoSQL:
  • Vincenzo (Vicky) Belloli
  • David Frey
  • Giuseppe Paternò
  • Maurizio (Masar) Sartori
  • Paul Lussier
  • Seth LaForge
  • Micah Stetson
  • Thomas Miller
  • Michael Somos
  • Agustín Ferrin
The NoSQL logo was kindly provided by Kyle Hart.
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 through 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 GNUversion 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 for more than a decade now 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 does intentionally 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.

How to get NoSQL

NoSQL can be freely downloaded from http://www.strozzi.it/shared/nosql/. 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:
svn checkout --username anonymous svn://subversion.strozzi.it/pub/nosql/trunk
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.

No comments:

Post a Comment

Linux Kernel Compilation

 Step 1: Install Required Packages Install additional packages before building a kernel. To do so, run this command: sudo apt-get install gi...