Welcome to Characteristics of NoSQL Databases. This video describes the concepts and characteristics of NoSQL databases, and explains the primary benefits of adopting a NoSQL database. You’ve already learned that the most common trait amongst NoSQL databases is that they are non-relational in architecture. But what types of NoSQL databases are available? And what is common to them? Several efforts have been made to categorize NoSQL databases and, in the marketplace, there is a general consensus that they fit into four types: Key-Value, Document, Column-based and Graph style NoSQL databases. There is some overlap amongst these types, so the definition isn’t always clear, but you’ll hear more details on the different types and their use cases later in this course. But what ties NoSQL databases together? One commonality is that the majority of them have their roots in the open source community and have been used and leveraged in an open source manner. This has been fundamental for spring-boarding their growth in the industry. You’ll often see companies who also provide a commercial version of the database, and services and support of the technology, at the same time providing sponsorship of the open source counterpart. Examples of this include IBM Cloudant for CouchDB, Datastax for Apache Cassandra, and Mongo has their own open source version of the Mongo database too. Technically speaking they all differ quite a bit, but a few commonalities do emerge. Most NoSQL databases are built to scale horizontally and share their data more easily than their relational counterparts. To do this often requires the use of a global unique key across a whole database, to simplify partitioning (or ‘sharding’). They’re also more specialized to certain use cases than RDBMS which previously have been the Swiss army knives of datastores. Developers are drawn to NoSQL databases for their ease of data modelling and use. And finally, many NoSQL databases allow more agile development through their flexible schemas as compared to the fixed schemas of relational databases. So we’ve covered what NoSQL means, its history in the database technology world, and some of the basics of NoSQL database characteristics and differences when compared with relational databases. But why would you use a NoSQL database? And why is the popularity of these databases growing at such a rapid rate? Well, the list is long, so we’ve included some of the more common ones here. Let’s briefly touch on each topic, keeping in mind that not all NoSQL databases will exhibit all of these benefits. First, the most common reason to employ a NoSQL database is for scalability, particularly the ability to horizontally scale across clusters of servers, racks, and possibly even data centers. The elasticity of scaling both up and down to meet the varying demands of applications is key. NoSQL databases are well suited to meet the large data size and huge number of concurrent users that “Big Data” applications exhibit. The second point of performance goes hand-in-hand with scalability. The need to deliver fast response times even with large data sets and high concurrency is a must for modern applications, and the ability of NoSQL databases to leverage the resources of large clusters of servers makes them ideal for fast performance in these circumstances. High Availability is an obvious requirement for a database, and having a database run on a cluster of servers with multiple copies of the data makes for a more resilient solution than a single server solution. Historically, large databases have run on expensive machines or mainframes. Modern enterprises are employing cloud architectures to support their applications, and the distributed data nature of NoSQL databases means that they can be deployed and operated on clusters of servers in cloud architectures, thereby massively reducing cost. Cost is important for any technology venture, and it is common to hear of NoSQL adopters cutting significant costs vs. their existing databases... and still be able to get the same or better performance and functionality. Flexible schema and intuitive data structures are key features that developers love when wanting to build applications efficiently. Most NoSQL databases allow for having flexible schemas, which means that one can build new features into applications quickly and without any database locking or downtime. NoSQL databases also have varied data structures which often are more eloquent for solving development needs than the rows and columns of relational datastores. Examples include key- value stores for quick lookup, document stores for storing de-normalized intuitive information, and graph databases for associative data sets. There are also various specialized capabilities that certain NoSQL providers offer that attract end users. Examples include specific indexing and querying capabilities such as geospatial search, data replication robustness, and modern HTTP API’s. With all these benefits you might well ask why anyone would ever use anything but a NoSQL database. Well, you could say this is true for most cases these days, but there are definitely still many requirements which are best met with an RDBMS. We’ll cover this later in the course. In this video, you learned that NoSQL databases are non-relational, that there are four categories of NoSQL database, that NoSQL databases have their roots in the open source community, that NoSQL database implementations are technically different, and that there are several benefits to adopting NoSQL databases.