Database Mangement System(DBMS) provides for applications ...
Efficient, reliable, convenient, and safe multi-user storage of and access to massive amount of persistent data.
1) Massive :
2) Persistent :
3) Safe :
Threats to DB are "non-deterministic", like:
Hardware and Software failure.
Malicious Users etc.
In all of such situations you don't want your "precious data", say bank balance to change!
4) Multi-user :
Multiple applications( computer programs ) can access a single DB, implying multiple users using such applications are trying to access a DB. In such situations, we don't want the following:
To deal with such situations, a meachanism called "concurrency control" is used, implying that "control should actually occur at the level of data items in the DB".
5) Convenient :
Since data is massive in scale, we would like to "easily" work through such data, through powerful processing power.
To deal with such issues, it so happens to be at couple of levels:
DB's do thousands of queries/updates per sec. Such queries need not be simple.
Thus performance of the database systems must be optimum or near to be optimum.
When the data scales, consequestly physical memory has to scale, implying databases to be flexible/scalable enough to keep up with the querying of the data.
Issues such as:
It's criticially important to have DB's up and running at all times, such notion is called, "up-time".
Sectors like telecommunication and banking relies significantly on the availability of the data to it's users for efficient servicebility.
1) When people build DB applications, somtimes they program them via "framework".
Such frameworks are enviornment that helps build "calls" to DB systems.
Some popular one are "Rails" for Ruby, "Django" for Python.
2) DBMS may run in conjunction with "middleware".
3) Some data-intensive applications may not use DBMS at all!
There are still massive amounts of data stored in file-systems, e.g. Excel spreadsheets, CSV( comma separated files )etc.
Such type of data is still very usefull in many ways, and yet the processing of such data isn't always done through "query languages" associated with the DB system.
E.g. Apache "Hadoop" and "Spark" are processing framework for running operations on data that's stored in files or memory respectivly.
Schema Vs data
Data Definition Language(DDL)
Data Manipulation or query language(DML)
1. Data Model:
"In general, is the description of how the data is structured", most common of them is the "Relational data model".
Some of the data model used these days are:
Relational data model.
Hierarchichal data model.
Documents capture data as hierarachichal structures of labelled values.
E.g. XML documents.
Graph based data model.
2. Schema Vs Data:
"A schema set's up the structure of the DB."
Typically, schema is set up at the beginning and dosen't change much throughout.
"In general, it is used to set up schema(structure) for a particular DB."
"In general, once the data has been loaded to a schema, it's manupalated and modified using high level query's."
Such queries are typically associated with query languages called "DML".
1. DBMS implementer:
"Is the person, who implements(Builds) DB systems."
Note: out of the scope of the course.
2. DB designer:
"Is the person, who establishes the schema of the DB"
Usually quite complex work.
3. DB application developer:
"Is the person, who developes framework, applications and programs that operate on a DB."
"Is the person, who loads the data, keeps the whole thing running and keeps it running smoothly."