
데이터베이스란?
데이터베이스는 정보를 저장할 수 있는 큰 컨테이너와 같습니다. 파일 캐비넷과 같은 물리적 컨테이너이거나 컴퓨터 파일과 같은 디지털 컨테이너일 수 있습니다. 데이터베이스는 학생 성적, 고객 정보 또는 소셜 미디어 게시물과 같은 모든 유형의 정보를 저장하는 데 사용할 수 있습니다.
RDBMS란 무엇입니까?
RDBMS는 관계형 데이터베이스 관리 시스템을 나타냅니다.
구획이 있는 장난감 상자에 다양한 유형의 장난감이 들어 있는 것과 유사하게 구조화된 방식으로 정보를 저장하도록 설계된 일종의 데이터베이스입니다.
관계형 데이터베이스의 각 테이블에 정보 저장을 위한 특정 열이 있는 것처럼 장난감 상자의 각 구획에는 특정 크기와 모양이 있습니다.
예를 들어 학생에 대한 정보를 저장하는 RDBMS의 테이블에는 학생의 이름, 나이 및 성적에 대한 열이 있을 수 있습니다.
+----+----------+--------+
| ID | Name | City |
+----+----------+--------+
| 1 | John Doe | London |
| 2 | Jane Doe | Paris |
| 3 | Bob Smith| Berlin |
+----+----------+--------+

RDBMS의 특징:
- 데이터는 고정 스키마가 있는 테이블에 저장됩니다.
- 테이블은 외래 키를 사용하여 서로 연결됩니다.
- 트랜잭션은 데이터 일관성을 보장하기 위해 사용됩니다.
- SQL은 데이터 쿼리 및 조작에 사용됩니다.
- ACID(Atomicity, Consistency, Isolation, Durability) 준수
- 복잡한 쿼리 및 트랜잭션이 필요한 애플리케이션에 가장 적합
- MySQL, Oracle 및 SQL Server가 포함됩니다.
NoSQL이란 무엇입니까?
NoSQL은 Not Only SQL의 약자입니다. 열린 커다란 장난감 상자가 다양한 유형의 장난감을 담을 수 있는 것과 유사하게 보다 유연한 방식으로 정보를 저장하도록 설계된 데이터베이스 유형입니다. RDBMS와 달리 NoSQL 데이터베이스는 정보 저장을 위해 고정된 구조가 필요하지 않습니다. 예를 들어 학생에 대한 정보를 문서 기반 NoSQL 데이터베이스에 저장할 수 있습니다. 여기서 각 문서는 단일 학생에 대한 모든 정보를 보유합니다.
{
"1": {
"Name": "John Doe",
"City": "London"
},
"2": {
"Name": "Jane Doe",
"City": "Paris"
},
"3": {
"Name": "Bob Smith",
"City": "Berlin"
}
}

NoSQL의 특징:
- 데이터는 유연하고 스키마가 없는 문서 또는 키-값 쌍에 저장됩니다.
- 문서는 중첩될 수 있으며 동일한 컬렉션 내에서 다른 구조를 가질 수 있습니다.
- 문서/컬렉션 간에 명시적인 관계는 없지만 문서 ID 또는 포함된 문서를 통해 데이터를 연결할 수 있습니다.
- 쿼리는 API 또는 특수 쿼리 언어(예: MongoDB의 쿼리 언어)를 사용하여 만들 수 있습니다.
- ACID를 준수하지 않지만 확장성을 위해 최종 일관성과 같은 기술을 사용할 수 있습니다.
- 높은 확장성, 성능, 유연성이 요구되는 애플리케이션에 가장 적합
- MongoDB, Cassandra 및 Couchbase를 예로 들 수 있습니다.
RDBMS와 NoSQL의 차이점
RDBMS와 NoSQL 데이터베이스 간에는 몇 가지 중요한 차이점이 있습니다.
- 구조: RDBMS 데이터베이스는 고정된 테이블과 열로 구조화된 반면 NoSQL 데이터베이스는 비구조적이거나 반구조적이며 유연한 문서 또는 키-값 구조를 가지고 있습니다.
- 확장성: NoSQL 데이터베이스는 일반적으로 RDBMS 데이터베이스보다 확장성이 뛰어납니다. 즉, 더 많은 양의 데이터와 더 많은 동시 사용자를 처리할 수 있습니다.
- 쿼리: RDBMS 데이터베이스는 복잡한 쿼리 및 분석에 적합하고 NoSQL 데이터베이스는 간단한 쿼리 및 실시간 데이터 처리에 적합합니다.
- 데이터 일관성: RDBMS 데이터베이스는 데이터가 항상 유효한 상태에 있음을 의미하는 데이터 일관성을 우선시하는 반면, NoSQL 데이터베이스는 데이터가 항상 일관된 상태가 아니더라도 항상 액세스할 수 있음을 의미하는 가용성을 우선시합니다.
어떤 데이터베이스를 사용해야 합니까?
사용해야 하는 데이터베이스 유형은 애플리케이션의 특정 요구 사항과 저장 및 관리해야 하는 정보 유형에 따라 다릅니다. 여기 몇 가지 예가 있어요.
RDBMS가 더 나은 선택인 경우의 예는 은행 시스템 또는 재고 관리 시스템과 같이 복잡한 트랜잭션 및 쿼리가 필요한 애플리케이션에 대한 것입니다.
예를 들어 은행 시스템은 모든 트랜잭션이 올바르게 처리되고 데이터베이스가 일관성을 유지하도록 하기 위해 ACID 준수를 요구합니다.
RDBMS는 이름, 주소, 회원 등급과 같은 회원에 대한 구조화된 정보를 저장해야 하는 회원 관리 시스템에 적합할 수 있습니다. 작년에 멤버십을 갱신한 모든 회원을 찾는 것과 같은 복잡한 쿼리를 수행해야 할 수도 있습니다.
또한 자세한 보고서를 생성하거나 재무 데이터를 분석하려면 복잡한 쿼리가 필요할 수 있습니다.
반면 소셜 미디어 플랫폼이나 IoT(Internet of Things) 애플리케이션과 같이 높은 확장성과 성능이 필요한 애플리케이션에는 NoSQL이 더 나은 선택이 될 것입니다.
예를 들어 소셜 미디어 플랫폼은 대량의 사용자 데이터와 쿼리를 실시간으로 처리할 수 있어야 합니다.
NoSQL 데이터베이스는 유연한 스키마 없는 데이터 구조와 여러 노드에 데이터를 분산하는 기능으로 인해 높은 성능과 확장성을 제공할 수 있습니다.
NoSQL 데이터베이스는 소셜 미디어 피드와 같이 실시간 데이터 처리가 필요한 시스템에 적합할 수 있습니다. 이 경우 트윗이나 게시물과 같은 구조화되지 않은 정보를 저장해야 할 수도 있고 해시태그 또는 위치로 필터링하는 것과 같은 간단한 쿼리를 수행해야 할 수도 있습니다. 많은 수의 사용자와 게시물을 처리하려면 높은 확장성과 가용성이 필요할 수도 있습니다.
'dansoon-Dev > [BackEnd]' 카테고리의 다른 글
| 버블 정렬(Bubble Sort) : Java와 C에서의 구현 및 이해 (0) | 2023.05.31 |
|---|---|
| HTTP 요청 상태 코드 : HTTP Request Status Code (0) | 2023.05.19 |
| [Java] Java 버전 8과 11과 17 차이점 (0) | 2023.03.23 |
| [Java] Gmail API 를 이용하여 메일 보내기 (0) | 2023.03.10 |
댓글