[MUSIC] Hi, we have talked about the benefits of NoSQL so far. Now I've got a response to talk about the disadvantages or issues of using NoSQL technologies. NoSQL has a non-standardized query language. In the absence of a standard query language for NoSQL databases, it is necessary to learn each query language for a given database management system. This is true even within each NoSQL storage category. NoSQL has problems in transactions. As a result of not following the ACID properties, there is a weaker control over the consistency, durability and isolation of transactions. NoSQL has integrity problems. Ensuring the integrity of the data requires extra programming manually and is not function of the DBMS. Integrity is understood from the point of view of the restrictions, of domain, referential of null value, etc. Now that we know the advantages and disadvantages of NoSLQ databases, we have the criterion to decide when to use relational database systems, and when to use NoSQL database technologies. The decision on what type of DBMS should be used depends on a set of factors including but not limited to. The volume of data to store. The estimated concurrence. The number of operations that are done on the database per unit of time. The desired scalability of the database. The degree of integrity and consistency that is desired. The nature of the data to be stored. The most frequent types of operations that you want to do with the data. There are two main characteristics regarding those equal data basis and they are the CAP theorem and the base properties. On the one hand, the CAP theorem has been adopted by several companies in the web and the NoSQL community. The acronym for CAP refers to the following, C as consistency. It refers to whether a system is in a consistent state after the execution of an operation or not. A distributed system is considered consistent if after an update operation by a node, the rest of the nodes see the update in a shared data resource. A as availability, it means that a system is designed and implemented in such a way that it can continue its operation if there are software or hardware problems or a node fails. P as Partition tolerance it's the ability of a system to continue it's operation in the presence of network partitions. This happens if a set of nodes in a network looses connectivity with other nodes. Partition tolerance can also be considered as ability of a system to dynamically add and remove nodes. [INAUDIBLE] that the most you can have two of the three characteristics in a shared data system. On the other hand, a NoSQL database follows a paradigm of the base properties. BASE stands for basically available. Soft state, the information will expire unless it is refreshed. And eventual consistency. The BASE properties can be summarized as follows, an application works basically all the time. It does not have to be consistent all the time, but it will eventually reach a known state. The NoSQL technologies comprise a number of non-relational databases. The most common are key-value, column-oriented, document-oriented, and graph-oriented databases. In the case of a key-value database, it is a system that stores values indexed by keys. And then it can store structured and unstructured data. The possibility of storing any type of value is called schema-less. The data values are stored as arrays of bytes. The content is not important for the database. And it offers high performance, very scalable, very flexible, and low complexity. The disadvantage of key value databases is that they do not support complex queries, because they only look for a key. Examples of key-value databases are Amazon, DynamoDB, Cassandra, Voldemort, RAMCloud, and Flare. [MUSIC] Regarding to column-oriented databases, as the name implies, they store the data in columns instead of rows. That is, all the attributes of a single data entity are stored so that each of them can be accessed as a unit. Examples of DBMS oriented to columns includes Sybase IQ, Cassandra, hyper table, and age based. The following few here illustrates how column oriented storage is compared to row storage. Column-oriented databases are not good for queries that required to present the whole record of an entity. In this case, the row-store is better. [SOUND] Column-oriented storage is especially efficient when data readings are massive, and writes to a few columns. This is because in a query, only the data of the columns that interest are obtained, not all the columns of a record, which increases efficiency. There are some columnar databases that can be designed as a relational and supportive AC properties. An example of these is. In these case, columnar oriented databases are widely used in business intelligence. There are also documentary into databases that are commonly key value where a value is stored as a binary field with a format that the DBMS can understand. This format is often a JSON document, JavaScript Object Notation, but it can be XML or any other. Too many advantages are that it allows very advanced queries on the data. And restores relations between data. There are some document databases that do not allow join operations due to performance issues. Examples of document-oriented DBMS include CouchDB, MongoDB, Cloudkit, and XML databases such as DB2 pureXML. The last type of most SQL database I will mention corresponds to graph-oriented bases. Whether graphics represented as a set of nodes or entities interconnected by age or relationships. Graphs give importance not only to the data, but to the relations between them. Relationships can also have attributes and direct queries can be made to relationships, rather than to the nodes. Being stored in this way, it is much more efficient to navigate between relationships than in a relational model. [SOUND] Obviously, these type of databases are only useful when the information can be easily represented as a network. Among the most used implementations are Neo4J, Hyperbase-DB, and InfoGrid. The performance and scalability of a graph-oriented database are variable, highly flexible, and highly complex to implement. Now that we have understood the main characteristics of NoSQL databases, how to decide which of them we should utilize. Well, that depends on the performance, scalability, flexibility, complexity, and functionality your information system requires. We can understand from the table how it establishes a comparison between the different data storage alternatives. These characteristics are trends and generalities of such systems but the performance and the scalability depend very much on the type and frequency of operations that are applied. We have learned what a sequence means and when it should be used. Next section we would understand the key value data basis, see you next section. [MUSIC]