++/CS

[TIL] CS공부 9일차

writtenbyrla 2024. 3. 14. 14:47

RDBMS index가 무엇인가요? 그렇다면 Unique Key, Foreign key는 index인가요?

Index란?
한 마디로 목차와 같은 역할을 합니다. index는 데이터베이스에서 효율적으로 데이터를 검색하기 위해 사용되는 데이터 구조로, 데이터 위치를 색인하여 기억하는 기술입니다. 

장점 
Index를 사용하지 않으면 데이터를 검색할 때 테이블 전체를 순서대로 탐색을 해야 합니다.
Index를 사용함으로써 특정 조건에 만족하는 행을 빠르게 찾을 수 있어 검색 속도가 향상됩니다. 

단점
인덱스를 담아놓기 위한 저장 공간이 별도로 필요하여 추가적인 저장 공간을 소비하게 됩니다.
데이터베이스에서 데이터 변경이 발생할 때마다 인덱스도 함께 갱신되어 관리되어야 하므로 인덱스가 많아질수록 부담이 커질 수 있습니다.

Unique Key Foreign Key는 Index와 직접적으로 같은 것은 아니지만 Index와 밀접하게 관련이 있습니다. 
제약 조건이지만 Index를 자동으로 생성하고 데이터 무결성을 보장할 수 있으므로 Index와 같은 역할을 한다고 볼 수 있습니다.

++
Unique Key
는 값의 유일성을 보장하여 중복값을 허용하지 않아 테이블 내에서 각 행을 고유하게 식별할 수 있도록 합니다.
Foreign Key
는 다른 테이블의 기본 키(Primary Key)와 연결되어 데이터 무결성을 유지하고 테이블 간의 관계를 정의합니다.

 

 

 

 

 

 


 

 

 

 

 

 

 

댓글 기능을 구현하기 위해 포스트 Entity댓글 Entity를 어떻게 설계하셨는지 자세히 설명해주세요.

포스트 Entity와 댓글 Entity는 1:N의 관계로, 하나의 게시글은 여러 댓글을 가질 수 있습니다.

ERD 설계 시 댓글 테이블이 포스트 테이블의 Primary Key를 참조할 수 있도록 Foreign Key를 설정하였습니다.

따라서 포스트 Entity에는 @OneToMany 애노테이션을 사용하여 댓글의 List를 필드로 가집니다.
댓글 Entity의 관점에서는 N:1 관계이므로 @ManyToOne 애노테이션을 사용하여 포스트 Entity를 필드로 가집니다.

또한 포스트가 삭제되면 댓글도 함께 삭제되어야 하므로 포스트 Entity의 댓글 리스트 필드에 Casecade를 적용하였습니다.

 

 

 

 

 

 

 


 

 

 

 

 

 

 

Spring에서 Multipart 타입을 어떻게 처리하는지 아는 만큼 설명해주세요.

설정
Spring의 경우 XML 파일이나 Config 클래스를 통해 멀티파트 처리를 위한 MultipartResolver를 설정합니다.
Spring boot는 starter에 의존성이 추가되어 있으므로 별도로 작업할 필요가 없습니다.
properties 파일에 용량을 지정할 수 있고, 로컬에 파일을 저장하는 경우에는 저장 경로를 지정할 수 있습니다. 

처리 과정
1. 클라이언트가 저장하고자 하는 파일을 multipart/form-data 타입으로 HTTP POST 요청합니다.
2. 요청이 서버에 도착하면 MultipartResolver가 요청을 해석하여 멀티파트 데이터를 추출합니다.
3. Controller에서
 - @RequestParam이나 @RequestPart 애노테이션을 통해 Multipart 타입의 파라미터 값을 받아
 - 파일을 저장할 URL 뒤에 파일 이름을 붙여 String 형태로 저장 경로를 만들고
 - 기존에 설정한 로컬 저장소나 클라우드에 파일을 업로드한 후 해당 경로를 데이터베이스에 저장합니다.

 

 

 

 

 


 

 

 

 

 

멀티미디어를 저장하는 다른 저장소는 뭐가 있었는지 알아보셨나요?

로컬 파일 시스템
가장 일반적인 방법으로 멀티미디어 파일을 서버의 로컬 파일 시스템에 저장하는 방식입니다. 
구현이 쉽고 빠르지만 여러 서버 간 파일 공유 및 관리가 어려워 확장성 측면에서 선택하지 않았습니다.

클라우드 스토리지
인터넷의 별도 저장소를 두고 파일을 저장하고 관리하는 방식입니다.
데이터 손실을 최소화하여 안정적으로 관리하기 편하며, 접근 제어 및 인증 기능을 제공하여 데이터의 안전성을 보장합니다.

Google Cloud Storage
자동 다중 영역 복제, 라이프사이클 관리, 버전 관리 등의 기능을 갖춘 객체 스토리지를 제공합니다.

Amazon S3
확장성과 내구성을 위해 설계된 객체 스토리지 서비스로 사용자가 데이터를 저장하고 검색할 수 있으며 비용을 최적화하기 위해 다양한 스토리지 클래스를 제공합니다.
가장 많이 사용되며 다른 AWS 서비스와의 통합이 용이하고 IAM 사용자 관리를 통해 세밀한 권한 관리가 가능하여 보안적인 측면에서도 사용하기 적합하다고 판단하였습니다.

 

 

 

'++ > CS' 카테고리의 다른 글

[TIL] CS공부 11일차  (1) 2024.03.18
[TIL] CS공부 10일차  (1) 2024.03.15
[TIL] CS공부 8일차  (0) 2024.03.13
[TIL] CS공부 7일차  (0) 2024.03.12
[TIL] CS공부 6일차  (0) 2024.03.11