Warakorn - Fotolia
NoSQL databases are now providing a viable alternative to traditional relational database management systems, owing to the ease of deployment and scalability on Amazon Web Services, said attendees at the NoSQL Now Conference in San Jose, Calif. "One of the nice things about working with AWS when it comes to NoSQL systems is that most of these systems were designed with both horizontal scalability and lightweight performance analysis in mind," said Robert Treat, CEO of c, a Web architecture and engineering firm.
From a horizontal scaling perspective, Amazon has enough capacity to reduce concerns about incorrectly sizing hardware purchases in relation to the number of nodes required. From a performance standpoint, Amazon Web Services (AWS) allows the enterprise to rebuild nodes on the fly or spin up new nodes rather than worrying about the performance of a specific system.
Organizations are also finding that AWS is a good fit for the demands of Internet of Things applications and the back-end databases required to support them. Matt Heitzenroder, COO of Orchestrate.io, a NoSQL service provider, said, "Enterprises' customers are adding features to products that were previously cost- or time-prohibitive to build when additional databases were required."
Easy and inexpensive
Many enterprises are building their applications on AWS because it is easy and inexpensive to get servers up and running, said Brian Bulkowski, founder and CTO of Aerospike, a NoSQL software provider. Some companies will switch to other infrastructure providers and dedicated servers as they grow, but many customers continue to keep their infrastructure on Amazon as they scale up.
One example is Vizury, a next-generation digital customer relationship management (CRM) company. Vizury uses Aerospike database servers running on Amazon R3 instances, an advanced version of Amazon EC2 memory-optimized instances, to power its big data platform. By using Aerospike, Vizury has been able to scale its implementation to handle 5-billion-plus bid requests per day across four data centers, and it responds in less than 10 milliseconds with user-specific bid values. At the same time, Vizury has been able to provide the same level of service with one-quarter the number of servers.
To get the most from SQL, many enterprises might consider adopting a new architecture for real-time big data or context-driven applications that consists of three tiers, Bulkowski said. These tiers include:
1. A Web application tier that must scale elastically based on consumer demand.
2. A real-time tier or front-edge in-memory NoSQL database, that holds real-time context or "hot" data on user behavior, like session IDs, cookies, device IDs, location and page views.
3. A Hadoop distributed file system or Hadoop cluster that contains archived or historical information on consumer behavior, such as click streams. Like the Web application tier, these clusters are also spun up and down depending on when the analytics jobs are run.
Advantages of NoSQL
Enterprises should consider using NoSQL databases as an alternative to relational databases in many use cases to reduce failure, improve performance and increase scalability. Shane Johnson, senior product marketing manager at Couchbase, a NoSQL software company, said a NoSQL database employs a "shared nothing" architecture with a single node type and no single point of failure. It is engineered to scale out, whereas a relational database is not. AWS provides an elastic infrastructure that is well suited to scaling out NoSQL servers to meet the performance and scalability requirements created by sustained growth in users and data.
Implementing NoSQL databases is an ideal choice for developers working with an environment that is dynamic, and who can work outside a predefined schema, said Ofer Bengal, co-founder & CEO of Redis Labs, a cloud-managed database service. Scalability is another key driver because SQL databases are difficult to scale beyond a single machine. NoSQL databases are horizontally scalable, which enables developers to add more nodes to meet increased demand.
NoSQL databases can also allow enterprise applications to work with different data types. This can include key/value data stores, documents, graphs and advanced dictionary servers. Bengal said this allows developers to more easily express themselves when creating applications.
Enterprise architects also have to consider some of the limitations of NoSQL. Some of the NoSQL databases developed in the last several years make clear tradeoffs. When architecting applications in the cloud, it is possible to take advantage of this, OmniTIc's Treat said. For example, if the data set is too large for a single team, system engineers and application developers need to worry about a data model built around eventual consistency rather than a data store that can maintain a global state like a relational database.
This can be achieved with traditional relational database management systems (RDBMSes) by sharing data across separate database instances. With NoSQL, Treat recommends enterprise architects use a weaker data-type model in systems such as Hadoop or Cassandra if that provides an easier operational model and makes aspects such as resizing clusters and dealing with data loss go away.
Couchbase's Johnson recommends that enterprises consider using specific AWS services to get the most out of their NoSQL database implementations. AWS Direct Connect can help to replicate data from an AWS deployment to an on-premises deployment with reduced network costs, increased bandwidth and consistent network performance.
AWS CloudFormation templates can help to automate the provisioning and deployment of server instances. CloudWatch can provide advanced monitoring of EC2 instances for the database. Couchbase has also developed a variety of tools to complement these. For example, its Rack Awareness tool allows groupings of servers on a cluster in which each group physically belongs to a rack that can ensure data is replicated to multiple availability zones (specific physical locations that are part of a region), and to leverage cross data center replication, a service for providing data consistency across multiple locations, to ensure data is replicated to multiple regions.
As NoSQL databases grow in popularity, new tools are emerging to bring these advantages to traditional RDBMS applications. The AWS ecosystem provides a number of solutions to build scalable database applications based on the NoSQL approach that can be leveraged when it is OK to sacrifice certain features, said Dan Skatov, head of development at Starcounter, a database software vendor. For example, AWS SimpleDB supports only limited types of transactions and consistency cases and doesn't provide concurrency control. Skatov said adding these features to AWS database services using tools like Starcounter can help the enterprise reduce the time to market and development costs.
NoSQL technology will certainly not replace traditional databases for all applications. Traditional RDBMSes have a solid reputation for systems of record in the enterprise. However, NoSQL databases do promise to open the doors to new kinds of applications and provide a viable alternative when concerns about consistency and reliability can be addressed in specific use cases.