The NoSQL system comprises a set of programs called operators.
Each operator is a separate program module that performs a unique function on the data, usually reading from STDIN and writing the result to STDOUT. By contrast, NoSQL utilities are programs that usually do not read from STDIN not write to STDOUT. An example is the edittable
utility. Operators and utilities are hereafter collectively referred to as programs.
At one time NoSQL used to have extra operators, like body, see, etc. At some point I realized how useless they were, so I dropped them. After all they were just calls to ordinary UNIX utilities. There was really no point in providing special operators just for them, as their function could be done by applying those system commands directly. For instance:
Once again, this shows how powerful the UNIX operating system already is of its own, and how handy it can be for an additional package like NoSQL to be able to tap into this power without having to reinvent the wheel.
Invoking NoSQL operators is straightforward:
program [options] [arguments]
where program is the name of the desired NoSQL program. Make sure the directory containing the NoSQL executables, usually /usr/local/nosql/bin/, is in your PATH.
Most programs take a --help switch that will show the available command line options and arguments and provide some usage notes.
As an alternative to extending your shell PATH you may prefer to use the nosql
command-line wrapper, whereby every NoSQL program can be invoked by typing
nosql program [options] [arguments]
and likewise for a pipeline of NoSQL operators:
nosql operator1 | nosql operator2 | ...
This comes at the price of an extra exec() system call for each operator in the pipeline, an irrelevant penalty when using NoSQL at the command-line, but somewhat more significant if NoSQL is used to back a busy web server or other heavily loaded system. Using the "nosql" shell wrapper instead of adding NoSQL directly to your path may be a necessity if you also need to use other system utilities which names conflict with those of certain NoSQL operators. For instance, column
is both the "historical" name of NoSQL's getcolumn
operator and a standard shell utility found on many UNIX boxes. So, if you need to use both the "column" shell utility and NoSQL's "column" operator you need to decide whether to put NoSQL first in your PATH, and thus running NoSQL's "column" whenever you type "column" at the command-line, or rather put it last in your PATH, thus loosing the ability to call NoSQL's getcolumn
with its historical name of "column". If that's the case, then using the "nosql" shell wrapper may be preferable than placing the NoSQL executables in your PATH. Another property of the "nosql" wrapper is that it allows the use of shorthands for certainly NoSQL programs, such as:
Shorthand | Program |
col | getcolumn |
edit | edittable |
join | jointable |
rmcol | notcolumn |
sort | sorttable |
Such shorthands predates also on the corresponding commands of the orginal Hobbs' RDB system.
Sample use cases for every NoSQL operator will eventually be provided in section Operators.