PART 1 :A written description of why someone might choose to use a BASE model instead of the traditional ACID model.Before going into much detail,first briefly understand ACID and BASE model via figures                                                                                                        Fig. ACID Model                                              Fig. BASE Model Now let’s discuss why someone might choose to use a BASE model instead of the traditional ACID model:·         For designing many databases,ACID model is far more pessimistic (i.e, they are more worried about data safety) than the database actually requires.In the Non-relational database, ACID consistency model is less fashionable as some databases have loosened the requirements for immediate consistency, data freshness and accuracy in order to gain other benefits like scale and resilience. ·         ACID model is serialized to ensure consistency, use high latency disk.shares cores, caches and storage and this prevents them from scaling horizontally.                                                But a BASE Consistency model:                                i.            Scales horizontally for maximum parallel processing                              ii.            Leverages disk when you need massive volume(high bandwidth)                            iii.            Leverages RAM when you need maximum velocity (low latency)                            iv.            Lets you choose the right mix of synchronous and asynchronous transactions ·         In today’s time of technological world, data is becoming easier and fast to access  through various applications such as Facebook, Google+ and others.Some of examples are Personal user information, , geo- location data, social graphs, user-generated content and machine logging data where the data has been processing exponentially. To avail the above service properly,  it is required to process large size of data which ACID consistency model were never designed that led to the gradual development of BASE consistency model which can handle these huge data properly.·         BASE model is more flexible data model as it follows one of the following data models/stores:a)      Key Value Storesb)      Document Storesc)      Column Based Storesd)      Graph Databasese)      XML Databases·         Non-ralational databases are designed to address performance and scalability requirements of web based application which cannot be addressed by traditional relational databases.Therefore instead of ACID model, they follow BASE model ·         Application developers have been frustrated with the impedance mismatch between the relational data structures (which follow ACID consistency model) and the in- memory data structures of the application. Using NoSQL databases (which follow BASE consistency model) allow developers to develop without having to convert in-memory structures to relational structures. Conclusively, the reasons why someone choose to use a BASE model over ACID consistency model are because of its Flexibility, higher Performance (better price/performance ratio), Reliability(fault tolerance), Scalability, Open System(equal access of every service to every host which might be local or remote), more efficient Computing Power and Sharing of Resources.  PART 2 :Research two different types of NoSQL database and provide a detailed explaination of why or why not either one would work for the database that you are building.NoSQL databases typically fall into one of four categories:        I.            Key-value stores: These are the simplest.It is designed for storing,retrieving and managing big blocks of data.This type of database is useful when the data is simply one cohesive value,such as binary large objects or character large objects in RDBMsThe gain is the speed you get from the simple aechitecture of key-value stores.Eg. Redis     II.            Column store: It allows to store data with key mapped to values and the values grouped into families that are often accessed together.Eg. Cassandra.  III.            Document databases :Each record and its associated data is treated as a document also known as semi-structured data which can contains many different key-value pairs,key-array pairs or even nested documents.Eg. MongoDB.  IV.            Graph databases :These rely on explicit graph structure where nodes and edges connect to each other through relations in a tree like structure.Eg. Neo4J.  Now let’s discuss two different types of NoSQL database in detail:1)Key-value stores :It saves data as associative array where single value is associated together with a key used as a signifier for the value.No two keys necessarily need the same structure,so data is simply accumulated into a single,large table.In computing terminology, dictionaries contain a collection of objects or records that can have many fields that contain data. There is neither relation nor structure in key-value orientated databases. Key-value databases store pair of keys and values, which can be used to retrieve value when a key is known. Key-value stores work differently than relational databases as relational databases use pre-defined data structure as a series of tables containing fields with well-defined data types. On the other hand, key-value stores treat data as a single non-transparent collection that may have different fields for every record. Scalability is one of the big traits of key-value stores as they require less or no redesign and could be fast in most cases. Database administrators can quickly pull the data by identifying a specific key. A query language is not necessary when retrieving data, which provides convenience for users who are lacking query language knowledge. Key-value stores can also be used for web caches. Key-value stores are a type of NoSQL database and are the least structured of the schemaless data stores.For example: DynamoDB, Riak and Redis database systems Let’s discuss one example to understand it more clearly.We analyze the design and the implementation of Amazon’s highly available Key-value stored Dynamo.Amazon runs a world-wide e-commerce platform and serves more than 300 millions customers.At peak times it uses about 80,000 servers located in many data centers around the world.Therefore, they have requirements of high performance,reliability and efficiency that needs a fully scalable platform.There are many Amazon services that only need primary-key access to a data store:·         To provide best-seller lists·         Shopping carts·         Customer preferences·         Session management·         Sales rank and product catalogsBut all these using relations database would lead to inefficiencies and limit scale availability. I am building a Computer Hardware and Repair shop database which manages data for a particular shop.It can also possible with Key-value store which simply use key/value method to store since it doesn’t require higher complexity.   Let’s take one table of Computer Hardware and Repair shop database having Computer Details:                                FIGURE 2.1 To understand the concept of designing our database using key value pair database,I have taken one table of our database which is showing the computer details as in fig2.1In fig.2.2,we have taken only three records from computer table,i.e,computer id(comp_id),computer company(comp_company) and computer operating system(comp_operatingsystem).Take two different computers which is described by two different computer ids as in fig2.2This type of table in fig2.2 can be created by using following statements:CREATE TABLE tbl_computer(comp_ID INT   NOT NULL,KEY1 VARCHAR(50) NOT NULL,VALUE1,VARCHAR(50) NOT NULL);                                                    tbl_computer   comp_IDKEY1VALUE1      106362Comp_companydell      106362Comp_operatingsystemWindow7      106362Comp_ram4gb     202015Comp_companyhp     202015Comp_operatingsystemWindow10    202015Comp_ram8gbALTER TABLE tbl_computer ADD CONSTRAINT tbl_computer_PK PRIMARY KEY (comp_ID, KEY1);                   Figure2.2 : Database using Key-Value store To update the existing data,we can use the following Insert commands:INSERT INTO tbl_computer (comp_ID, KEY1, VALUE1) VALUES (106362, ‘Comp_company’, ‘dell’);INSERT INTO tbl_computer (comp_ID, KEY1, VALUE1) VALUES (106362, ‘Comp_operatingsystem’, ‘window7’);INSERT INTO tbl_computer (comp_ID, KEY1, VALUE1) VALUES (106362, ‘Comp_ram’, ‘4gb’); INSERT INTO tbl_computer (comp_ID, KEY1, VALUE1) VALUES (202015, ‘Comp_company’, ‘hp’);INSERT INTO tbl_computer (comp_ID, KEY1, VALUE1) VALUES (202015, ‘Comp_operatingsystem’, ‘window10’);INSERT INTO tbl_computer (comp_ID, KEY1, VALUE1) VALUES (202015, ‘Comp_ram’, ‘8gb’);Here while designing our database with Key-Value store technique, both KEY1 and VALUE1 can be used the same data type,i.e,varchar in order to simplify the database.In the same way, whole database can be designed using key value store by creating all tables and inserting the corresponding keys and values.If a programmer wants to add any item in tbl_computer table,it can be simply done  by inserting a new record to tbl_computer table which is very simple and thus provide good flexibility.2)COLUMN STORE:Column store databases use a multi-dimensional, sparse, distributed map to store data. This type of databases is also known as column family stores or wide column stores. A record could be in one column or multiple columns and also columns can be nested inside other columns known as super columns. Columns can be grouped together in one column family or multiple column families. Data retrieval happens by using primary key per column family. A column-oriented database serializes all of the values of a column together, then the values of the next column, and so on .Let’s discuss with the help of a table 2.3  Contrary to relational databases where a particular data is stored in rows of a table, column orientated databases store data in column(s). On the surface, column orientated databases might appear to look like a relational database, however they are different as these don’t have any pre-structured table to work with the data. This property of column orientated database makes retrieving of large amounts of a particular attribute faster. Column orientated databases are in essence a two-dimensional array where each key, a record/row has one or more key/value pairs attached to it .This allows for the management for large unstructured data.For example, Cassandra, Google’s Big Table and HBase are some of the more popular wide column store database systems.RowIdEmpIdNameSalary00120Jimmy400000230Bob5000                                        20:001,30:002     Jimmy:001,Bob:002    4000:001,5000:002                                         In column store       The data would be  stored as                                             Fig.2.3 Column store database