One day, when I became tired of not having a job and having my parents pay my rent, I decided to find a job. The most experience I had from school was with Java, so I was searching for companies looking for Java developers.
Simplity was one of them and in short, phone interview led to a real interview and that led to me getting a job. I was happy as I felt a progress in my career life and was looking forward to gain real company experience.
After some time, it became quite overwhelming going to school and work at the same time. My biggest nightmare became Diploma thesis as I couldn’t imagine when I am going to have the time and energy for it. Since I didn’t like to unnecessarily waste time and didn’t have Hermione’s Time-turner at the time, I decided to propose the idea of doing the thesis for the company IN the company.
Manager liked the idea. With my CTO and Product Development Analyst, we came up with a proper topic. It was taken from the already planned roadmap and it sounds like this: “Research existing algorithms and implement a prototype algorithm for the Glossary’s Business Information Mode initialization”. I am not going to explain what Glossary or BIM is in detail as there are much better sources for this purpose, but I want to give at least a slight peek into my work.
Glossary works with databases in a very close manner. It maps physical table columns with a specific model which represents information from the business view (which is BIM). As companies already use databases including hundreds or thousands of tables and columns, it is very time consuming for a person to map these manually. Could this be solved by making an initialization algorithm which looks into the database and make the most probable associations without the need of a human interaction? My work attempts to answer this and other similar questions.
But before that, I crashed into another problem. At this moment, there is no real support for the “looking in” or discovery of the database schema in Accurity. That’s why we decided I implement this as a part of my diploma thesis. It is designed as a submodule available for all the other modules in Accurity software package.
After some research, I found an open-source tool written in Java that helps me with my problem a lot. Its name is SchemaCrawler and it is developed and maintained by Sualeh Fatehi. SchemaCrawler can discover the database schema and outputs it in a simple Java objects or even human readable formats like text output or diagrams.
As it is generally considered a good approach not to be dependent on external tools or frameworks, my module will not return any SchemaCrawler objects or need such objects to be used as parameters in its API. Instead, this module will map SchemaCrawler objects to objects created by me, which are more simple and carry only information and methods which are needed by our applications. Additionally, this approach offers more layered architecture, which means we can replace SchemaCrawler with other external tool when SchemaCrawler becomes insufficient.
I could continue to explain my work and progress so much longer, but that’s not the point of this article. My real point was to show the opportunity I was given to solve real and interesting problems and at the same time to get closer to that master’s degree I decided to get one day. And for this, I am grateful.
Thank you for your attention and wish me luck in my thesis!