기술면접

기술면접 : 데이터베이스(2/2)

더덕2 2023. 4. 5. 13:06

1. Redis에 대해서 간단히 설명해주세요.

Redis는 인메모리 DB이고 key와 value형식으로 데이터를 저장할 수 있습니다. 

NOSQL입니다.

값을 저장할 때 여러 자료구조를 지원하고 String,Set,Sorted Set, Hash, List 등의 타입을 지원합니다.

1개의 싱글스레드로 수행이 되며 서버하나에 여러개의 서버를 띄울 수도 있습니다. 값을 읽어오는 속도가 빠르기 때문에

토큰인증을 할 때 사용을 해봤습니다.

주로 캐싱처리를하여 애플리케이션의 성능을 높일 수 있습니다.

 

2. Redis와 Memcached의 차이에 대해서 설명해주세요.

Redis와 Memcached는 같은 인메모리 방식 DB이고 Key Value를 통해 값을 저장하게 됩니다.

크게봤을 때 Redis가 더 많은 기능을 제공하고있습니다.

차이점은 Redis는 싱글스레드로 동작하고 Memcached는 멀티스레드로 동작이됩니다.

Redis는 다양한 자료구조로 저장할 수 있고 Memcached는 문자열로 저장됩니다.

Redis보다 Memcached의 메모리 사용량이 더 낮습니다.


3. Elastic Search에 대해서 간단히 설명해주세요.

Elastic Search는 오픈소스검색엔진이며 

역색인 구조로 데이터를 저장하기 때문에 검색시 빠른 처리속도를 보여줍니다.

사용하려면

ELK스택이라는 Logstash,kibana등을 같이 사용합니다.

Logstash가 데이터를 수집해서 Elastic Search에 전달하게 되고 Elastic Search에서 빠른 검색을 통해 데이터를 검색하면  kibana가 화면에 보여주는 구조입니다.


4. Elastic Search의 인덱스구조와 RDBMS의 인덱스 구조의 차이에 대해 설명해주세요.

Elastic Search는 역색인(Inverted-index)구조로 저장을 하며 특정 키워드를 기준으로 저장을하게됩니다.

예를 들면 책뒷부분의 색인을 생각할 수 있습니다.

RDBMS의 인덱스는 범위 스캔을 하게되는데 인덱스가 적용된 컬럼의 테이블을 따로 파일로 저장하여 검색효율을 높입니다. 가장 많이 사용되는 구조는 B-tree 구조이며 인덱스를 저장하는 블럭들이 트리구조를 이루고 있습니다.

 

5. Elastic Search의 키워드 검색과 RDBMS의 LIKE 검색의 차이에 대해 설명해주세요.

Elastic Search의 키워드 검색은 데이터를 저장할 때  역직렬화하여 저장하기 때문에 키워드별로 검색을 할 수있으며

랭킹알고리즘을 통해서 유사한순서로 검색됩니다.

RDBMS의 LIKE검색은 전체탐색을 통해서 키워드를 찾아내기 때문에 상대적으로 느립니다.


6. MongoDB에 대해서 간단히 설명해주세요.

NoSQL이며 키 벨류로 JSON형태로 데이터를 저장하고 보여줍니다.

하지만 내부에서는 BSON형태로 데이터를 저장하고 활용하고 있습니다.

이유는 JSON의 텍스트 기반으로 구문분석이 느리고 공간효율성에대한 문제등에 의해서

컴퓨터가 빠르게 읽을 수 있는 binary형태로 저장이 되게 됩니다.


7. CAP 이론과, Eventual Consistency에 대해서 설명해주세요.

분산 컴퓨팅 시스템에서 보장이되어야하는 이론이 CAP이론입니다.

NoSQL은 대표적인 분산데이터베이스 시스템입니다.

CAP이론에서 

C는 Consistency(일관성) : ACID의 일관성과는 약간 다릅니다. 모든 노드가 같은 시간에 같은 데이터를 보여줘야 한다는 것입니다.

A는 Availability(가용성) : 모든 동작에 대한 응답이 리턴되어야 합니다.

P는 Partition Tolerance(분할 허용성) : 시스템 일부가 네트워크에서 연결이 끊기더라도 동작해야 합니다.

이며 분산 환경에서 모두를 만족하는 시스템은 없다는 뜻입니다.

 

Eventual Consistency는 이 Consistency를 보장해주지 못하기 때문에 나온 개념으로, Consistency를 완전히 보장하지는 않지만, 결과적으로 언젠가는 Conssistency가 보장됨을 의미합니다.

 

'기술면접' 카테고리의 다른 글

기술면접 : 운영체제(1/2)  (0) 2023.04.12
기술면접 : 암호학/보안(1/1)  (0) 2023.04.07
기술면접:데이터베이스(1/2)  (0) 2023.04.03
기술면접:스프링+JPA(3/3)  (0) 2023.03.31
기술면접 : 스프링 + JPA (2/3)  (0) 2023.03.29