The main problem with relational databases is that any developer implementing an application executing SQL queries should understand how DB works under the hood, why and when to start transactions, and what's the difference between isolation levels. So, that's not enough to just know SQL or some ORM. Read this post if you're not sure what are the proper answers to the above questions. Also, we will discuss some differences between relational database implementations. You'll see, for example, that `REPEATABLE_READ` and `READ_UNCOMMITED` work differently in MySQL and Postgress. The discussion is very practical. There are lots of examples. For instance, we not just talk about pessimistic and optimistic locking but also when it's crucial for your application. I hope this post will clarify all questions that you had about transactions.
Thread racing
We discussed how to start and stop threads in the previous post. This one is about making threads run collaboratively instead of impeding each other.
The hidden life of threads
Many developers know how to start a thread. But what happens next? How to properly stop a thread? What if the thread is blocked? What if the thread started another thread is done, would the child thread be also terminated? When and how to use and re-use threads? Read this post to find answers.