The relational database system is a database engine, structured on the relational data model. The concept of “relational” is coming from words “attitude”, “dependence”, “communication”. The use of relational databases was offered by Dr. Codd of IBM in 1970. For past 30 years, several technological revolutions supposed to put an end to relational repositories. But none of them did not shake the stable position of relational databases.
The database is a set of information about objects, processes, events or phenomena, organized in accordance with certain rules and maintained in the computer’s memory and referring to certain subjects, areas, or tasks. It is organized in a way to provide users a convenient storage of this set of data, both in general and any part of it. The relational database is a set of interrelated tables, each of which contains information about objects of a certain type. Each row of the table contains data about one object (for example, car, computer, client), and the columns of the table contain various characteristics of these objects, or attributes (for example, engine number, processor mark, phones of firms or customers). The rows of the table are called records. All records of the table have the same structure, they consist of fields (data elements), in which the attributes of the object are stored. Each record field contains one characteristic of the object and represents a given data type (for example, a text string, a number or a date). A primary key is a set of table fields, whose combination of values uniquely identifies each entry in the table. The primary key is used to identify records.
Development of the database structure is the most important task to be performed when designing a database. The structure of the database (the set, form, and relationships in this tables) is one of the main project solutions when creating applications using a database. The database structure, created by the developer is described in the database definition language.
Any database system allows performing the following operations with data:
– adding records to tables;
– delete records from the table;
– update the values of some fields in one or more records in the database tables;
– search for one or more records that satisfy the specified condition.
To perform these operations, the query engine is used. The result of the query execution is either a set of records, selected by certain criteria or changes in the tables. Requests to the database are formed on a specially created language for this, which is called the structured query language (SQL). The data management is usually understood as the protection of data from unauthorized access, support for multi-user data mode and ensuring data integrity and consistency.
Although relational stores provide the best mix of simplicity, stability, flexibility, performance, scalability, and compatibility, their performance for each of these points is not necessarily higher than for similar systems targeting any one feature. Today, the variety of applications is growing, and the importance of these features is growing with it. While the number of databases is increasing, one feature begins to eclipse all others. More and more applications are running under high-load conditions, such as web services, so their scalability requirements can change very quickly and grow dramatically. The problem can be very difficult to resolve if a relational database is located on your own server. How fast can you upgrade hardware?
To be competitive, the cloud platform as the form of databases must be scalable. Therefore, you need to use other types of databases that have a higher scalability, albeit at the cost of other features available in relational databases. These advantages, as well as the existing demand for them, led to a wave of new database management systems. This type of database is commonly referred to as a key-value store. In fact, there is no official name, so you can meet it in the context of document-oriented, attribute-oriented, distributed databases, although they can also be relational to split the ordered arrays and distribute hash tables and repositories of the key-value type. And although each of these names points to specific features of the system, they are all variations on a topic, which are usually called the key-value store.
This type of database is not really new and served mainly for applications, for which the use of relational databases wouldn’t be suitable. Now the task is to determine what type of storage is more suitable for a particular system. The relational databases and key-value storages differ radically and are designed to solve different tasks. Comparing the characteristics can make it possible to understand the difference between them. Key-value type stores are oriented to work with records. This means that all information relating to this record is stored with it. A domain, or a table, can contain countless different entries. For example, a domain can contain information about customers and orders. This means that the data is usually duplicated between different domains. This is an acceptable approach because the disk space is cheap. The main thing is that it allows all the related data to be stored in one place, which improves scalability since the need to connect data from different tables disappears. The first advantage of key-value storage is that they are simpler, which means they have greater scalability than relational databases. If you put your own system together and plan to host a dozen or a hundred servers that need to cope with the increasing load behind your data store, then your choice is a key-value store. Due to the fact that such repositories are easily and dynamically expanding, they will also be useful for vendors that provide a multi-user web storage platform. Such a database is a relatively cheap for storing data with a great potential for scalability. Another advantage of relational databases is that they force you to go through the process of developing a data model. If you have a well designed model, the database will contain a logical structure that completely reflects the structure of the stored data, but it is at variance with the structure of the application. Thus, the data becomes independent of the application. This means that another application can use the same data and the application logic can be changed without any changes to the base model.
Typically, all cloud storage is built as multiple releases which mean that the same system uses a large number of users and applications. To prevent the “capture” of a common system, vendors usually restrict somehow the execution of requests. For example, in SimpleDB, the request can not be executed for more than 5 seconds. These restrictions are not frightening for simple logic of creating, updating, deleting, and extracting a small number of records. But what if your application becomes popular? You’ve got a lot of new users and a lot of new data, and now you want to make new opportunities for users or somehow benefit from the data. Here you can harden with the execution of even simple queries for data analysis. However, the scalability cannot be put above all else. It will be no good if customers decide to use another service because it provides more options.