0812
DB
커넥션풀
- 커넥션이란 무엇인가
- 애플리케이션과 데이터베이스 간의 통신을 가능케하는 수단
- 데이터베이스 연결 구조
- 2Tier: 프로그램이 직접 데이터베이스 서버에 접근하여 데이터를 액세스하는 구조
- 3Tier: 프로그램과 데이터베이스 서버 사이에 미들웨어 계층이 존재하는 구조
- 미들웨어: 운영체제와 애플리케이션 사이에서 조정 및 중계 역할을 하는 소프트웨어
- 커넥션 풀은 뭔가
- 커넥션 객체를 미리 만들어서 pool이란 곳에 저장 해두는 기법
- 왜 이렇게 해야되는가: 반복적인 커넥션에 드는 비용을 줄이고, 클라이언트가 DB에 빠르게 접속할 수 있도록 하기 위해서
- 어떤 비용?
- 네트워크 관점 -> handshake 비용 ↓
- DBMS와 애플리케이션의 통신은 TCP/IP. 해당 과정의 모든 요청은 실제 물리적 회선을 거쳐 이뤄짐. 3-way handshake 과정을 매번 반복한다면 비효율적
- 네트워크 관점 -> handshake 비용 ↓
- 그럼 커넥션풀을 무조건 크게 만드는게 좋을까?
- ㄴㄴ 커넥션의 주체는 스레드이기에 얘를 함께 고려해야됨.
- 참고 자료
zustand VS context api
- 둘 다 전역에서 상태를 관리하는건데 뭔 차인가?
- context api를 사용할 시엔 루트 레이아웃에 프로바이더로 감싸줘야된다.
- 아니면 페이지별로 감싸던가.
- 근데 굳이 프로바이더로 감싸지 않고 싶고, 보일러플레이트가 있는데 줄이고 싶다면 zustand를 쓰면 된다.
- 무조건 메모리나 cpu 사용량과 같은 성능 관점에서만 코드를 보는게 아니라
- 유지보수성을 고려해서도 zustand를 선택하는게 이유가 될 수 있다고 생각한다.