NoSQL (RDBMS)
Encyclopedia
NoSQL is a shell
Shell (computing)
A shell is a piece of software that provides an interface for users of an operating system which provides access to the services of a kernel. However, the term is also applied very loosely to applications and may include any software that is "built around" a particular component, such as web...

-based relational database management system
Relational database management system
A relational database management system is a database management system that is based on the relational model as introduced by E. F. Codd. Most popular databases currently in use are based on the relational database model....

 that runs under Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

-like operating systems, or others with compatibility layers (e.g., Cygwin under Windows). Its name merely reflects the fact that it does not express its queries using Structured Query Language; the NoSQL RDBMS is distinct from the circa-2009 general concept of NoSQL databases
Nosql
In computing, NoSQL is a broad class of database management systems that differ from the classic model of the relational database management system in some significant ways. These data stores may not require fixed table schemas, usually avoid join operations, and typically scale horizontally...

, which are typically non-relational, unlike the NoSQL RDBMS.

Construction

NoSQL uses the operator-stream paradigm, where a number of "operators" perform a unique function on the passed data. The stream used is supplied by the UNIX input/output redirection system so that over the pipe
Pipeline (Unix)
In Unix-like computer operating systems , a pipeline is the original software pipeline: a set of processes chained by their standard streams, so that the output of each process feeds directly as input to the next one. Each connection is implemented by an anonymous pipe...

 system, the result of the calculation can be passed to other operators. As UNIX pipes run in memory, it is a very efficient way of implementation.

NoSQL, with development led by Carlo Strozzi, is the latest and perhaps the most active in a line of implementations of the stream-operator database design originally described by Evan Shaffer, Rod Manis, and Robert Jorgensen in a 1991 Unix Review article and an associated paper. Other implementations include the Perl-based rdb, a commercial version by the original authors called /rdb, and Starbase, a version with added astronomical data operators by John Roll of Harvard and the Smithsonian Astrophysical Observatory. Because of its strengths in dealing with pipe data, most implementations are a mixture of awk and other programming languages, usually C or Perl.

The concept was originally described in a 1991 Unix Review article, and later expanded in a paper (see reference above), as well as in the book, "Unix Relational Database Management". NoSQL (along with other similar stream-operator databases) is well-suited to a number of fast, analytical database tasks, and has the significant advantage of keeping the tables in ASCII text form, allowing many powerful text processing tools to be used as an adjunct to the database functions themselves. Popular tools for use with NoSQL include Python, Perl, awk, and shell scripts using the ubiquitous Unix text processing tools (cut, paste, grep, sort, uniq, etc.)

NoSQL is written mostly in interpretive languages, slowing actual process execution, but its ability to use ordinary pipes and filesystems means that it can be extremely fast for many applications when using RAM filesystems or heavily leveraging pipes, which are mostly memory-based in many implementations.

Philosophy

The reasons for avoiding SQL are as follows:
  1. Complexity: Most commercial database products are often too costly for minor projects, and free databases are too complex. They also do not have the shell-level approach that NoSQL has.
  2. Portability:
    1. Data: The data from NoSQL can be easily ported to other types of machines, like Macintosh
      Macintosh
      The Macintosh , or Mac, is a series of several lines of personal computers designed, developed, and marketed by Apple Inc. The first Macintosh was introduced by Apple's then-chairman Steve Jobs on January 24, 1984; it was the first commercially successful personal computer to feature a mouse and a...

      es or Windows computers, since tables exist as simple ASCII text and can be easily read from or redirected to files at any point in processing.
    2. Software: NoSQL can run on any UNIX machine that has the Perl
      Perl
      Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

       and the AWK programming languages installed, and perhaps even on the Cygwin
      Cygwin
      Cygwin is a Unix-like environment and command-line interface for Microsoft Windows. Cygwin provides native integration of Windows-based applications, data, and other system resources with applications, software tools, and data of the Unix-like environment...

       UNIX-like environment for Microsoft Windows
      Microsoft Windows
      Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

      .
  3. Unlimited: NoSQL has no arbitrary limits, like a data field size, column number, of file size limit, and can principally work where other products cannot. (The number of columns in a table may actually be limited to 32,768 by some implementations of the AWK1 programming language).
  4. Usability: With its straight forward and logical concept, NoSQL can easily be used by non-computer people. For instance, rows of data are selected with the 'row' operator, columns with the 'column' operator.


In contrast to other RDBMS, NoSQL has the full power of UNIX during application development and usage. Its user interface uses the UNIX shell. So, it is not necessary to learn a set of new commands to administer the database. From the view of NoSQL, the database is not more than a set of files similar to any other user file. No scripting or other type of database language is used besides the UNIX shell. This shell-nature encourages casual use of this database, which makes its use familiar, resulting in formal use. In other words, NoSQL is a set of shell routines that access normal files of the operating system.

Examples

To retrieve information about a particular employee, a query in SQL might look like this:

select e.*, a.*, mgr.* from EMPLOYEES e, ADDRESSES a, MANAGERS mgr
WHERE .....

Since a document-oriented NoSQL database often retrieves a pre-connected document representing the entire employee, the query might look like this:

$e = doc("/employee/emp_1234")
return $e/address/zip

The stream-operator paradigm differs from conventional SQL, but since the NoSQL DB is relational, it is possible to map NoSQL operators to their SQL equivalents:
SQL NoSQL or /rdb
select col1 col2 from filename column col1 col2 < filename
where column - expression row ’column

expression’

compute column = expression compute ’column = expression’
group by subtotal
having row
order by column sorttable column
unique uniq
count wc -l
outer join jointable -al
update delete, replace
nesting pipes

External links
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK