hyperskill - MongoDB VS Relational databases 영어 원문
우리 중 몇몇은 지난 수십년 동안 데이터베이스가
데이터 수집, 저장, 처리의 주요한 도구였다는 사실에 질문을 할 겁니다.
지수적으로 증가하는 데이터와 이를 처리해야 하는 중요성은,
가장 빠르며 효율적인 방식으로, 데이터베이스 도구들은,
더 도전적인 업무, 유저와 비즈니스에 대한 요청에 적응하기 위해 더 빠르고 빠르게 진행되었습니다.
우리의 이전 주제에서, 우리는 이미 SQL 관계형 데이터베이스와 그에 관련된 관리 시스템을 공부했습니다.
또한 우리는 NoSQL 접근법의 도움으로 엄청난 양의 데이터를 처리하는 새로운 접근법을 탐색했습니다.
NoSQL 접근법 중에서 우리는 MongoDB 를 예제로 가져왔었습니다.
이번 주제에서, 우리는 RDBMS 와 Mongo DB 에 대해 비교 할 것이며,
두 가지 DBMS 의 모든 장점과 단점의 명확한 청사진을 가져 올 것 입니다.
마지막으로, 우리는 어떤 특정 상황에서 RDBMS 보다 Mongo DB 를 선택하는 것이 더 효율적인지,
그 반대의 상황도 가정하며 알아 내 볼 것 입니다.
MongoDB main features - MongoDB 주요 기능들
MongoDB 는 문서를 저장하는 NoSQL 데이터베이스에서,
가장 유명한 예제입니다.
최근 상당한 비즈니스들이 NoSQL MS 를 선택하는 횟수가 빠르게 증가했습니다.
그래서 무엇이 새로운 유형의 데이터 처리가 성공으로 이끈 비밀이었을까요?
우리는 MongoDB 가 스키마 없는 데이터베이스라는 것을 기억하며,
MongoDB 가 "key-value" 쌍으로 유연하게 사용하는,
문서를 저장하는 데이터 저장소라는 것을 기억합니다.
위의 언급은 이러한 데이터베이스에서 고정된 구조를 정의 할 수 없다는 것을 의미합니다.
또 다른 말로, MongoDB 가 가진 유저 친화적인 인터페이스가,
개발자와 관리자에게도 맞춰져 있으며, 사용하기 쉬우며, 공부하기도 쉽다는 것입니다.
게다가, 이러한 유형의 DB 는,
속도와 저장에 있어 유저의 필요를 만족하는,
높은 신뢰성과 효율적인 도구임을 스스로 증명했습니다.
이에 대한 확장 능력 때문에, MongoDB 는 빠르게 개발되는 비즈니스에 대한 완벽한 결정이 되었습니다.
이는 빠른 반복적 개발을 지원하여 거대한 팀 멤버들이 쉽게 협력하도록 도와줍니다.
MongoDB 와 이의 비-관계적 구조는 빅데이터 처리에 넓게 사용됩니다.
다른 혜택의 영역으로는,
고객 분석, 콘텐츠 관리 시스템, 실시간 데이터 일관성, 제품 데이터 관리 등등
이 있습니다.
당신이 보다시피, MongoDB 는 다양한 혜택이 있습니다.
하지만, 전체적인 사진을 가지기 위해서,
이에 대한 제한 요소들도 고려해야 합니다 :
- MongoDB 는 통합을 지원하지 않으므로, 당신이 얼마나 데이터에 접근하려는지에 따라,
당신은 정기적으로 문서를 업데이트 해야 합니다. - 이 DB 구조는 "키-값" 쌍 때문에 메모리를 소모하는 경향이 있으며, 이는 과도한 데이터로 이끌 수 있습니다.
- 문서의 제한은 16MB 로 제한되어 있습니다.
- NoSQL 관리 시스템에서 ACID 원칙은 엄격하게 지켜지지 않으므로,
복잡한 트랜잭션은 심지어 더 복잡해질 수 있습니다.
ACID :
- Atomicity : 원자성
- Consistency : 일관성
- Isolation : 격리
- Durability : 내구성
Main features of RDB
우리 스스로 NoSQL 데이터베이스에 대한 기본적인 원칙들에 친숙해 진 이후에,
RDB 가 운영되는 주요 개념을 기억 해 봅시다.
일반적으로 대부분의 개방형 코드를 사용하는 RDBMS 내부의 관계형 DB 함수는,
줄과 열로 구성되어 있는 테이블에 데이터를 저장합니다.
RDBMS 들은 SQL(structural query language) 을 사용하여 데이터를 접근하거나, 전송합니다.
RDBMS 는 창설 이후, 엄청난 유저의 커뮤니티를 얻었으며,
넓은 영역의 테스트 절차를 밣았으며, 상당한 안정성을 얻었습니다.
RDBMS 의 서로 다른 유형으로는,
MySQL, Postgres, Microsoft SQL Server, 등등이 있습니다.
이들은 주로 엄청난 양의 방문자를 가지고 있는 중대하며 중요한 웹사이트에서 사용됩니다.
예를 들어 이커머스 어플리케이션, 데이터 저장 어플리케이션에서 로그를 가지고 있는 데 사용됩니다.
하지만, RDB (Relational DataBase) 에도 확실한 제한이 있습니다.
이러한 제한이 NoSQL 데이터베이스의 어쩔 수 없는 빠른 전파를 만들었습니다.
- 엄청나게 많은 데이터가 저장된 테이블에서,
만약 당신의 데이터가 이미 존재하는 테이블에 너무나 거대하다면,
이를 적용하기 위해 당신의 DB 의 구조를 바꿔야 합니다. - DB 는 여러 서로들로 다양해 지는데, 이는 관리하기 복잡할 수 있습니다.
- RDBMS 는 확장성 이슈 때문에 거대한 데이터베이스가 될 때 효율적이지 못하게 됩니다.
RDB vs MongoDB table - RDB 와 MongoDB 테이블 차이
우리가 이전에 공부한 모든 정보를 요약하기 위해서,
RDB 와 MongoDB 의 비교 테이블을 살펴 봅시다.
Data Model : 데이터 모델
MongoDB | RDB |
---|---|
"key-value" 와 같은 역동적 스키마를 가진 데이터 저장소에 대한 서로 다른 모델들은 문서, 그래프, 넓은 컬럼 등등이 있습니다. 이 저장소 모델은 높은 용량과 확장성에 최적화 되어 있습니다. 이러한 접근법은 데이터 업로드에 더 유연합니다. |
데이터는 평준화되고, 줄과 열로 구성된 테이블로 전송됩니다. 인덱스와 테이블 연관관계를 가진 모든 요소들이 미리 정의된 스키마를 가지고 있습니다. 이러한 구조는 연결된 데이터와 테이블 관계들을 지킵니다. |
Data Representation : 데이터 표현
MongoDB | RDB | ||||||
각각의 레코드에 대한 key-value 가 일치하는 JSON 을 지원합니다.
|
데이터는 줄 내부의 레코드에 저장됩니다.
|
Data Accessibility/API : 데이터 접근성/API
MongoDB | MongoDB |
객체 중심의 API 가 정해진 구조 없이 기록하게 해 줍니다. 어플리케이션의 주요 섹션을 사용함으로서, 유저가 "키-값" 쌍 을 통해, 컬럼의 집합 혹은 부분적으로 구조화 된, 일련의 객체를 담거나, 어플리케이션 속성을 담은 문서 검색을 구현합니다. MongoDB 는 데이터 추출을 위해 MQL(Mongo Query languagge) 를 사용합니다. |
데이터 레코드를 요청 혹은 선택하는 것은 **SQL** 을 사용하여 만들어집니다. 이러한 요청들은 RDB 에 의해 분석되고 처리됩니다. |
Data 선택:
|
Data 선택:
|
Data 삽입:
|
Data 삽입:
|
Data 업데이트:
|
Data 업데이트:
|
Scalability and replication : 확장성과 복제
MongoDB | RDB |
---|---|
수평적 확장에 더 알맞습니다. MongoDB 는 전통적인 RDBMS 보다 더 확장적입니다. MongoDB 를 포함한 대부분의 NoSQL 시스템은, 높은 속도의 성능을 유지하는 반면, 당신의 데이터베이스를 동시에 여러 대의 기기에서 저장하는 능력이 좋습니다. NoSQL 데이터베이스는 내부적으로 복제 지원, 샤딩 을 가지고 있습니다., shading 이란, 여러대의 기기에 데이터를 분산하는 방법론입니다. MongoDB 는 당신이 원하는 어디던 넣을 수 있는 안정적인 생산성을 보장하는 만능 DB 입니다. 동시에, 필요사항들이 상대적으로 낮으므로, 강력한 서버에서도, 가상 기기에서도, 클라우드 서비스에서도 구동 할 수 있게 해 줍니다. |
수직 확장을 암시합니다. 관계형 데이터베이스는 말 그대로 하드웨어적 컴퓨팅 파워를 증가시켜 확장하거나, 읽기 워크로드를 위해 분리된 복사본을 추가합니다. 성능은 디스크 하위시트메에 의존합니다. 쿼리의 최적화, 인덱스와 테이블 구조는 주로 최대 성능을 위해 필요로 합니다. |
ACID properties : ACID 속성
MongoDB | RDB |
---|---|
CAP 이론을 중심으로 한다. (Consistency - 일관성, Availability - 가용성, Partition - 분산) NoSQL 디비는 주로 엄격한 ACID 속성 필요사항을 절충하는 것을 제안하여, 확장할 수 있는 더 유연한 데이터 모델을 제공합니다. 이러한 요소들은 NoSQL 이 단일 인스턴스를 넘어서 확장 할 필요가 있는 상황에서, 높은 처리량과 낮은 레이턴시에 대해 좋은 선택입니다. |
이는 ACID 속성을 중심으로 합니다. (Atomicity - 원자성, Consistency - 일관성, Isolation - 격리성, Durability - 내구성) Atomicity 는 트랜잭션이 완전히 완료되었거나, 전부 완료되지 않았음을 의미합니다. Consistency 는 트랜잭션이 끝나자 마자, 데이터는 데이터베이스의 스키마를 따라야 한다는 것을 의미합니다. Isolation 은 동시에 일어난 트랜잭션을 각각으로부터 분리되어 실행되어야 한다는 것을 의미합니다. Durability 예상하지 못한 시스템 오류나 정전 후에, 마지막에 저장된 상태를 복구할 수 있는 능력을 말합니다. |
when to use MongoDB or RDB - MongoDB 혹은 RDB 사용 예시
만약에 이런 상황이라면, RDB 는 좋은 선택입니다 :
당신의 비즈니스가 막 시작했거나, 당신의 데이터베이스가 아주 큰 규모가 아닐 경우
당신의 데이터 구조가 긴 시간동안 변경되지 않거나, 스키마를 고정 한 경우
높은 트랜잭션 속도를 가질 경우
데이터 보안이 당신의 최소 우선순위일 경우
최고의 지원을 필요로 할 경우. MySQL 은 긴 시간동안 존재했으므로,
평범한 문제의 해결 방법을 찾기 훨씬 더 쉽습니다.다른 말로, RDB 는 여러 라인을 가진 트랜잭션을 필요로 하는 레거시(옛날) 어플리케이션과 작업 할 경우,
혹은 명확한 스키마를 가진 구조화 된 데이터를 가진 경우 좋은 선택입니다.
그렇다면, 반대로 MongoDB 는 이런 상황에 좋습니다 :
- 당신이 자동화 사이에서 높은 데이터 가용성을 필요로 하거나, 즉각적인 데이터 복구가 필요 한 경우
- 당신이 불안정한 스키마와 작업하고 있고, 스키마 마이그레이션의 비용을 줄이고 싶어 할 경우
- 당신의 서비스가 클라우드를 기반으로 할 경우
- 개발 속도를 올리고 싶은 경우
MongoDB 는 만약 당신이 실시간 분석, 모바일 앱, IoT(Internet of Things) 등등과 작업 할 때 올바른 선택이며,
당신이 구조화 되어있거나, 구조화 되어 있지 않은 데이터 속에서도 빠르게 성장 할 수 있습니다.
Conclusion - 결론
요약하여, 현재는 정보화의 시대 속에서,
비즈니스는 증가하는 빅 데이터와 협업하는 새로운 도전 과제와 직면했습니다.
밑에 있는 여러 질문들은 작업 할 만한 데이터베이스 구조를 선택하는 데 도움을 줍니다 :
- 당신이 작업할 데이터의 유형은 무엇인가요?
- 당신이 분석하게 될 데이터의 양은 얼마나 되나요?
- 당신의 데이터베이스를 유지보스 하기 위해 붙잡는 리소스는 무엇인가요?
만약 당신의 데이터가 더 구조적이고 관계적이며,
소형 혹은 중간 데이터 집합으로 이루어져 있으며, 당신이 높은 트래픽의 웹 사이트를 사용하고 싶다면,
RDBMS 가 적절하게 당신의 최고의 선택지가 될 수 있습니다.
하지만, 만약 당신이 서로 다른 소스로부터 데이터를 수집하며,
더 유연한 업로드 방식을 찾고 있으며,
만약 당신의 데이터 집합들이 거대하며 제한되지 않은 공간을 요구하며,
반드시 서로 다른 기기에 데이터를 저장하는 능력이 있어야 한다면,
더 좋은 성능을 위해 NoSQL 로 변화하는 것이 적절합니다.
words to remember
What is more : 더군다나, 게다가
proved : 입증됨, 알다, 시험하다
reliable : 믿을 수 있는, 의지할 수 있는
tends : 경향, 지키다, ~하는 경향이 있다, ~으로 향하다
vast : 대단한, 거대한, 막대한, 굉장한, 광활한 넓이
inevitable : 불가피한, 피할 수 없는, 그렇게 될 수 밖에 없는
theorem : 정리, 원리
throughput : 처리량
instant : 즉각적인
sufficient : 충분한, 할 만큼의 능력이 있는, 할 능력이 있는, 충분
possess : 붙잡다, 소유하다, ~에 붙다
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
Conditional statements and test checks - bash if-else 조건문 (0) | 2024.08.17 |
---|---|
Archiving and extracting data - 데이터 보관 및 추출 (0) | 2024.08.15 |
Best practices for bash scripts - bash 스크립트를 연습하는 최고의 방법 (1) | 2024.08.13 |
Case statement and argument parsing - 케이스 문법과 인수 파싱(shift) (0) | 2024.08.11 |
Arithmetic operations - bash에서 수학 연산 사용하기 (0) | 2024.08.10 |