NoSQL: a non-SQL RDBMS
Limits of NoSQL
The following are know limits and restrictions of NoSQL.
There must not be any ASCII TAB characters in the data. This is the primary limit because the ASCII TAB character is the field delimiter in tables. Neither there can be octal ``\001'' characters at the beginning of rows other than the table header. The following names are reserved to the AWK language, and should not be used to indicate column names:
BEGIN, END, break, continue, else, exit, exp, for, getline, if, in, index, int, length, log, next, print, printf, split, sprintf, sqrt, substr, while and possibly others, depending on the implementation of your AWK (i.e., mawk, gawk, etc.). Refer to the man page and the documentation of your AWK interpeter.
Horizontal TABs and newlines, although forbidden as such in table data, can be conveniently represented by means of the ASCII strings '\t' and '\n' respectively. This rule applies to tables only. Files in 'list' format can contain any characters literally, including physical TABs and newlines.
Some of the NoSQL commands limit the maximum column name width to 31 characters. This should be enough for most purposes, and can easily be extended in the future if the need arises.
The number of columns in a table may be limited to 32,768 by some AWK implementations. It should not be a problem though, because 32,768 is a very high number.
A more serious drawback of the operator stream paradigm is that it is process based. This means that an average pipeline will open several processes at once, one or more for each operator. On complex queries this can lead to exceed the maximum number of child processes allowed by your operating system. This limit is operating system specific and it can usually be overcome by getting the system administrator to increase the process limit as needed.
The new table header format introduced by NoSQL v4 was designed to help with overcoming the process limit problem. The new table header is compatible with manipulating NoSQL tables either with the supplied operators or with common system level utilities like grep(1), cut(1), sort(1), join(1), look(1) and many others. One exception is "sort -r"" of course, as it would move the table header to the end of the table. In this way, in applications that really need to keep the number of system processes at a minimum, the native shell utilities can be used to manipulate NoSQL tables directly without breaking the table header. This is a major advance in both speed and efficiency with respect to the old /rdb-style two-line header format.
Trackbacks (1) | New trackback | Comments (0) | Print