Hi, I hope that the previous two courses regarding how to design and implement transactional and analytical information systems helped you to improve your professional performance. During this course, we will learn what alternatives to traditional relational database systems are, and how to implement a NoSQL system. Let's start. As all we know, the user relational database model has been considered to solve almost any problem of data management and storage. Furthermore, the principal relational database management systems have absorbed alternative proposals such as XML document warehouses and object-oriented databases. Far from replacing the relational database management systems, they complement and extend their functional characteristics. But when the limitations of relational database management system become evident, and an unstructured data storage challenges grow, the idea of having a single traditional relational database management system that solves everything has been questioned. It is when NoSQL databases come to this scenario, where NoSQL databases differ from relational technology in three main areas: data models, data structure and development model. In the case of data models, a NoSQL database lets you build an application without having to define the schema first unlike relational databases. Regarding data structure, NoSQL databases are designed to handle unstructured data, such as text, social media, post, video, or email, which makes up much of the data that exist today. Regarding development model, NoSQL databases are open source, whereas relational databases typically are closed source with licensing fees baked it into the use of their software. With NoSQL, you can get started on a project without any heavy investment in software fees upfront. Now, what means NoSQL? Well, NoSQL was popularized to refer to databases that do not support the relational model, and they do not use the structured query language or relational databases. The term NoSQL groups all those technologies, like graphs, documents, text et cetera. That by definition are non-relational. A more precise definition of NoSQL corresponds to all those new generation databases that are non-relational, distributed, open source, schemaless and horizontally scalable. Summarizing, NoSQL, now, not only SQL is a general category of database management system that differs from the relational database management system in different ways. They do not have a schema, they do not allow joins, they do not try to guarantee the transaction AC properties, and they scale horizontally. The NoSQL movement also got the attention of several companies that have developed NoSQL technologies, like Facebook, who developed the Cassandra system, later used by Twitter. In addition, Linkedin developed Project Voldemort and Ubuntu One, a synchronized cloud storage system based on CouchDB. In addition to web applications, NoSQL databases also support diverse activity, including predictive analysis and non-critical transactional systems, those that do not require the AC properties. What are the benefits of using a NoSQL database? Under first-place, as data is stored schema-less, they're written greatest speeds in a NoSQL database are usually fast and then provide high performance. For example, Hypertable's technology is capable of storing one trillion data per day. Another example is a Google BigTable software, which can process 20 petabytes of data in a day. Other benefit is that if a database experiences some growth, it is possible to add nodes to a distributed system is such a way that it provides processing and storage economically, also known as horizontal scalability. NoSQL databases have the necessary mechanisms for horizontal scalability. In terms of a storage, the NoSQL storage model is much simpler than the table schema of the relational model. This positively affects performance as there is no defined schema for saving data. Furthermore, NoSQL storage is more flexible than the rigid schema of tables. In reality, NoSQL databases lack of a fixed schema. When the data to be stored cannot be translated into tables of the relational model, it is convenient to look for a solution by NoSQL. NoSQL databases are a good option for those information systems that do not require the AC properties. Therefore, without a strict management of a transactions, the control of concurrency is not done by blocking, but there are other mechanisms. Since durability is not a critical element in some web applications, it's not necessary to write logs for each transaction. Examples of data not sensitive to durability include copies of user session data and text message in forums or social networks. Next session, we will discuss the principle issues of using NoSQL technologies. See you then. Bye.