Backend Development/Database(3)
-
트리거 vs 코드 트랙잭션, 어디서 선을 그을까?
"분명 아무도 업데이트 안 했다는데 값이 바뀌어 있네...?"이미 어느정도 만들어져 있는 서비스 단에서 백엔드를 개발하다보면 이런 미스터리한 경험을 한 번쯤 겪곤합니다. 범인은 종종 데이터베이스 트리거. 반대로 애플리케이션 코드에서 트랙잭션을 직접 열고 일련의 쿼리를 처리하기도 하죠. 둘 다 유용한 도구인데, 어디까지 DB에 맡기고 어디부터는 애플리케이션이 책임져야 할까요?트리거‑트랜잭션이 뭔가요?사실 이 둘을 비교하는 건 잘못된 비교일 수도 있습니다. 트리거 자체에서도 트랙잭션을 열고 사용하기도하고, 트리거 자체는 DB 내에서도 애플리케이션 수준으로 좀더 추상화된 개념이고, 트랙잭션은 DB 내의 기능으로 봐야하기 때문입니다. 그렇기에 이 글에서는 트랜잭션이라는 것은 애플리케이션 코드에서 트랙잭션을 직접..
2025.09.02 -
RDB vs NoSQL: 무엇이 더 나을까?
웹 서비스를 만들다 보면 한 번쯤은 고민하게 되는 주제, 바로 데이터베이스 선택입니다.저는 실무에서 RDB 와 NoSQL 을 모두 사용해봤고, 지금도 상황에 따라 병행해서 쓰고 있습니다.처음엔 "이게 더 낫다!" 하고 단정 짓고 싶었으나, 시간이 지날수록 그런 결론은 별로 현실적이지 않더라고요.그래서 오늘은 제가 겪은 경험을 바탕으로 RDB 와 NoSQL 각각의 특징과 장단점, 그리고 실제로 두 개를 어떻게 함께 쓰고 있는지에 대해 공유하려고 합니다. RDB 의 특징과 장/단점RDB 는 관계형 데이터베이스라고 불리는 구조예요. 대표적으로 MySQL, PostgreSQL, Orcle 같은 것들이 있죠.가장 큰 특징은 데이터 간의 관계를 명확하게 정의할 수 있고, 트랜잭션과 정합성 유지에 강하다는 점이예요...
2025.04.08 -
MySQL에서 `WHERE IN` 쿼리 빈 배열 처리하기: 오류 해결과 최적화
MySQL에서 WHERE IN 구문을 사용할 때 빈 배열을 전달하면 문법 오류가 발생하는 문제를 겪은 적이 있나요? 특히, JavaScript나 TypeORM을 사용할 때 이런 문제가 발생할 수 있습니다. 이 글에서는 빈 배열을 처리할 때 발생하는 오류를 해결하는 방법과, 더 효율적인 방식으로 쿼리를 작성하는 방법을 설명하겠습니다. 이 문제는 GitHub의 TypeORM Issue #2195에서 다뤄졌던 내용이기도 합니다.1. 문제 설명: 빈 배열을 WHERE IN에 전달할 때 발생하는 오류빈 배열을 WHERE IN 구문에 전달하면, MySQL은 문법 오류를 발생시킵니다. 예를 들어, 다음과 같은 쿼리를 생각해봅시다:async function getUsers(userIds: string[]) { con..
2021.11.04