데이터베이스 기초 입문 - 시스템 설계 08

시스템 설계-시스템 설계 08 - 데이터베이스 기초 입문 - 데이터베이스 기초 입문 -hogantech-hoganblab

데이터베이스란 무엇입니까?

이름에서 알 수 있듯이 데이터베이스는 데이터가 저장되는 장소입니다. 그렇다면 데이터베이스를 사용하지 않고 소프트웨어 시스템을 개발할 수 있는 방법은 없을까요? 작은 정적 텍스트만 있는 초기 정적 웹 페이지라면 데이터베이스가 없어도 문제가 없습니다. 그러나 현대 시스템이 점점 더 복잡해지고 애플리케이션이 더욱 풍부해짐에 따라 우리는 데이터를 저장하기 위해 데이터베이스를 사용해야 합니다. 예: YouTube에는 다양한 유형과 크기의 데이터를 저장하기 위해 크고 복잡한 데이터베이스가 필요합니다.

물론 데이터베이스에는 더 정확한 정의도 있습니다. 다음은 Oracle에서 발췌한 정의입니다.

데이터베이스는 일반적으로 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보 또는 데이터의 조직화된 모음입니다. 데이터베이스는 일반적으로 데이터베이스 관리 시스템(DBMS)에 의해 제어됩니다. 데이터 및 DBMS와 관련 애플리케이션을 데이터베이스 시스템이라고 하며, 간단히 데이터베이스라고도 합니다.

오늘날 실행되는 가장 일반적인 유형의 데이터베이스에 있는 데이터는 일반적으로 데이터 처리 및 쿼리 효율성을 높이기 위해 일련의 테이블의 행과 열로 모델링됩니다. 그러면 데이터에 쉽게 액세스하고, 관리하고, 수정하고, 업데이트하고, 제어하고 구성할 수 있습니다. 대부분의 데이터베이스는 SQL(구조적 쿼리 언어)을 사용하여 데이터를 쓰고 쿼리합니다.

데이터베이스에는 기본적으로 SQL(관계형 데이터베이스)과 NoSQL(비관계형 데이터베이스)의 두 가지 유형이 있는데, 그중에서도 관계형 데이터베이스가 구조화된 데이터라는 이름을 많이 들어보셨을 거라 생각합니다. 관계형 모델에서 직접적이고 직관적인 방식으로 데이터 테이블에 데이터를 표시합니다. 비관계형 데이터베이스는 상대적으로 분리되어 있고 특정 데이터 모델을 위해 구축된 비정형 데이터이며, 최신 애플리케이션에서 쉽게 확장할 수 있는 유연한 구조로 데이터를 저장합니다. NoSQL 데이터베이스는 개발 용이성, 기능 및 규모에 따른 성능으로 인정받고 있습니다.

데이터베이스의 장점

데이터베이스는 회사의 직원 정보, 고객 정보, 거래 기록 등 모든 정보를 저장하기 때문에 모든 회사와 조직에 매우 중요합니다.

기본적으로 데이터베이스에는 다음과 같은 장점이 있습니다.

빅 데이터 관리: 리포지토리를 사용하면 다른 도구로는 불가능한 대량의 데이터를 쉽게 처리할 수 있습니다.

데이터 일관성: 언제든지 올바른 데이터를 검색할 수 있습니다.

데이터 보안: 데이터베이스는 데이터 보안을 보장하고 승인된 사용자만 데이터에 액세스할 수 있도록 허용합니다.

데이터 무결성: 데이터베이스는 데이터에 대한 다양한 제한을 사용하여 데이터 무결성을 보장합니다.

시스템 가용성: 데이터베이스를 다른 서버에 복제(복제)하고 동시에 업데이트할 수 있습니다.

확장성: 데이터베이스를 분할(Partition)하여 단일 노드의 부하를 관리하므로 시스템 확장성이 향상됩니다.

ACID는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 내구성(Durability)이라는 네 단어로 구성됩니다. 이 네 가지 특성은 데이터를 가져오거나 업데이트할 때 프로세스가 올바른지 확인하는 데 필요한 기능이기도 합니다.

데이터베이스 시스템에서 트랜잭션(Transaction)은 은행 이체, 원래 계좌에서 돈을 인출하고 상대방 계좌에 돈을 추가하는 등 데이터베이스 작업으로 구성된 완전한 논리를 의미합니다. 이 두 가지 데이터베이스 작업입니다. 이러한 프로세스는 완전한 논리를 구성하며 분리할 수 없습니다. 다음으로 ACID에 대해 간단히 설명하겠습니다.

원자성

원자 보장 트랜잭션은 분할할 수 없는 단위로 처리됩니다. 즉, 트랜잭션의 모든 작업이 성공해야 하며 그렇지 않으면 어느 작업도 성공할 수 없습니다. 이는 데이터 불일치가 발생하는 것을 방지하는 데 중요합니다.

일관성

일관성은 데이터베이스에 대한 모든 업데이트의 일관성을 보장합니다. 즉, 여러 트랜잭션이 동시에 데이터에 액세스하더라도 데이터베이스가 유효한 상태로 유지되어야 함을 의미합니다.

격리

격리는 트랜잭션이 서로 독립적으로 실행되도록 보장합니다. 즉, 트랜잭션 작업이 다른 트랜잭션의 작업을 방해할 수 없음을 의미합니다. 이 기능은 데이터 손상 발생을 방지하는 데 매우 중요합니다.

내구성

내구성은 일단 트랜잭션이 제출되면 그 효과가 영구적임을 보장합니다. 즉, 정전이나 기타 시스템 오류가 발생하더라도 트랜잭션으로 인해 데이터베이스에 적용된 변경 사항이 손실되지 않습니다.

관계형 데이터베이스

ACID의 특성에 대해 이야기한 후 다시 데이터베이스에 대해 설명하겠습니다. 관계형 데이터베이스의 인기와 지배력은 단순성, 견고성, 유연성, 성능, 확장성 및 공통 데이터 관리의 상대적 용이성을 포함한 여러 가지 이유에서 비롯됩니다.

관계형 데이터베이스는 기본적으로 ACID(원자성, 일관성, 격리 및 내구성) 속성을 제공하므로 본질적으로 좋은 데이터베이스 속성입니다. 아직도 우리를 기억해 시스템 설계에 추상화 적용 - 시스템 설계 02 추상화라는 개념이 언급되는데, ACID 역시 추상적인 개념으로 데이터 상호 작용 작업의 복잡성을 단순화합니다. 물론 관계형 데이터베이스가 주류가 되는 이유에는 단순성, 안정성, 유연성, 성능, 확장성 및 호환성도 포함됩니다.

널리 사용되는 일부 DBMS는 다음과 같습니다.

MySQL, Oracle 데이터베이스, Microsoft SQL Server, IBM DB2, Postgres, SQLite.

관계형 데이터베이스의 예

첫째, 관계형 데이터베이스(RDB)는 테이블, 열, 열로 정보를 구성합니다. RDB는 데이터 테이블을 집계하여 정보 간의 연관성이나 관계를 설정할 수 있으므로 데이터 포인트 간의 관계를 쉽게 이해하고 심층적인 분석을 얻을 수 있습니다.

원래 1970년대 IBM의 EF Codd가 개발한 관련 데이터베이스를 사용하면 공통 속성을 사용하여 모든 데이터 테이블을 다른 데이터 테이블과 연결할 수 있습니다. 관련 데이터베이스는 회사가 데이터 연결을 설정하는 데 도움이 될 수 있는 Excel 컬렉션으로 생각할 수 있습니다. Excel과 마찬가지로 각 스프레드시트는 정보를 저장하는 데이터 테이블이며 데이터 열(속성)과 데이터 열(레코드)로 표시됩니다.

Google 클라우드 예시

system-design-시스템 설계 08 - 데이터베이스 기초 입문 - 데이터베이스 기초 소개 -hogantech-hoganblab-01

"고객" 데이터 테이블에는 고객 관련 정보가 포함되어 있습니다.

고객 ID(기본 키), 고객 이름, 청구서 수신 주소, 배송 주소

"고객" 데이터 테이블에서 고객 ID는 관련 데이터베이스에서 고객을 식별하는 데 특별히 사용되는 기본 키 집합입니다. 고객 ID는 고객마다 다릅니다.

"주문" 데이터 테이블에는 주문과 관련된 거래 정보가 포함되어 있습니다.

주문 ID(기본 키), 고객 ID(기본 키), 주문 날짜, 배송 날짜, 주문 상태

소규모 회사에서 두 개의 데이터 테이블을 사용하여 제품 주문을 처리한다고 가정해 보겠습니다. 첫 번째 데이터는 고객 번호, 고객 이름, 주소, 배송 주소, 청구 주소, 전화 번호 및 기타 연락처 정보를 기록하는 고객 정보 테이블을 나타냅니다. 이때 기본 키는 고객 번호로 설정할 수 있습니다. 이 데이터는 고유하고 반복되지 않기 때문입니다.

두 번째 테이블은 고객 번호, 주문 번호, 주문한 제품, 수량, 크기 및 색상을 포함한 제품 주문 정보를 기록하는 고객 주문 데이터 테이블을 나타냅니다. 이때 기본키는 주문번호로 설정할 수 있으며 반복되지 않습니다. 그런 다음 공통 인덱스 키인 고객 번호를 사용하여 두 데이터 테이블을 연결합니다. 마지막으로 회사의 주문 처리 애플리케이션이 데이터베이스에 주문을 제출하면 데이터베이스는 고객 주문 테이블에 액세스하여 올바른 제품 주문 정보를 추출하고 테이블의 고객 번호를 사용하여 고객의 청구 및 배송 정보를 쿼리할 수 있습니다. 화물정보 테이블입니다.

관계형 데이터베이스(SQL)를 선택하는 이유는 무엇입니까?

일반적으로 데이터베이스 형식이 지정되지 않으면 개발 중에 기본적으로 관계형 데이터베이스가 사용됩니다. 장점 중에는 ACID 트랜잭션 및 관련 프로그래밍의 추상화가 있습니다. 이러한 추상적인 개념은 소프트웨어 엔지니어가 데이터베이스를 사용하는 데 매우 편리할 것입니다. 그 장점에 대해 별도로 이야기해 보겠습니다.

관계형 데이터베이스의 장점

유연성: SQL의 맥락에서 데이터 정의 언어(DDL)의 전체 이름은 (데이터 정의 언어)입니다. DDL은 테이블, 열, 테이블 이름 변경 및 기타 변경 사항을 포함하여 데이터베이스를 수정할 수 있는 유연성을 제공합니다.

중복성 감소: 데이터 중복성은 데이터베이스에 동일한 데이터나 정보가 여러 번 나타나는 것을 의미합니다. 일반 파일 시스템에서는 파일 간의 연결이 없기 때문에 때로는 한 정보가 여러 파일에 나타나는 경우가 있습니다. 관계형 데이터베이스의 가장 큰 장점 중 하나는 중복성 감소입니다. 데이터 중복을 제거하는 목적은 데이터 일관성을 유지하기 위해 업데이트 중에 발생할 수 있는 문제를 방지하는 것입니다.

동시성: 동시성은 매우 중요한 기능입니다. 동시성이 높은 상황에서는 많은 사용자가 동시에 데이터를 읽고 씁니다. 따라서 데이터 불일치를 피하기 위해 이러한 작업을 조정해야 합니다. 예를 들어 여러 사람이 동시에 항공권을 예약한 경우 동시 쓰기를 피해야 합니다. 관계형 데이터베이스의 동시성은 데이터에 대한 트랜잭션 액세스를 통해 처리됩니다.

백업 및 복구: 관계형 데이터베이스는 데이터 상태가 항상 일관되도록 보장합니다. 대부분의 클라우드 기반 관계형 데이터베이스는 데이터 손실을 방지하고 복구 프로세스를 더 쉽고 빠르게 만들기 위해 지속적인 미러링을 수행합니다.

관계형 데이터베이스의 단점

임피던스 불일치

여기서 먼저 주의깊게 설명할 필요가 있습니다. 임피던스 불일치란 무엇입니까? 데이터베이스 임피던스 불일치는 다양한 소프트웨어 구성 요소 또는 시스템에서 사용되는 데이터 구조와 모델 간의 일관성이 부족할 때 소프트웨어 개발에서 흔히 발생하는 문제를 나타냅니다.

데이터베이스에서 임피던스 불일치는 객체 지향 프로그래밍(OOP) 모델과 관계형 데이터베이스 관리 시스템(DBMS)에서 사용하는 관계형 모델 간의 차이를 나타냅니다.

소위 불일치의 의미를 간략하게 설명하기 위해 여기에서 그림을 찾았습니다. 그림의 위쪽 부분은 트리, 배열, 연결 목록, 해시... 등이 될 수 있는 메모리 데이터 구조이며, 오른쪽 아래 부분은 연관 데이터베이스 범례입니다. 두 가지 데이터 저장 방식이 일치하지 않으면 데이터베이스 운영에 문제가 발생한다. 임피던스 불일치(Impedance Mismatch)도 연관 데이터베이스의 중요한 단점입니다.

system-design-시스템 설계 08 - 데이터베이스 기초 입문 - 데이터베이스 기초 소개 -hogantech-hoganblab-02

비관계형 데이터베이스

NoSQL이란 무엇입니까?

NoSQL 수단 SQL 뿐만 아니라는 비관계형 데이터베이스입니다. 즉, 데이터를 저장하는 데 전통적인 관계형 데이터베이스 모델을 사용하지 않는다는 의미입니다. NoSQL 데이터베이스는 일반적으로 키-값 쌍, 파일, 그래프 또는 넓은 테이블과 같은 보다 유연하고 확장 가능한 데이터 모델을 사용합니다.

NoSQL 데이터베이스의 유형

키-값 데이터베이스

키-값 데이터베이스는 해시 테이블과 같은 키-값 방법을 사용하여 키-값 쌍의 형태로 데이터를 저장합니다. 키는 기본 키 역할을 하며 값은 간단한 스칼라 값부터 복잡한 객체까지 다양할 수 있습니다. 일반적인 키-값 데이터베이스에는 Amazon DynamoDB, Redis 및 Memcached DB가 포함됩니다.

사용 시나리오:

  1. 캐싱: 키-값 데이터베이스는 자주 사용되는 데이터에 대한 빠른 액세스를 제공하기 위해 캐시로 사용되는 경우가 많습니다. 예를 들어 웹 애플리케이션은 키-값 데이터베이스를 사용하여 페이지 콘텐츠를 캐시할 수 있습니다.
  2. 세션 데이터: 키-값 데이터베이스를 사용하여 사용자 로그인 정보 및 장바구니 내용과 같은 세션 데이터를 저장할 수 있습니다.
  3. 구성 데이터: 키-값 데이터베이스는 애플리케이션 설정 및 시스템 매개변수와 같은 구성 데이터를 저장하는 데 사용될 수 있습니다.
  4. 카운터: 키-값 데이터베이스는 웹사이트 트래픽 통계와 같은 카운터를 저장하는 데 사용될 수 있습니다.

문서 데이터베이스

XML, JSON, BSON 및 기타 형식의 문서는 모두 파일 데이터베이스의 저장 형식입니다. 이러한 파일 파일은 맵과 컬렉션을 포함할 수 있는 특수 데이터 구조로 구성됩니다. 일반적인 파일 데이터베이스에는 MongoDB 및 Firestore가 포함됩니다.

사용 시나리오:

  1. 콘텐츠 관리 시스템(CMS): CMS는 문서 데이터베이스를 사용하여 기사, 페이지, 미디어 파일과 같은 콘텐츠를 저장합니다.
  2. 전자상거래 웹사이트: 전자상거래 웹사이트는 파일 데이터베이스를 사용하여 제품 정보, 고객 정보, 주문 정보를 저장합니다.
  3. 소셜 미디어 애플리케이션: 소셜 미디어 애플리케이션은 문서 데이터베이스를 사용하여 사용자 데이터, 게시물 및 댓글을 저장합니다.
  4. 애플리케이션 로그: 애플리케이션 로그는 파일 데이터베이스를 사용하여 애플리케이션 로그 데이터를 저장합니다.
  5. 사물 인터넷(IoT) 장치: 사물 인터넷(IoT) 장치는 파일 데이터베이스를 사용하여 센서 데이터와 장치 상태를 저장합니다.

그래프 데이터베이스

그래프 데이터베이스는 그래프를 사용하여 데이터를 저장합니다. 노드는 엔터티를 나타내고 엣지는 엔터티 간의 관계를 나타냅니다.

사용 시나리오:

  1. 소셜 네트워크 분석: 소셜 네트워크 분석은 그래프 라이브러리를 사용하여 친구, 가족, 동료 등 소셜 네트워크의 관계를 분석합니다.
  2. 추천 시스템: 추천 시스템은 그래프 데이터베이스를 사용하여 사용자의 관심 사항과 다른 사용자와의 관계를 기반으로 사용자에게 제품이나 서비스를 추천합니다.
  3. 사기 탐지: 사기 탐지는 그래프 데이터베이스를 사용하여 알려진 사기꾼과 관련된 거래 식별과 같은 사기 행위를 탐지합니다.
  4. 지식 그래프: 지식 그래프는 그래프 데이터베이스를 사용하여 엔터티, 개념 및 이들 간의 관계와 같은 실제 세계에 대한 지식을 저장하고 쿼리합니다.
  5. 공급망 관리: 공급망 관리는 그래프 라이브러리를 사용하여 공급업체, 제조업체 및 소매업체 간의 공급망 관계를 관리합니다.

컬럼형 데이터베이스

컬럼형 데이터베이스 행이 아닌 열에 데이터를 저장하는 데이터베이스입니다. 데이터를 행에 저장하는 기존 관계형 데이터베이스와 달리 열형 데이터베이스는 많은 수의 동일한 값을 저장할 수 있기 때문에 데이터를 효과적으로 압축할 수 있습니다. 일반적인 열 기반 데이터베이스에는 HBase, Hypertable 및 Amazon Redshift가 포함됩니다.

사용 시나리오:

  1. 과학 컴퓨팅: 과학 컴퓨팅은 열 기반 데이터베이스를 사용하여 과학 데이터를 분석합니다.
  2. 재무 분석: 재무 분석에서는 열 형식 데이터베이스를 사용하여 재무 데이터를 분석합니다.
  3. 광고 분석: 광고 분석은 열 기반 데이터베이스를 사용하여 광고 캠페인의 성과를 분석합니다.

NoSQL 데이터베이스의 장점

단순한 설계: 관계형 데이터베이스와 달리 NoSQL은 조인 작업이 필요한 여러 테이블이 아닌 단일 파일에 모든 직원 데이터를 저장하는 등 임피던스 불일치를 처리할 필요가 없습니다. 이 전략을 사용하면 코드 작성, 디버깅, 유지 관리가 더 간단하고 쉬워집니다.

수평적 확장: 첫째, NoSQL은 대규모 클러스터에서 데이터베이스를 실행할 수 있는 기능 때문에 선호됩니다. NoSQL 데이터베이스는 일반적으로 여러 노드에 데이터를 분산하고 노드 간에 데이터와 쿼리의 균형을 자동으로 조정합니다.

가용성: 데이터 가용성을 높이기 위해 애플리케이션 가동 중지 시간 없이 노드 교체를 수행할 수 있습니다. 대부분의 비관계형 데이터베이스 변형은 고가용성 및 재해 복구를 보장하기 위해 데이터 복제를 지원합니다.

저렴한 비용: 많은 RDBMS는 라이센스 비용이 매우 많이 드는 반면, 많은 NoSQL 데이터베이스는 오픈 소스이며 무료로 사용할 수 있습니다. 마찬가지로 일부 RDBMS는 고가의 독점 하드웨어 및 스토리지 시스템에 의존하는 반면, NoSQL 데이터베이스는 저렴한 상용 서버 클러스터를 사용하는 경우가 많습니다.

NoSQL 데이터베이스 단점

표준화 부족: NoSQL은 특정 표준을 준수하지 않습니다. 예를 들어, 한 유형의 NoSQL 데이터베이스에서 다른 유형으로 애플리케이션을 변환하는 것은 어렵습니다.

일관성: NoSQL 데이터베이스에 오류가 발생하면 일관성과 가용성을 고려해야 하며, 비관계형 데이터베이스는 데이터 무결성이 양호하지 않으며 데이터의 일관성이 강력하지 않습니다.

복잡성:NoSQL 데이터베이스의 모델과 인터페이스는 관계형 데이터베이스보다 더 복잡할 수 있습니다. 비관계형 데이터베이스에는 여러 가지 유형이 있지만 관계형 데이터베이스의 인터페이스는 크게 다르지 않습니다.

관계형 데이터베이스와 비관계형 데이터베이스 중에서 선택하는 방법은 무엇입니까?

많은 요소가 선택에 영향을 미치며 다음 표에서는 관계형 데이터베이스와 비관계형 데이터베이스를 비교합니다.

관계형 데이터베이스비관계형 데이터베이스
구조적: 데이터가 테이블에 저장되며 각 테이블은 행과 열로 구성됩니다. 행은 데이터 레코드를 나타내고 열은 데이터 속성을 나타냅니다. 데이터는 미리 정의된 형식을 따라야 합니다.유연성: JSON, BSON, 그래픽을 포함한 다양한 형식으로 데이터를 저장할 수 있습니다. 데이터 구조는 구조화, 반구조화 또는 비구조화될 수 있습니다.
OLTP(온라인 트랜잭션 처리)에 적합: 주문, 트랜잭션, 로그인 등 빈번한 읽기 및 쓰기 작업을 처리하는 데 적합합니다.OLAP(온라인 분석 처리)에 적합: 판매 동향, 고객 행동, 시장 분석 등 복잡한 쿼리 및 분석을 처리하는 데 능숙합니다.
확장이 더 어려워짐: 데이터 볼륨이 증가하면 성능이 저하될 수 있습니다. 더 많은 데이터를 처리하려면 더 많은 서버를 추가해야 합니다.손쉬운 확장: 성능 병목 현상 없이 더 많은 노드를 추가하여 더 많은 데이터를 처리할 수 있습니다.
ACID는 원자성, 일관성, 격리 및 내구성을 보장합니다. 여러 사용자가 동시에 액세스하는 경우에도 데이터는 항상 일관됩니다.ACID 보장은 없을 수 있습니다. 여러 노드 간에 데이터가 복제되는 경우와 같은 특정 상황에서는 데이터가 일관되지 않을 수 있습니다.
모델과 인터페이스는 더 복잡할 수 있습니다. SQL과 같은 쿼리 언어에 대한 지식이 필요합니다.모델과 인터페이스는 일반적으로 더 간단합니다. 사용하고 이해하기 쉽습니다.
성숙한 기술: 수십 년 동안 사용되어 왔으며 광범위한 지원과 도구를 갖추고 있습니다.최신 기술: 아직 개발 중이며 성숙한 도구와 지원이 부족할 수 있습니다.

관련 기사

로드 밸런서 설명 – 시스템 설계 07

DNS란 무엇입니까? 도메인 이름 시스템 소개 - 시스템 설계 06

시스템 설계 구성 요소 빌딩 블록 소개 - 시스템 설계 05

봉투뒷면 계산 – 시스템 설계 04

소프트웨어 설계의 비기능적 특징 – 시스템 설계 03

시스템 설계에 추상화 적용 - 시스템 설계 02

현대 시스템 설계 입문 - 시스템 설계 01

인용하다

관계형 데이터베이스란 무엇입니까?

관계형 데이터베이스에서 매핑할 때 임피던스 불일치

ko_KR한국어