Relational databases have a long-standing position in most organizations, and for good reason. Relational databases underpin existing applications that meet current business needs; they are supported by an extensive ecosystem of tools; and there is a large pool of labor qualified to implement and maintain these systems.
But organizations are increasingly considering alternatives to legacy relational infrastructure. In some cases the motivation is technical — such as a need to handle new, multi-structured data types or scale beyond the capacity constraints of existing systems — while in other cases the motivation is driven by the desire to identify viable alternatives to expensive proprietary database software and hardware. A third motivation is agility or speed of development, as companies look to adapt to the market more quickly and embrace agile development methodologies.
These motivations apply both to analytical and operational applications. Companies are shifting workloads to Hadoop for their bulk analytical workloads, and they are building online, operational applications with a new class of so-called “NoSQL” or non-relational databases.
Development teams exert strong influence in the technology selection process. This community tends to find that the relational data model is not well aligned with the
needs of their applications. Consider:
- Developers are working with applications that create new, rapidly changing data types — structured, semi-structured, unstructured and polymorphic data — and massive volumes of it.
- Long gone is the twelve-to-eighteen month waterfall development cycle. Now small teams work in agile sprints, iterating quickly and pushing code every week or two, some even multiple times every day.
- Applications that once served a finite audience are now delivered as services that must be always-on, accessible from many different devices and scaled globally.
- Organizations are now turning to scale-out architectures using open source software, commodity servers and cloud computing instead of large monolithic servers and storage infrastructure.
When compared to relational databases, many NoSQL systems share several key characteristics including a more flexible data model, higher scalability, and superior
performance. But most of these NoSQL databases also discard the very foundation that has made relational databases so useful for generations of applications –
expressive query language, secondary indexes and strong consistency. In fact, the term “NoSQL” is often used as an umbrella category for all non-relational databases. As we will see, this term is far too wide and loosely defined to be truly useful. It often ignores the trade-offs NoSQL databases have made to achieve flexibility, scalability and performance.
In this series of posts (to be followed and coming from a MongoDB White Paper), we hope to help you navigate the complex and rapidly evolving domain of NoSQL and non-relational databases. We describe five critical dimensions organizations should use to evaluate these databases as they determine the right choice for their applications and their businesses.