- RDBMS vs NOSQL에 대해 설명
- Redis란
- Redis와 Memcached의 차이
- DB락
- 뷰(View)
- 스키마란?
1. RDBMS vs NOSQL에 대해 설명
Question
RDBMS와 Nosql의 차이점은 무엇인가요?
RDBMS는 관계형 데이터베이스로 데이터를 테이블 형식으로 저장하며 정형화된 스키마를 따릅니다. 대표적으로 SQL 언어를 사용하며, 트랜잭션의 ACID 특성을 보장합니다.
NoSQL은 다양한 데이터 모델을 지원하며 유연한 스키마를 가지고 있어 대규모 분산 데이터와 비정형 데이터를 처리하는데 적합합니다. 확장성이 뛰어나고, 높은 성능과 유연성을 제공합니다.
Question
RDBMS와 NoSQL의 장단점은 무엇인가요?
RDBMS는 정형화된 스키마로 일관성과 데이터 무결성이 유지되며, 안전한 트랜잭션을 보장하고 SQL을 사용해 복잡한 조인과 쿼리를 지원하지만 확장이 어렵고 스키마 변경이 복잡하다는 단점이 있습니다.
NoSQL은 대규모 데이터를 효율적으로 처리할 수 있고 비정형 데이터와 스키마 변경이 빠르지만 트랜잭션 보장이 약한 단점이 있습니다.
Question
RDBMS를 사용하는것이 적합한 시나리오와 NoSQL을 사용하는 것이 적합한 시나리오는 무엇인가요?
RDBMS는 은행 시스템, 주문 관리 등 데이터의 일관성과 복잡한 트랜잭션이 필요한 경우에 적합하고 NoSQL은 소셜 미디어 플랫폼, 로그 데이터 저장, 실시간 분석 등 빠르게 변화하는 데이터를 처리할 때 유리합니다.
RDBMS는 수직적 확장(더 큰 서버로 교체하여 성능 향상), NoSQL은 수평적 확장(더 많은 서버 추가)
2. Redis란
Redis
인메모리 데이터 구조 저장소로 캐싱, 세션 저장, 메시지 큐, 분산락 등 빠른 데이터 액세스가 필요한 응용 프로그램에서 사용되는 데이터 저장소
Question
Redis의 데이터 구조에는 어떤 것들이 있나요?
주요 데이터 구조로는 문자열, 리스트, 셋, sorted set, 해시, 비트맵 등등이 있습니다.
Question
Redis의 TTL 기능은 무엇인가요?
Redis TTL 기능은 만료시간을 설정할 수 있게 해주는 기능입니다. TTL이 설정된 데이터는 만료되면 자동으로 삭제됩니다.
Question
Redis의 영속성 옵션에는 무엇이 있나요?
RDB 스냅샷, AOF 방식이 있습니다 RDB는 특정 간격마다 메모리의 데이터를 디스크에 덤프하며 AOF는 모든 쓰기 명령을 로그에 기록하여 세밀한 복구가 가능합니다.
3. Redis와 Memcached의 차이점
Question
Redis와 Memcached의 차이점은 무엇인가요?
Redis와 Memcached는 모두 인메모리 데이터 저장소이지만, Redis는 다양한 데이터 구조와 영속성 옵션을 제공합니다. 반면에 Memcached는 단순한 키-값 저장소로 더 단순한 사용 사례에 적합하며 영속성 지원을 하지 않습니다. Redis는 단일 스레드 기반이며 Memcached는 멀티 스레드 기능을 지원합니다.
4. DB 락
Question
DB 락이란 무엇인가요?
다중 트랜잭션이 동시에 데이터베이스 리소스에 접근할 때 데이터의 무결성과 일관성 보장을 위해 사용되는 매커니즘입니다. 리소스의 경쟁상태를 방지하고 데이터를 보호합니다.
Question
락의 종류에는 어떤 것이 있나요?
공유 락, 베타 락, 내재 락 등이 있습니다. 공유 락은 다른 트랜잭션이 읽기 작업을 수행할 수 있도록 허용하지만 쓰기 작업은 불가능합니다. 베타 락은 특정 트랜잭션이 락을 보유하는 동안 다른 트랜잭션은 리소스를 읽거나 쓸 수 없습니다. 내재 락은 사용자가 요청한 범위에 대해 락을 걸 수 있는지 여부를 빠르게 파악하기 위해 사용되는 락 입니다.
Question
데드락은 무엇이며 해결방법은 무엇인가요?
교착상태 중 하나로 두개 이상의 트랜잭션이 서로가 필요한 자원을 잠근 상태에서 발생합니다. 해결 방법으로는 타임아웃을 설정해 일정 시간이 지나면 트랜잭션을 중단시키는 방법과 트랜잭션들이 리소스에 접근하는 순서를 정의하는 방법 등이 있습니다.
Question
낙관적 락과 비관적 락의 차이점은 무엇인가요?
낙관적 락은 충돌이 거의 발생하지 않을 것으로 가정하고 락을 걸지 않으며 트랜잭션 커밋시 변경 여부를 확인합니다. 비관적 락은 충돌이 자주 발생할 것으로 가정하고 트랜잭션이 데이터를 읽는 시점에 락을 걸어 다른 트랜잭션이 접근하지 못하도록 합니다.
Question
분산락이란 무엇인가요?
분산락은 분산 시스템에서 여러 프로세스가 동일한 자원에 접근할 때 동시성을 제어하여 데이터의 일관성과 무결성을 보장하는 매커니즘입니다.
5. 뷰(View)
Question
데이터베이스 뷰란 무엇인가요?
뷰는 하나 이상의 테이블의 결과 집합을 기반으로 하는 가상 테이블입니다. 데이터를 저장하지 않고 select 쿼리의 결과를 저장한 것처럼 작동합니다.
Question
뷰의 장/단점 에 대해 설명해주세요
뷰를 사용하면 특정 열이나 행만 보여주도록 제한하여 민감한 데이터를 숨길 수 있고 자주 사용되는 쿼리를 캡슐화하여 간단하게 사용할 수 있습니다. 하지만 대규모 데이터 집합에서 성능이 떨어질 수 있습니다.
6. 스키마란?
Question
스키마란 무엇인가요?
스키마는 데이터베이스의 구조를 정의하는 개념입니다. 테이블, 뷰, 인덱스, 트리거등의 객체들을 포함합니다.
Question
스키마와 데이터베이스의 차이점은 무엇인가요?
데이터베이스는 실제 데이터를 저장하는 물리적인 저장소이고, 스키마는 데이터베이스 내 데이터가 어떻게 구성되고 연관되는지 설명하는 구조입니다.
Question
스키마의 주요 역할은 무엇인가요?
데이터베이스 객체들이 어떻게 구성되고 관계가 설정될지 정의합니다.
Question
스키마를 분리하는 이유는 무엇인가요?
서로 다른 스키마에 접근 권한을 별도로 설정하여 보안을 강화할 수 있습니다. 데이터 베이스 관리가 용이해지고 각 스키마 내에서 독립적인 작업을 처리해 모듈화할 수 있습니다.