This article is for beginners who are starting their journey in software development and database looks like a jargon to them .
In this we will cover the intuition for databases , the lingo and types all will be covered in future posts.
Let’s begin by understanding through an example. Lets define our problem:
- We are a online site which allows users to register on our website and registered users can see other registered users and send messages to them.
- Now lets assume we are building this in an era where there are no database software available. So what will we do.
First understand our business requirement:
- When user come on our site and register with user id and password , we should store this somewhere on a persistent storage (hard disk , available after restart).
- We should be able to retrieve this user info from our persistent storage to validate when somebody comes for login with user id and password to check whether its correct or not.
Naive Solution 1 :
We will write user and their password in a file called
"users" in the system in a sequential manner , lets look at the file:
Simple right, now if somebody want to read the userid and password , we just read the entire file check for each row , break it by semicolon
';' and check whether user id given matches the first part of the line (after breaking through semicolon) and second part matches the password provided and one.
But hey there are certain problems in the above structure (i know you have already guessed):
- It will be very slow if user count is large (as one need to check all rows till the point user matches)
- if somebody put semicolon in their user name( ahhh easy we wont allow it , but still there is an extra check)
So lets discuss again :
What we will do we will create multiple files for each alphabet ie user_a for user name starting with a , user_b for user name starting b and so on. this way we will reduce the size by a significant amount.
Hey but still if for a there are thousands of users still it will be a problem. Hmmm still stuck.
Lets think again:
Hey we will create a Binary Search tree type structure in File where each node points to the row on the user file (a pointer to exact location of that user in that file so that we can read that file directly), i am just showing a very very basic version for understanding down below:
Now when we do this , this solves problem to some level.
But there are so many other use cases which you will come through:
- delete some user – now the index is also needs to be managed
- backup of these files if hard disk corrupt
- if now i wants to store the user last name as well in this
There are very very few which i have written , the main point here is that all these things will be require by all companies , so database software try to solve the data persistence and query problems , so companies can focus on their business.
I think by this you got the basic intuition about the databases. Done – now go read about various type of databases which are available and what all purpose they do.