목차
1. RDB와 NoSQL은 무엇인가요? 차이점 또는 장단점 위주로 설명해주세요.
1. RDB(Relation DataBase, RDB)란?
RDB(Relation DataBase)는 관계형 데이터베이스 입니다. 행과 열을 이용해서 데이터를 저장하고, 공간에 형식이 정해져 있습니다.
RDB는 구조화된 테이블을 가지고 있으며, 객체를 이용해 데이터베이스에 저장합니다. 그래서 사전에 데이터베이스 스키마가 정의되어 있어야 합니다.
또한 객체 간의 관계를 이용해 프로그래밍을 구성하는데, 테이블 역시 객체 간의 키를 이용해 테이블을 연결해서 사용합니다.
2. NoSQL(Not Only SQL, NoSQL)란?
NoSQL(Not only SQL)은 비관계형 데이터베이스 입니다. RDB와 다르게 다른 형식으로 데이터를 저장하며 변화하는 요구 사항에 빠르게 적응이 가능해서 범용성이 좋습니다.
NoSQL은 사전에 데이터베이스를 정의하지 않아도 데이터를 저장할 수 있으며, 작업을 진행하는 동시에 빠르게 데이터를 정의하는 방식으로 빠르게 데이터를 작성하고 저장할 수 있습니다.
NoSQL의 장점은 다음과 같습니다.
- 1. 유연성
- 데이터베이스의 스키마에 구애받지 않기에 유연하게 다양한 형식의 데이터의 처리가 가능함.
- 2. 확장성
- 서버를 증설해 확장하는 방식의 DB를 늘리는 것이 아니라 상업용 하드웨어를 사용해 확장이 가능함. 그래서 증가한 트래픽을 지원하고 다운타임 없이 수요를 충족시킬 수 있음.
- 3. 고성능
- NoSQL의 가장 큰 장점으로 데이터의 양이나 트래픽이 증가할 때 유연하고 빠른 처리가 가능하며 안정적으로 제공할 수 있음
- 4. 가용성
- 여러 서버, 데이터 센터, 클라우드 리소스 전반의 데이터를 자동으로 복제하기에 사용자의 위치와 상관없이 사용자 대기 시간이 최소화 되며 데이터베이스 관리 부담을 줄이는 데에도 효과적
- 5. 고도의 가능성
- NoSQL은 데이터 저장 수요가 많은 분산형 데이터 저장소를 위해 설계되었는데, 이 특성 덕에 다양한 영역의 애플리케이션을 처리하는데 유리함
2-2 NoSQL 정리
RDBMS에 비해 저렴한 비용으로 분산 처리와 병렬 처리가 가능(장점)
큰 데이터의 처리에 효과적(장점)
가변적인 구조로 데이터를 저장할 수 있어 유연성이 좋음(장점)
데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능 (단점)
많은 인덱스를 사용하려면 충분한 하드웨어(메모리)가 필요 (단점)
데이터의 일관성이 항상 보장되지 않음 (단점)
2-3 NoSQL vs RDB
구분 | NoSQL | RDBMS |
데이터의 무결성을 보장하는가? | x | o |
확장에 유리한가? | o | x |
join이 가능한가? | x | o |
대용량 처리에 유리한가? | o | x |
정형화 된 데이터를 처리하는가? | x | o |
개발 목적 | 애자일 및 확장 및 수정 가능성에 초점 | 데이터의 중복에 초점 |
대표적인 예시 | MongoDB, DynamoDB | Oracle, Mysql, PostgreSQL |
스키마의 특징 | 유연한 데이터 구조 | 엄격하고 정적인 데이터 구조 |
NoSQL은 정확한 데이터 구조가 정해지지 않은 경우, 데이터의 update가 자주 이루어지지 않고, 조회가 많은 경우, 데이터의 양이 많은 경우 유리해서 사용하기에 적합
RDB는 데이터의 구조가 명확해서 변경될 여지가 많이 없고, 데이터의 중복이 없기에 update가 잦은 시스템이서 유리함
2. 병렬 프로그래밍에 대해 설명해주세요
병렬 프로그래밍은 하나의 프로그래밍이 동시에 여러 작업을 수행할 수 있도록 하는 프로그래밍 기법입니다.
이를 통해 더욱 빠르게 프로그램의 실행이 가능하고, 대용량 데이터나 복잡한 계산등을 처리할 때 유용하며 여러 개의 프로세스를 활용해 최대한 성능을 끌어올릴 수 있습니다.
1. 멀티 스레드(Multi Thread)
하나의 프로세스 속에 여러개의 스레드를 생성해서, 각 스레드에 작업을 부여함으로써 작업의 처리량이 늘어나는데, 빠른 속도로 원하는 task를 수행할 수 있다는 점이 있다. 또한 각 스레드가 맡은 작업만 하면 되니까 작업이 단순해진다. ( 복잡도가 낮아짐) 이로 인해 효율적으로 자원의 분배가 가능하고 효율성이 증가한다는 점 그러나 하나의 스레드에 문제가 생기면 자원을 공유하고 있는 다른 스레드에 문제가 생김
2. 멀티 프로세스(Multi Process)
하나의 프로그램을 여러 개의 프로세스로 나눠서 작업을 분배, 독입적인 프로세스를 이용하기에 높은 안정성과 병렬 처리가 가능함. 하나의 프로세스에 문제가 생기더라도 다른 프로세스에 영향을 미치지 않음.
'기술면접 관련 및 참고하기' 카테고리의 다른 글
기술 면접 스터디 - 8회차 ( 시간 복잡도와 공간복잡도, 오버라이딩, 오버로딩) (0) | 2023.04.06 |
---|---|
기술 면접 스터디 7회차 - ( Stack, Queue, Array, LinkedList, 절차지향, 객체지향, 함수형 프로그래밍) (0) | 2023.04.05 |
기술 면접 스터디 6회차 - ( WAS와 Web Server, 트랜잭션 ) (0) | 2023.04.05 |
기술 면접 스터디 5일 -( 프로세스와 스레드, TCP와 UDP) (0) | 2023.03.31 |
GC (Garbage Collection)이란 무엇인가? (0) | 2023.03.31 |