질문
- RDB와 NoSQL은 무엇인가요? 차이점 또는 장단점 위주로 설명해주세요.
- Join의 뜻은 무엇인가요? Inner Join과 Left (Outer) Join에 대한 차이점을 설명해주세요.
준비 답변
- RDB는 관계형 데이터 베이스로 정해진 스키마에 따라 데이터를 테이블화 시켜서 저장하고 외래키를 통해 각각의 데이터들간의 관계를 나타냅니다. 때문에 명확한 데이터 구조를 보장할 수 있고 데이터의 중복을 방지할 수 도 있으면서 테이블간의 Join을 할 수 있는 장점이 있지만 반대로 join을 통해서 쿼리가 복잡해지거나, 데이터 유연성이 부족해 개발단계에서 스키마 변경하기 힘들들 수 있습니다.
NoSQL은 관계형 데이터베이스가 아닌 데이터베이스를 뜻하며 데이터의 스키마가 정해져있지 않습니다. 때문에 데이터간의 관계를 표현할 수 없고, Join도 할 수 없지만 데이터의 유연성으로 데이터 필드를 추가/확장하는데 장점이 있습니다. 하지만 명확한 데이터 구조를 보장할 수 없고, 데이터의 중복될 수 있다는 단점이 있습니다.- Join은 RDB에서 서로 관계를 맺고있는 두개 이상의 테이블을 매칭 시켜 데이터를 검색할 때 사용합니다. Inner Join은 모든 테이블에서 값이 유효한 데이터만 나타내게 되고 left Join은 한쪽 테이블의 모든 데이터를 나타내되 유효하지 않은 값은 null로 표현하게됩니다.
Investment_service - [1] 기획
참여기업
디셈버앤컴퍼니 - 핀트
기업과제
주어진 고객 투자 데이터를 응답하는 REST API 개발
Investment_service
투자 조회 및 입금 서비스
MVP
- 데이터 조회 : 투자화면, 투자상세 화면, 투자종목 화면
- 투자금 입금
- Phase1 : 입금 거래 정보를 서버에 등록
- Phase2 : phase1 에서 등록한 거래정보 검증 후 실제 고객의 자산을 업데이트
과제 해석
1. 고객 관리
고객
은 본인의투자(계좌)
및종목
을 조회할 수 있다.
고객
정보
- 고객명
- 패스워드
- 주요 기능
- 로그인
2. 투자 관리
투자(계좌)
는고객
에 의해 조회될 수 있다.
투자(계좌)
정보
고객
- FK증권사
- FK- 계좌명
- 계좌번호
- 투자원금
- 계좌 총 자산
- 주요 기능
- 투자 조회
- 투자 상세 조회
3. 종목 관리
종목
은 하나의투자(계좌)
에 여러개가 등록될 수 있다. (ManyToMany 관계)
종목
정보
자산그룹
- FK- 종목 이름
- 현재가
- ISIN
투자종목
정보
종목
- FK투자(계좌)
- FK- 보유 수량
- 주요기능
- 보유종목 조회
4. 투자금 입금 관리
입금
은 서버에 등록된 입금거래정보를 의미하며고객
과투자(계좌)
정보를 포함한다. 투
- '투자금 입금 Phase 1'에서 서버 등록시 DB에 생성된다.
- '투자금 입금 Phase 2'에서 검증 실패시 DB에서 삭제된다.
입금
정보
고객
- FK투자(계좌)
- FK- 거래 금액
- 거래정보 식별자
고려항목
1. 고객관리 - 로그인
요구사항에는 포함되어있지 않지만 투자 조회 시 고객이 본인의 투자를 조회한다고 가정하고 JWT를 통한 로그인 기능을 구현하고 고객인증을 통해 본인의 투자(계좌)만을 조회할 수 있도록 계획
2. 고객 - 투자(계좌) 관계
제공된 데이터셋에는 1명의 고객에 1개의 투자(계좌)로만 구성되었지만 구조적으로 1개 이상의 투자(계좌)를 가질 수 있다고 가정하고 FK로 계획, 따라서 투자 조회시 본인이 가진 투자(계좌)를 리스트로 조회할 수 있다.
- 투자 조회 정리
(고객 로그인)
-> 고객 본인의 투자(계좌) 리스트 조회
-> 그중에 하나 선택 시 해당 투자(계좌)에 대한 상세 조회
-> 보유 종목 선택시 해당 투자(계좌)의 종목 리스트 조회
기타 추가사항
1. Batch
제공되는 데이터셋을 매일 최신 데이터로 갱신할 수 있어야함 오류 데이터 구분해야 함
2. 적절한 오류/예외 처리
3. 원본 데이터와 응답 값에 일관성(Consistency) 이 유지
투자금 입금 기능에서 고객의 총 자산을 업데이트할 때 일관성이 유지되도록 구현해야함
ERD