Recent Pages

Commands at a glance
edittable: trivial tabl ...
indextable: generate ta ...
NoSQL Utilities
Text Formatting Rules
Site SandBox
Change Management
Wiki Editor's How-To
Site Terms of Use
Site Copyright


NoSQL Home
Table of Contents
Wiki Editor's How-To
Text Formatting Rules
Wiki SandBox on Twitter


Google Ads

Please Support NoSQL !


User ID

Campaigns petition banner

Why NoSQL, in the first place ?

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 free 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 DOS computers.
  4. The system should run on any UNIX machine (that has the PERL and the AWK Programming Languages installed). Some users have reported it to work also on the Cygwin UNIX-like environment for Microsoft Windows.
  5. NoSQL essentially has no arbitrary limits and, at least in principle, it 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 AWK1 programming language).

The key feature of NoSQL (and other similar packages mentioned in this manual), is its close integration with UNIX. Real-world problems are typically more complex than the data models provided by many DBMS. Actual applications, and Web-based ones are no exception, are complex puzzles made up of many small pieces, several of which are data-related. 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.

NoSQL was designed with the UNIX shell language as its user interface. This level of integration removes the need to learn yet another set of commands to use and administer the database system. In NoSQL's view a database is just a file (or a set of files), which can be maintained like all other files that the user owns or to which he has access. 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 successful casual use leads to familiarity and successful formal use. This concept is much more thoroughly explained in the paper "The UNIX Shell As a Fourth Generation Language", that shows why the UNIX shell is an excellent tool for scripting database access.

NoSQL certainly cannot be seen as a "Big Name Database." But NoSQL's extreme generality and absence of restrictions make it more convenient and more effective for many everyday data management tasks than supposedly more powerful products.

Strictly speaking, NoSQL isn't a DBMS in any fashionable sense, if by DBMS one means a complex monolithic piece of software that sits on a local or a network socket listening for connections by client programs. By contrast, NoSQL is just a set of shell utilities meant to manipulate ordinary text files and relate them to one another in a database-like structure. As such, NoSQL does not provide any of the features that are usually found in most current RDBMS implementations, such as referential integrity, triggers, stored procedures or anything like that. I guess that NoSQL will look old-fashioned to many, a sort of vintage DBMS of little use, but it is meant to be like that, and that is precisely what I find more attractive about its underlying philosophy.

1 NoSQL has only been tested with mawk(1), which is Mike Brennan's implementation of the AWK programming language, and GNU AWK gawk(1). Making NoSQL work with other AWKs may prove hard, if at all possible.

Trackbacks (2) | New trackback | Comments (2) | Print

This Web Site is Copyright © 2007,2008,2009,2010 Carlo Strozzi, Some Rights Reserved
site map | recent changes | terms of use