From owner-freebsd-ports Sat Oct 23 5: 8: 8 1999 Delivered-To: freebsd-ports@freebsd.org Received: from gemini.smart.net (gemini.smart.net [207.176.80.109]) by hub.freebsd.org (Postfix) with ESMTP id 3B51914C1D for ; Sat, 23 Oct 1999 05:07:46 -0700 (PDT) (envelope-from dcmarti1@smart.net) Received: from smart.net (IDENT:marti@marti.smart.net [205.252.32.98]) by gemini.smart.net (8.9.1/8.9.1) with ESMTP id IAA21985 for ; Sat, 23 Oct 1999 08:07:42 -0400 Message-ID: <3811A8B3.DCE57BD7@smart.net> Date: Sat, 23 Oct 1999 08:23:15 -0400 From: Marti X-Mailer: Mozilla 4.51 [en] (X11; I; Linux 2.2.5-15 i686) X-Accept-Language: en MIME-Version: 1.0 To: ports@freeBSD.ORG Subject: NoSQL Content-Type: multipart/mixed; boundary="------------6F3B884250EA85116152799B" Sender: owner-freebsd-ports@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org This is a multi-part message in MIME format. --------------6F3B884250EA85116152799B Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit Came across this site through an article in the on-line version of Linux Journal. Thought you may want to post this under databases.
http://www.mi.linux.it/People/carlos/nosql/
  --------------6F3B884250EA85116152799B Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Content-Base: "http://www.mi.linux.it/People/carlos/n osql/" Content-Location: "http://www.mi.linux.it/People/carlos/n osql/" NoSQL

NoSQL

[NoSQL]

A Relational Database Management System

Carlo Strozzi

Italian Linux Society.

September 20th, 1999


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 UNIX Operating System. It uses the Operator/Stream DBMS 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 suplied 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".

Table of Contents


Copyright

NoSQL RDBMS, Copyright (C) 1998-1999 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.

NoSQL comes with ABSOLUTELY NO WARRANTY; for details refer to the GNU General Public License.


What is NoSQL

NoSQL, which I personally like to pronounce noseequel, 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 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 W. Hobbs, were:

Chuck Bush

Don Emerson

Judy Lender

Roy Gates Rae Starr

People who helped with turning RDB into NoSQL:

Vincenzo (Vicky) Belloli

David Frey

Giuseppe Paterṇ

Maurizio (Masar) Sartori

The NoSQL.png logo has been kindly provided by Kyle Hart.

As its name implies, NoSQL is not an SQL database, but rather a shell-level tool. The rationale behind it is well explained in the accompanying paper "The UNIX Shell As a Fourth Generation Language", available in both Postscript and ASCII format.

The data is contained in regular UNIX ASCII files, and so can be manipulated by regular UNIX utilities, e.g. ls, wc, mv, cp, cat, more, less, editors like 'vi', head, RCS, etc.

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", Reference #2.

To use NoSQL, it is assumed that the user has at least a minimum knowledge of the UNIX Operating System, including knowledge of Input/Outout redirection (e.g., STDIN, STDOUT, pipes).

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


Why NoSQL

A good question one could ask is "With all the relational database management systems available today, why do we need another one ?". The main reasons are:

  1. Several times I have found myself writing applications that needed to rely upon simple database management tasks. Most commercial database products are often too costly and too feature-packed to encourage casual use. There is also plenty of good freeware databases around, but they too tend to provide far more than I need most of the times, and they too lack the shell-level approach of NoSQL. Admittedly, having been written mostly with interpretive languages (Shell, Perl, AWK), NoSQL is not the fastest DBMS of all, at least not always (a lot depends on the application).
  2. NoSQL is easy to use by non-computer people. The concept is straight forward and logical. To select rows of data, the 'row' operator is used; to select columns of data, the 'column' operator is used.
  3. The data is highly portable to and from other types of machines, like Macintoshes or MSDOS computers.
  4. The system should run on any UNIX machine (that has the PERL and the AWK Programming Languages installed).
  5. NoSQL essentially has no arbitrary limits, and can work where other products can't. For example there is no limit on data field size, the number of columns, or file size (the number of columns in a table may actually be limited to 32.768 by some implementations of the AWK interpreter, including mawk I think).

Again, the key feature of NoSQL (and other similar packages mentioned in this manual), is its close integration with UNIX. Unlike other fourth generation systems, NoSQL is an extension of the UNIX environment, making available the full power of UNIX during application development and usage. This level of integration removes the need to learn yet another set of commands to use and administer the database system. A database is just a file, and can be maintained like all other files that the user owns or has access to. Because NoSQL commands are executable programs, the UNIX shell is inherited as the primary command language of the database; no other proprietary database scripting language, to my knowledge, is as powerful and flexible as the UNIX shell. The shell-level nature of NoSQL encourages casual use of the system, and succesful casual use leads to familiarity and succesful formal use. This concept is much more thoroughly explained in the aforementioned paper "The UNIX Shell As a Fourth Generation Language", that shows why the UNIX shell is an excellent tool for scripting database access.


How to get NoSQL

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


Documentation

The latest version of the NoSQL online documentation can be found here:


Support

There is a mailing list for discussions related to NoSQL. The address is noseequel@mi.linux.it. To subscribe simply send a message to minimalist@mi.linux.it with the word "subscribe noseequel" (without the quotes) in the subject of the message. The mailing list software is Minimalist, a MINImalist MAiling LIST Manager.


Contributions

If you want to help with NoSQL by contributing your own code you are most welcome, but please have a look at the Notes for contributors page first.


References

  1. "Unix Review" magazine, March, 1991, page 24, "A 4GL Language".
  2. "UNIX Relational Database Management", R. Manis, E. Schaffer, R. Jorgensen, 1988, Prentice Hall.
  3. "The AWK Programming Language", Alfred V. Aho, Brian W. Kernighan and Peter J. Weinberger, 1988, Addison-Wesley.
  4. "Programming PERL", L. Wall, R. Schwartz, 1991, O'Reilly & Associates.
  5. "UNIX Shell Programming", L.J. Arthur, T. Burns, 1997, John Wiley & Sons.
  6. See also the online paper Consultix Shell Quoting Guidelines.
--------------6F3B884250EA85116152799B-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message