3 steps to determining your database needs
Massively interactive enterprises are driving NoSQL adoption
Customer experience has quickly become the most important competitive differentiator and ushered the business world into an era of monumental change. As part of this revolution, enterprises are interacting digitally – not only with their customers, but also with their employees, partners, vendors, and even their products – at an unprecedented scale. This interaction is powered by the internet and other 21st century technologies – and at the heart of the revolution are a company’s cloud, mobile, social media, big data, and IoT applications.
How are these applications different from legacy enterprise applications like ERP, HR, and financial accounting? Today’s web, mobile, and IoT applications share one or more (if not all) of the following characteristics. They need to:
- Support large numbers of concurrent users (tens of thousands, perhaps millions)
- Deliver highly responsive experiences to a globally distributed base of users
- Be always available – no downtime
- Handle semi- and unstructured data
- Rapidly adapt to changing requirements with frequent updates and new features
Building and running these massively interactive applications has created a new set of technology requirements. The new enterprise technology architecture needs to be far more agile than ever before, and requires an approach to real-time data management that can accommodate unprecedented levels of scale, speed, and data variability. Relational databases are unable to meet these new requirements, and enterprises are therefore turning to NoSQL DB technology.
What is a NoSQL Database?
NoSQL database technology is a database type that stores information in JSON documents instead of columns and rows used by relational databases. To be clear, NoSQL stands for “not only SQL” rather than “no SQL” at all. This means a NoSQL JSON database can store and retrieve data using literally “no SQL.” Or you can combine the flexibility of JSON with the power of SQL for the best of both worlds. Consequently, NoSQL databases are built to be flexible, scalable, and capable of rapidly responding to the data management demands of modern businesses.
Consider just a few examples of Global 2000 enterprises that are deploying NoSQL for mission-critical applications that have been featured in recent news reports:
- Tesco, Europe’s No.1 retailer, deploys NoSQL for e-commerce, product catalog, and other applications
- Ryanair, the world’s busiest airline, uses NoSQL to power its mobile app serving over 3 million users
- Marriott deploys NoSQL for its reservation system that books $38 billion annually
- Gannett, the No.1 U.S. newspaper publisher, uses NoSQL for its proprietary content management system, Presto
- GE deploys NoSQL for its Predix platform to help manage the Industrial Internet
Five trends creating new technical challenges that NoSQL DBs address
Digital Economy trends
|1. More customers are going online||
• Scaling to support thousands, if not millions, of users
• Meeting UX requirements with consistent high performance
• Maintaining availability 24 hours a day, 7 days a week
|2. The internet is connecting everything||
• Supporting many different things with different data structures
• Supporting hardware/software updates, generating different data
• Supporting continuous streams of real-time data
|3. Big data is getting bigger||
• Storing customer generated semi-structured/unstructured data
• Storing different types of data from different sources, together
• Storing data generated by thousands/millions of customers/things
|4. Applications are moving to the cloud||
• Scaling on demand to support more customers, store more data
• Operating applications on a global scale – customers worldwide
• Minimizing infrastructure costs, achieving a faster time to market
|5. The world has gone mobile||
• Creating “offline first” apps – network connection not required
• Synchronizing mobile data with remote databases in the cloud
• Supporting multiple mobile platforms with a single backend
Scoping for changing requirements
A core principle of agile development is adapting to evolving application requirements: when the requirements change, the data model also changes. This is a problem for relational databases because the data model is fixed and defined by a static schema. So in order to change the data model, developers have to modify the schema, or worse, request a “schema change” from the database administrators. This slows down or stops development, not only because it's a manual, time-consuming process, but also because it impacts other applications and services.
Why NoSQL Databases? Flexibility for Faster Development
By contrast, a NoSQL database fully supports agile development and does not statically define how the data must be modeled. Instead, NoSQL defers to the applications and services, and thus to the developers as to how data should be modeled. With NoSQL, the data model is defined by the application model. Applications and services model data as objects.
Simplicity for easier development
Applications and services model data as objects (e.g., employee), multi-valued data as collections (e.g., roles), and related data as nested objects or collections (e.g., manager). However, relational databases model data as tables of rows and columns – related data as rows within different tables, and multi-valued data as rows within the same table. The problem with relational databases is that data is read and written by disassembling, or “shredding,” and reassembling objects. This is the object-relational “impedance mismatch.” The workaround is object-relational mapping frameworks, which are inefficient at best, and problematic at worst.
As an example, consider an application for managing resumes. It interacts with resumes as an object, the user object. It contains an array for skills and a collection for positions. However, writing a resume to a relational database requires the application to “shred” the user object.
Storing this resume would require the application to insert six rows into three tables, as illustrated in Figure 3.
However, reading this profile would require the application to read six rows from three tables, as illustrated in Figure 4.
By contrast, in a document-oriented database defined as NoSQL, JSON is the de facto format for storing data – helpfully, it’s also the de facto standard for consuming and producing data for web, mobile, and IoT applications. JSON not only eliminates the object-relational impedance mismatch, it also eliminates the overhead of ORM frameworks and simplifies application development because objects are read and written without “shredding” them (i.e., a single object can be read or written as a single document), as illustrated in Figure 5.
A distributed NoSQL database, however, leverages commodity hardware to scale out – i.e., add more resources simply by adding more servers. The ability to scale out enables enterprises to scale more efficiently by (a) deploying no more hardware than is required to meet the current load; (b) leveraging less expensive hardware and/or cloud infrastructure; and (c) scaling on demand and without downtime.
In addition to being able to scale effective and efficiently, distributed NoSQL databases are easy to install, configure, and scale. They were engineered to distribute reads, writes, and storage, and they were engineered to operate at any scale – including the management and monitoring of clusters small and large.
Availability for Always-on, Global Deployment
As more and more customer engagements take place online via web and mobile apps, availability becomes a major, if not primary, concern. These mission-critical applications have to be available 24 hours a day, 7 days a week – no exceptions. Delivering 24x7 availability is a challenge for relational databases that are deployed to a single physical server or that rely on clustering with shared storage. If deployed as a single server and it fails, or as a cluster and the shared storage fails, the database becomes unavailable.
In contrast to relational technology, a distributed, NoSQL database partitions and distributes data to multiple database instances with no shared resources. In addition, the data can be replicated to one or more instances for high availability (intercluster replication). While relational databases like Oracle require separate software for replication (e.g., Oracle Active Data Guard), NoSQL databases do not – it’s built in and it’s automatic. In addition, automatic failover ensures that if a node fails, the database can continue to perform reads and writes by sending the requests to a different node.
As customer engagements move online, the need to be available in multiple countries and/or regions becomes critical. While deploying a database to multiple datacenters increases availability and helps with disaster recovery, it also has the benefit of increasing performance, because all reads and writes can be executed on the nearest datacenter, thereby reducing latency.
Ensuring global availability is difficult for relational databases in cases where the requirement of separate add-ons increases complexity (e.g., Oracle requires Oracle GoldenGate to move data between databases) – or when replication between multiple datacenters can only be used for failover because only one datacenter is active at a time. Also, when replicating between datacenters, applications built on relational databases can experience performance degradation or find that the datacenters are severely out of sync.
A distributed, NoSQL database includes built-in replication between datacenters – no separate software is required. In addition, some include both unidirectional and bidirectional replication enabling full active-active deployments to multiple datacenters, which allow the database to be deployed in multiple countries and/or regions and to provide local data access to local applications and their users. This not only improves performance, it also enables immediate failover via hardware routers – applications don’t have to wait for the database to discover the failure and perform its own failover.
NoSQL is a better fit for Digital Economy requirements
So what are NoSQL databases and why do they matter now? As enterprises shift to the Digital Economy – enabled by cloud, mobile, social media, and big data technologies – developers and operations teams have to build and maintain web, mobile, and Internet of Things (IoT) applications faster and faster, and at greater scale. Flexible, high-performance NoSQL is increasingly the preferred database technology to power today’s web, mobile, and IoT applications.
Hundreds of Global 2000 enterprises, along with tens of thousands smaller businesses and startups, have adopted NoSQL. For many, the use of NoSQL started with a cache, proof of concept or a small application, then expanded to targeted mission-critical applications, and is now the foundation for all application development.
With NoSQL, enterprises are better able to both develop with agility and operate at any scale – and to deliver the performance and availability required to meet the demands of Digital Economy businesses.