I am having a background of programming Java based web systems with RDBMS. Where I write a lot of JDBC code. Updates, select statements with a lot of joins, inserts etc is a part of my daily job. Most of my time consumed on maintaining the state of database, validating from base tables and after all storing data in some tables. When I found I am consuming too much time over db programming, and JDBC code becoming a boiler plate across many modules. I included an annotation and reflection based ORM. And I feel happy with that. The object-entity mapper gives me the visualization of my storage in the form of objects. So life is currently going on living in relational DBs.
There is a question here. If I design my system in an object oriented way, why I need to store data in a relational database. You design your data model and then you need the overhead of some ORM to store your “objects” in the table. ORM libraries carries a cost. The library that I am using run extensive reflection calls and annotation parsing to compose SQL queries from my data model. It’s superb. Creates a lot of ease for me in handling with database. But it’s a layer itself and has its own cost in terms of performance.
Working in the systems tightly designed to work with RDBMS has made it difficult for me to think my data model independent of any database where I am not going to use joins and a lot of tables etc. I am talking about NoSQL databases. I believe now its a controversy to design your object oriented system and gluing with a relational database. I just want to store my data. Why I need to solve the puzzles of normalization, indexes and other totally DBA related stuff. Where as I am just a web programmer. I just want the simplification of my application data storage. For this I need to change my perspective of designing the system from RDBMS to NoSQL. It’s challenging.
Because I am a JDBC addict.
Picture credit: Simran Jindal’s blog