There are several transaction isolation levels in the database, but the theory riding in database textbooks is based on ideal transactions. In fact, most of the databases in the world do not implement their ideal transactions and performance is low even if implemented, so it is almost always the case that an isolation level that is not ideal is chosen according to the requirements of the application.

Ideal transactions are so-called SERIALIZABLE, and when multiple transactions are executed, they operate completely independently of each other.

Engineers who do not have database experience design databases without being conscious of this difference, but in fact, there are times when database table designs differ depending on which transaction isolation level you choose. As a common failure, database design was done according to the theory of SERIALIZABLE according to the textbook, the actual database was moving with READ COMMITTED (always reading latest data fixed) sometimes. There is a failure that you used a database that supports only READ COMMITED (the latest data that you read).

Actually, the processing of the program also depends on which one you choose.

If you choose SERIALIZABLE, it is often set to fail when updating the same data between transactions, and you need to implement that process. In the case of READ COMMITTED (always reading latest data fixed), the update itself may seem to have seemingly succeeded, so it will give misunderstandings if you do not explicitly state that it is such behavior in the application creation or application specifications. Also, in the case of READ COMMITTED (always reading latest data confirmed), there is a possibility that the data can not be consistently acquired depending on the design, so when considering consistent data to be displayed, consider database designing it is necessary.

In this way, there are some points to consider in traditional databases, but recently NoSQL has become popular, so it seems that it is less conscious of these differences. Therefore, even a strange behavior occurs in an application, but recently, since it is sometimes possible to make an application without understanding the basic knowledge, it is important to design and implement with fundamental knowledge.