Skip to main content

Gentlest introduction : Databases

Why database

I know a quick google on the definition of database will yield results suck as a repository of information  but what my tutor taught me is that that definition is akin to defining an engine as a collection of metal parts. So the definition must now be more inclined towards why database.

Because database is more than just storing information (because whats the point when you can simply store the information on an excel spreadsheet. Why database then? Its because of what happens next.

Imagine these scenarios (which are perfectly normal when it comes to real world scenarios)

Data

  • Grows
  • Changes over time - and we need to be able to track the changes
  • Should be fast and searchable
  • Should have awesome up-time and be interdependent to other systems
  • should be consistent and protected (secure)
So why database is to be able to solve all the problems that come with data. It is to provide a more organized repository of information. 


Relational Database management Systems Concepts

  1. Entity - its a thing/object
  2. Tables and Columns - generally a table for each entity
  3. Keys - Can be Primary and Foreign
  4. Referential Integrity - Keys must address that!
  5. Schema 
  6. CRUD - Create, Read Update Delete operations
  7. Transactions 
  8. ACID: Atomic (cannot be split) Consistent (Valid then, Valid now) Isolated (Before a transaction is complete changes are not reflected) Durable (When a change is made. It is made)
RDBMS was a pretty cool concept and has been reliable for a very long time but one of the key disadvantages now is that it is not flexible enough for a fast changing world. So what has happened now?

a) Non Relational Database Management Systems (aka No SQL)

This is a more dynamic approach with the added benefits of speed, scaling and cost. For example MongoDB 

b) NewSQL

This is a blen of the old and the new (RDBMS and NRDBMS) bringing Polygot Persistence





Comments

Popular posts from this blog

PRG, PRF, PRP in Cryptography - What are they?

So I have been reading up on my cryptography and I figured I should give out a brief lesson on these three amazing concepts What are they ? a) PRG (Pseudo Random Generator) You probably know the difference between stream and block cipher. One of the main differences between them is key size. Stream ciphers require the key to be of equal length of greater than the plaintext ,   whereas Block Ciphers take a key smaller than the PT and is then expanded. This is the PRG The PRG expands the seed Considerations: Stream Ciphers base on Perfect Secrecy whereas Block Ciphers base on Semantic Security b) PRF (Pseudo Random Function) Lets share a secret- imagine something- you want to authenticate yourself with me by proving that you know a secret that we both share. Here's a possible option i) Possible Option 1:  PRNGs We both seed a PRNG with the shared secret, I pick and then send you some random number i.  You   then have to prove that you know the secret by respon

Django & Firebase - A marriage of awesomeness

Requirements 1) Django (obviously) 2) Pyrebase (pip install pyrebase, you know the drill) So to give a better appreciation- I will first show you the HTML way then I'll proceed to show you how its done in Python. METHOD 1 : The HTML way Then you need to go to the firebase console. To setup a new project. After that you will see a web setup and you select that. Once selected you will see the config. It should be similar to this : Now that you have configured firebase, we now need to select the components which will be needed. depending on what you want for your app- you can now select the modules that you need. For us today, we will do the login authentication. Make sure you include firebase app first, so this is my screen: METHOD 2: Enter Python Open your dev environment and create a file named  pyrebase_settings within your django app folder. In it, you will have the following: Now, lets go to views.py!