Databases Reference
In-Depth Information
have a number of simpler components that can be reassembled to meet the needs of
different applications. For example, one function allows sharing of objects in RAM
(memcache), another function runs batch jobs (MapReduce,) and yet another func-
tion stores binary documents (key-value stores). Note that most UNIX pipes were
designed to transform linear pipelines of line-oriented data streams on a single proces-
sor. NoSQL components, though modular, are more than a series of linear pipeline
components. Their focus is on efficient data services that are frequently used to power
distributed web services. NoSQL systems can be documents, messages, message stores,
file stores, REST , JSON , or XML web services with generic application program inter-
faces ( API s). There are tools to load, validate, transform, and output large amounts of
data, whereas UNIX pipes were really designed to work on a single processor.
STANDARDS WATCH: UNIVERSAL PIPES FOR STRUCTURED DATA At this point you
might be asking if you can still use the concepts behind UNIX pipes to process
your structured data. The answer is yes, if you use JSON or XML standards!
The World Wide Web Consortium has recognized the universal need for stan-
dard pipe concepts that work with any unstructured data. They have provided
a standard for processing pipelined data called XProc . Several NoSQL data-
bases have XProc built in as part of their architecture. XProc standards allow
data transformation pipelines built with one NoSQL database to be ported to
other XProc systems without modification. You can read more about XProc at
http://www.w3.org/ TR /xproc/ . There's also a version of the UNIX shell
that's specifically used for XML called XMLSH . You can read more about
XMLSH at http://www.xmlsh.org.
The concept of simple functions in NoSQL systems will be a recurring theme. Don't
be afraid to suggest or use a NoSQL system even if it doesn't meet all your needs in a
single system. As you come to learn more about NoSQL systems, you'll think of them
as collections of tools that become more useful the more you know about how they fit
together. Next, we'll see how the concept of simplicity is important in the develop-
ment of the application layer with respect to NoSQL applications.
2.2
Using application tiers to simplify design
Understanding the role of tiered applications is important to objectively evaluate one
or more application architectures. Since functions move between tiers, the compari-
son at times might not be as clear as when you look at a single tier. The best way to
fairly and objectively compare systems is to take a holistic approach, looking at the
overall application and how well it meets system requirements.
Using application tiers in your architecture allows you to create flexible and reusable
applications. By segregating an application into tiers, you have the option of modifying
or adding a specific layer instead of reworking an entire application when modifications
are required. As you'll see in the following example, which compares RDBMS s and
NoSQL systems, functions in NoSQL applications are distributed differently.
Search WWH ::




Custom Search