본문 바로가기

Backend/DB

(5)
null은 언제 허용해야 하는가? null 값은 pain of ass 어떻게 관리할지 정리해보자 계속)
mysql - like문 특정 문자를 포함한 데이터를 가져오고싶을때 like문을 쓴다. 최근에 지역을 구분하여 데이터를 가져오는 처리를 하면서 like문 쓰는 것을 봤는데 성능이슈가 없을까 하는 생각이 들었다. 아니나 다를까 성능이슈에 대한 질문이 많았는데... 계속)
db의 유효성 검사기준을 확인하자 - sql_mode dev에서는 잘 되는 작업이 live 서버에서 db 에러를 뱉는 경우가 생겼다. 이는 디비에 저장되는 데이터에 대한 유효성 검사(validation check) 범위의 문제였는데, dev와 live의 검사범위가 달라서 발생하는 문제였다. live 서버의 유효성 검사 기준이 훨씬 까다로웠기 때문에 dev 서버의 테스트는 모두 통과했으나 live 서버에서 오류를 발생시킨 것이다. dev에서 미리 문제를 발견해야 정상이지만 이 경우, 역설적이게도 live에서 오류를 발견하게 되는 셈이다. db 데이터의 유효성 검사는 SELECT @@sql_mode; 쿼리문으로 확인 할 수 있으며, sql 공식 문서에서 각 조건의 유효성 검증 기준과 설명이 나와있으니 참고하자.
why ORM? 왜 ORM을 쓰는걸까? orm(object relational mapping) 객체의 관계적 매핑이라는 뜻을 가지고 있는데 이게 무슨 의미일까? (보통 매핑이란 개념은 기존에 가지고 있던 개념을 다른 개념과 관계짓는 것을 의미한다.) 이를 이해하기 위해서는 객체-관계 미스매치 라는 개념을 이해해야 근본적인 이해를 할 수 있다. 객체-관계 미스매치라는 개념은 객체지향 패러다임과 관계형 패러다임이 다르다는 의미다. 객체지향은 객체(object)로 모든것을 설명한다. 관계형db의 경우 테이블로 설명하지만 서로의 관계를 표현하기위해 테이블이나 외래키를 이용한다. 이는 객체지향으로 표현하기 힘든 부분이다. orm은 이런 관계형을 객체지향을 패러다임으로 쓸 수있게끔 만들어준다. 관계형 db의 본질적 존재이유(데이터..
Json in DB DB의 컬럼 안에 json 파일이 있을 경우, 어플리케이션의 성능이 떨어진다(속도가 느려지는등..) 빠르게 개발을 진행해야 할 경우, 컬럼 안에 Json을 써서 데이터를 파싱해서 가져오는 형식을 쓰는 것 같다. 그런데 Json 파싱해서 데이터를 가져오면서 어떤 프로세스를 거치기에 성능이 떨어지는지 궁금해졌다. 이를 알아보자.. https://stackoverflow.com/questions/33660866/native-json-support-in-mysql-5-7-what-are-the-pros-and-cons-of-json-data-type -> 현재 회사에서 일한지 7개월쯤 되고나니 알게된 사실 json string이 db안에 있기 때문에 문제가 되는것이 아니고 db 구조가 정규화 되어있지 않았기 때..