Why learn databases?
My foundation of databases came from studying Computer Science A Level where I learnt about relational databases and learnt SQLite implementation. Since then I have expanded my knowledge as a hobbyist
throughout development which honed my skills and gave me best practice when developing SQL queries. At University, studying engineering, I learnt MATLAB that operates akin to scripting languages. Learning implementations of the following;
- Key-value pairs
- Wide-column stores
- Graphs
- Document-based
I was fascinated with improving the user experience of MATLAB which for many who have used the program before know, is riddled with inefficiencies. One of such inefficiencies for data manipulated in MATLAB comes from how data is
stored and manipulated. I set on a search to find out how I could work to this solution.
Along my search to optimise data manipulation in MATLAB I came across the concept of NoSQL, during my computer science degree I had only briefly
heard of this concept and was very interested in how it could be applied and, more importantly, why?
So what is NoSQL? Well it's non-relational data storeā¦ What's a relational data store?... Well let's look into the history; I recommend
this
article by Laura Shiff, Walker Rowe. To summarise here;
- Oracle implemented an IBM idea called a relational database management system in the 1970s.
- Oracle continue to be the market leader for transactional business applications.
- For new databases, one must decide a relational (SQL) or non-relational (NoSQL) data structure.
So what is the difference?
SQL |
NoSQL |
You use predefined schemas to determine the structure of your data before you begin to work with it. |
Has a dynamic schema for unstructured data. Can be graph-based, document-oriented, column-oriented, or organized as a Key Value store. |
Vertically scalable, which means that you can increase the load on a single server |
Horizontally scalable, which means that they can handle increased traffic simply by adding more servers |
+ SQL is much older and has a much larger community |
Structure: Better for multi-row transactions e.g. accounting |
After many hours of problem-solving and workarounds, I and many others came to the conclusion that if you are trying to use MATLAB for anything other than specific engineering use cases, DON'T! Now having said that, I think MATLAB
is an excellent tool to learn computing concepts in a structured way.
SQL is a good choice for: Any organization that will benefit from a predefined structure and set schemas, particularly if they require multi-row transactions.
Situations when all data must be consistent without leaving room for error, such as with accounting systems.