취업대비반 9일차(RDB와 NoSQL / 병렬프로그래밍)

LeeJaewon·2023년 4월 6일
0

RDB와 NoSQL은 무엇인가요? 차이점 또는 장단점 위주로 설명해주세요.

RDB(Relational Database Management Systems-관계형 데이터베이스 관리 시스템)와 NoSQL(Not Only SQL)은 서로 다른 두 가지 유형의 데이터베이스 시스템입니다.

RDB는 데이터를 행과 열이 있는 테이블로 구성하고 데이터 무결성을 보장하기 위해 ACID(Atomicity, Consistency, Isolation, and Durability)라는 일련의 제약 조건을 적용하는 관계형 모델을 기반으로 합니다. RDB는 많은 애플리케이션에서 널리 사용되며 수십 년 동안 사용되었습니다. RDB의 예로는 MySQL, Oracle 및 SQL Server가 있습니다.

반면에 NoSQL은 대량의 비정형 또는 반정형 데이터를 처리하도록 설계된 새로운 유형의 데이터베이스 시스템입니다. NoSQL 데이터베이스는 문서 기반, 키-값, 그래프 기반 및 열 계열을 비롯한 여러 범주로 분류할 수 있습니다. NoSQL 데이터베이스는 웹 애플리케이션, 빅 데이터 및 실시간 시스템에서 자주 사용됩니다. NoSQL 데이터베이스의 예로는 MongoDB, Cassandra 및 Redis가 있습니다.

RDB와 NoSQL 데이터베이스의 주요 차이점은 다음과 같습니다.

  1. 데이터 모델: RDB는 관계형 데이터 모델을 기반으로 합니다. 즉, 데이터가 행과 열이 있는 테이블로 구성됩니다. 반면 NoSQL 데이터베이스는 문서 기반, 키-값, 그래프 기반 또는 열 계열과 같은 다양한 데이터 모델을 사용합니다. 이는 NoSQL 데이터베이스가 데이터 구조 측면에서 더 유연하고 구조화되지 않은 데이터를 더 효율적으로 처리할 수 있음을 의미합니다.
  2. 확장성: RDB는 수직 확장이 가능하도록 설계되었습니다. 즉, 증가된 트래픽이나 더 큰 데이터 볼륨을 처리하려면 더 강력한 하드웨어가 필요합니다. 반면에 NoSQL 데이터베이스는 수평 확장이 가능하도록 설계되었습니다. 즉, 분산 시스템에 더 많은 서버를 추가하여 증가된 트래픽이나 더 큰 데이터 볼륨을 처리할 수 있습니다.
  3. ACID 준수: RDB는 ACID를 준수합니다. 즉, 데이터 무결성을 보장하기 위해 일련의 제약 조건을 적용합니다. 반면에 NoSQL 데이터베이스는 최종 일관성을 유지하도록 설계되는 경우가 많습니다. 즉, 확장성과 성능 향상을 위해 즉각적인 일관성을 희생해야 합니다.
  4. 쿼리 언어: RDB는 SQL(Structured Query Language)을 사용하여 데이터를 쿼리하고 조작하는 반면 NoSQL 데이터베이스는 데이터 모델에 따라 다양한 쿼리 언어 또는 API를 사용합니다.

RDB와 NoSQL 데이터베이스 중에서 선택하는 것은 애플리케이션의 특정 요구 사항에 따라 다릅니다. RDB는 데이터 무결성, 일관성 및 트랜잭션이 필요한 애플리케이션에 적합하며 NoSQL 데이터베이스는 확장성, 유연성 및 실시간 데이터 처리가 필요한 애플리케이션에 더 적합합니다.

병렬 프로그래밍에 대해 설명해주세요.

병렬 프로그래밍은 여러 프로세서 또는 코어를 사용하여 동시에 계산을 수행하여 프로그램 실행 속도를 높이는 것을 말합니다. 병렬 프로그래밍은 많은 계산과 데이터 처리가 필요한 복잡한 문제를 해결하는 데 사용되며 과학 컴퓨팅, 빅 데이터 분석, 기계 학습과 같은 많은 분야에서 필수적입니다.

병렬 프로그래밍은 공유 메모리 및 분산 메모리 아키텍처를 포함한 다양한 접근 방식을 통해 달성할 수 있습니다. 공유 메모리 아키텍처에서 여러 프로세서 또는 코어는 단일 메모리 공간을 공유하고 공유 변수 또는 동기화 프리미티브를 통해 통신합니다. 분산 메모리 아키텍처에서는 여러 프로세서 또는 코어가 네트워크를 통해 연결되고 메시지 전달을 통해 통신합니다.

병렬 프로그램을 작성하려면 개발자는 기본 하드웨어를 추상화하고 동시성 및 동기화를 위한 높은 수준의 추상화를 제공하는 프로그래밍 모델 및 프레임워크를 사용해야 합니다. 병렬 프로그래밍 모델 및 프레임워크의 예로는 OpenMP, MPI, CUDA 및 OpenCL이 있습니다.

병렬 프로그래밍에는 더 빠른 프로그램 실행, 처리량 증가, 확장성 향상 등 여러 가지 장점이 있습니다. 그러나 병렬 프로그래밍은 경쟁 조건, 교착 상태, 버그 및 성능 문제로 이어질 수 있는 데이터 종속성과 같은 문제가 발생할 수 있습니다. 따라서 병렬 프로그래밍은 정확하고 효율적인 실행을 보장하기 위해 신중한 설계, 테스트 및 디버깅이 필요합니다.

profile
한 걸음 한 걸음 꾸준히

0개의 댓글