Today, we get a glance of subsystem or the component of the DBMS. DBMS does a lot of work that is hidden to the user.
1. DBMS Engine : do almost everything, just like game engine, responsible for rendering image, physical collision, etc, pretty much 80% of the games. In general, its task is to convert logical I/O to physical I/O request. In other word, it maps stored data as names, or related field.
2. Definition Tools : it create/change/alter DB structures.
3. Processing Interface : Interface for user Apps to access the DBMS functionality. It can be command line, or GUI.(series of library)
4. App Development Tools : This is a set of apps specific to DBMS, library driven.
5. Data dictionary and Data Administration Tools : format of the records.
We then talked about data structure. Data structure is the scheme of storing data in a way that is efficient for later storing and retrieving. There are many data structure and there is no supreme one, which can address many problems but still have performance steady or good. Each data structure is suits for a specific problem.
In Database, they creates key field that is identity records-one that is unique to a record to help resolve physical address. That is key field acts as a virtual address that is an alias of a real address. For example, a person has some of those possible key fields : ID, driver license, email, phone, etc. (Note this is 1 to 1 relationship)
There are normally 3 three ways of organizing records in DB :
A. Use key as a relative block address. For example, you can use index as your key.(1.Ho Duc, 2.Bob Farlan, etc)
B. Hashing : perform an arithmetic operation on the key field and use the result as your relative address.
RAddress = f(key).
+folding : 123456 –> 123 + 456 = 579 = relative address.
+division and remainder(mod function) : divide key by a prime number and use remainder.
+folding with division and remainder.
+Convert text/ string to ascii values, then do either of the above methods.
–> One worst thing might happen is collision that is two or more keys hashed into the same relative address. For example, 123456 and 456123 are hashed into the same relative address : 579. Solution?
– Do hashing again
– OR : simply find the next empty location(real address–> auto generate relative address???).
– OR : do chaining : build a list of the records that hash to that value.
The big picture: