A database management system (DBMS) provides for Applications a means to handle large amounts of data primarily. In detail it provides efficient, reliable, convenient, and sage multi-user storage of and access to massive amounts of data. Database systems are extremely prevalent. They sit behind websites, run systems, communications, deployments of sensors, scientific experiments and much more.
Efficient (thousands of queries/updates per second)
Database systems handle data at a massive scale. Currently database systems are handling terabytes of data, sometimes terabytes of data every day. One of the critical aspects is that the data that is handled by database management systems is much larger than can fit in the memory of a typical computing system. Although memory is growing very, very fast the amount of data to be handled by database systems is growing much faster. Therefore database system are designed to handle data that to residing outside of memory.
The data that is handled by database systems is typically persistent. This means that the data in the database outlives the programs that execute on that data. Very often actually multiple programs will be operating on the same data.
Database systems, since they run critical applications such as communications and decoding have to have guarantees that the data managed by the system will stay in a consistent state, it will not be lost or overwritten when there are failures, and there can be hardware failures as well as software failures or even simple power outages as well as problem of malicious users that may try to corrupt data. Thus, database systems have a number of built in mechanisms that ensure that the data remains consistent, regardless of what happens.
Multiple programs may operate on the same database. Even with one program operating on a database, that program may allow many different users or applications to access the data concurrently. When there are multiple users or applications re working on the same data, the system has to have some mechanism, again, to ensure that the data stays consistent. There is a mechanism in database systems, concurrent control. It controls the way multiple users access the database. The control actually occurs at the level of the data items in that database.
Many users might operate on the same database but be operating on different individual data items. It is similar to file system concurrency or even variable concurrency in programs, although it is more centered around data itself.
Convenient is one of the critical features of database systems. They are designed to make it easy to work with large amounts of data and to do very powerful and interesting processing on that data. It happens at a couple of levels.
There is Physical Data independence which means that the data is actually stored and laid out on disk is independent of the way that programs think about the structure of the data.
A program that operates on a database and underneath there could be a complete change in the way the data is stored, yet the program itself would have not have to be changed. In such, the operations on the data are independent form the way the data is laid out.
Database are usually are queried by languages that are relatively compact to describe, really at a very high level what information is requested from the data. Specifically they obey a notation that is called declarative which means that the query describes what it request from the database but without the need to describe the algorithm to get the data our. It allows to write queries in a very simple way and the the system will itself find the algorithm to get that data out efficiently.
The three most important things in a database system is fist performance, second performance, and again performance. Database system have to do thousands of queries or updates per second. There are not simple queries, complex queries, at that rate, over gigantic amounts of data, terabytes of data is no simple task/
Reliability means that they are up all the time, i.e. 99.9999% up time is the type of guarantee that database management systems are making for their applications.