What are key design goals when building a DBMS?
support recovery from failures.
- storage failure
- End user failure/aborts.
- server failure/software, power, catastrophe (distributed locations)...
Support concurrency- give users/programmers illusion of being alone. (transactions)
supporting high performance queries/updates indexing is one solution.
Support "Big Data"- transactional system (data expires and then archived to anal sys),
- analytic systems (data don't get expires)
- how big is "big"? Depends GBs -> PBs
Support data independence- the form of data is independent from computer systems.
- typically done via a declarative programming language (SQL)+optimization algorithms that implement that.
What does a model DBMS arch look like?
From top to bottom
programming interface: more like a compiler, e.g., SQL->C ; -----> Logging & Recovery Mgr, also ----> concurrency control mgr
|
logical Optimizer: better ways of implement it (SQL) -----> catlog:
|
----------->catlog: stores metadata (data about the data) --- you might use a minidatabase to manage the catlog, SQLLite
|
physical optimizer: attach algorithms to the implementation, e.g., this type of join...choose the algorithm. ---> catlog
|
query execution engine --->catlog, also ---> Logging & Recovery Mgr
|
------------> Logging & Recovery Mgr <------>concurrency control mgr
|
index/file/record mgr typed bits ---> catlog, also ----> Logging & Recovery Mgr, also -----> concurrency control mgr
|
Buffer manager: untype bits 1. for high performance 2. Strong interaction between concurrency control and system recovery ----> concurrency control mgr
|
Persist. Storage: DBMS will often manage the persist storage at a very low level (the OS may not be reliable).
logging & recovery, concurrency control mgr <-> most nasty part, but ignored in our project. (will covered in the quiz.)