비지니스 로직은 어플서버단에서 다루는게 더 좋다
( procedure로 DB쪽에서 다루는거보다 )
3-tier architecture

| ex) 당근마켓의 비지니스 로직 | ex) 당근마켓의 데이터 |
| 회원가입/ 탈퇴 상품 리스트업 알고리즘 상품정보 업로드 기능 상품 검색 기능 메시지 기능 |
회원정보 상품정보 판매/구매내역 지역 정보 |
stored procedure
주된 사용목적 : 비지니스 로직 구현
stored procedure의 장점


비지니스 로직이 프로시저로 관리되면
위와같은 상황에서
번거롭게 각자 구현을 하거나 수정을 할 필요 없다

어플리케이션 서버, db서버 ( 서로 다른서버임 )
비지니스 로직이 어플리케이션 서버에 있을경우
sql문을 수행 할때마다 네트워크 트래픽 발생
stored procedure 를 쓰기 조심스러운 이유

번거러운 측면들이 생김

비지니스 로직이 프로시저로 관리되면
트래픽이 늘어날경우 cpu, 메모리 사용량이 DB는 급격히 증가하고
cpu혹은 메모리 부하를 쉽게 분산시킬수 없음
( 어플리케이션 서버투입은 DB서버를 추가하는것 보다 간단 )

수정한 비지니스 로직에 버그가 있을경우
stored procedure를 사용하게 되면 모든 서버가 영향을 받지만
어플서버단에서 로직을 구현하면 버그의 영향을 최소화 할수 있음( 어플서버들을 순차적으로 실행 가능 )

쓰레드 풀 or 논 블락 아이오
사용해서
동시에 DB서버로 요청


케시(레디스)를 사용해서 응답속도 향상
어플서버와 DB사이에 케시를 두는것은 많이 사용되는 패턴임
getFromCache(id) : id 에 대한 point가 cache에 있는지 확인
id에 대한 point가 cache에 있는 동안에는
응답속도향상 + db부하도 줄임

'DB > RDB' 카테고리의 다른 글
| MySQL 워크밴치, db복사( data export + data import/restore ) (0) | 2024.07.02 |
|---|---|
| 오라클DB에서 NUMBER 타입 (0) | 2024.01.11 |
| index, Tree (1) | 2023.12.11 |
| ERD( Entity Relationship Diagram ), 비식별 관계 (0) | 2023.10.25 |
| DB 테이블이 사라지다... (0) | 2023.04.27 |