주요 SQL과 NoSQL 데이터베이스 유형 및 특징
SQL (관계형 데이터베이스)
- 데이터 모델: 테이블 형식의 관계형 데이터 모델을 사용합니다. 데이터는 정형화되며, 각 테이블에는 열과 행이 있습니다.
- 스키마: 정적 스키마를 사용하며, 데이터 구조가 미리 정의되어 있어야 합니다.
- 쿼리 언어: SQL(Structured Query Language)을 사용하여 데이터를 검색, 수정 및 관리합니다.
- 확장성: 수직 확장이 주로 사용되며, 성능을 향상시키려면 더 많은 리소스가 필요합니다.
- 사용 사례: 트랜잭션 처리, 데이터 일관성 및 정확성이 필요한 응용 프로그램에 적합합니다.
NoSQL (비관계형 데이터베이스)
- 데이터 모델: 다양한 데이터 모델을 사용할 수 있으며, 주로 비정형 또는 반정형 데이터를 저장합니다. 예를 들어, 키-값, 문서, 열 지향 및 그래프 데이터 모델이 있습니다.
- 스키마: 동적 스키마 또는 스키마리스라고도 불리며, 데이터 구조를 미리 정의할 필요가 없습니다.
- 쿼리 언어: 각 NoSQL 데이터베이스는 고유한 쿼리 언어를 제공합니다. SQL을 사용하지 않는 경우가 많습니다.
- 확장성: 수평 확장이 주로 사용되며, 클러스터링을 통해 데이터베이스를 확장할 수 있습니다.
- 사용 사례: 대량의 데이터, 대규모 웹 애플리케이션, 실시간 분석 및 빠른 데이터 입력이 필요한 응용 프로그램에 적합합니다.
주요 데이터베이스 종류
- SQL 데이터베이스
- MySQL
- PostgreSQL
- Oracle Database
- Microsoft SQL Server
- SQLite
- NoSQL 데이터베이스
- MongoDB (문서 데이터베이스)
- Elasticsearch (문서 데이터베이스)
- Cassandra (열 지향 데이터베이스)
- Redis (키-값 데이터베이스)
- DynamoDB (키-값 데이터베이스)
- Neo4j (그래프 데이터베이스)
- Couchbase (다양한 모델 지원)
- HBase (컬럼 데이터베이스)
- Hive (컬럼 데이터베이스)
Terminology and Concepts(다이어그램)
SQL Terms/Concepts | MongoDB Terms/Concepts |
database | database |
table | collection |
row | document or BSON document |
column | field |
index | index |
table joins | $lookup, embedded documents |
primary key | primary key |
Specify any unique column or column combination as primary key. | In MongoDB, the primary key is automatically set to the _id field. |
aggregation (e.g. group by) | aggregation pipeline See the SQL to Aggregation Mapping Chart. |
SELECT INTO NEW_TABLE | $out See the SQL to Aggregation Mapping Chart. |
MERGE INTO TABLE | $merge (Available starting in MongoDB 4.2) See the SQL to Aggregation Mapping Chart. |
UNION ALL | $unionWith (Available starting in MongoDB 4.4) |
transactions | transactions |
관계형 데이터베이스 테이블 구성
SQL과 NoSQL의 선택 기준
SQL과 NoSQL 중 어떤 데이터베이스를 선택할지는 다음과 같은 기준을 고려해야 합니다.
- 데이터 모델: 데이터가 관계형 모델에 적합한지, 비관계형 모델에 적합한지 고려해야 합니다.
- 스키마: 데이터가 고정 스키마에 적합한지, 유동 스키마에 적합한지 고려해야 합니다.
- 쿼리 언어: 데이터를 조회, 삽입, 수정, 삭제하기 위해 필요한 기능을 제공하는 데이터베이스를 선택해야 합니다.
- 적합한 사용 사례: 데이터베이스를 어떤 용도로 사용할지 고려해야 합니다.
결론
SQL과 NoSQL은 각각 장단점이 있으므로, 데이터의 특성과 사용 사례에 따라 적합한 데이터베이스를 선택하는 것이 중요합니다.
참고URL
- SQL to Aggregation Mapping Chart : https://www.mongodb.com/docs/manual/reference/sql-aggregation-comparison/
- SQL to MongoDB Mapping Chart : https://www.mongodb.com/docs/manual/reference/sql-comparison/
- MySQL vs MongoDB 성능 분석 : https://soojle.gitbook.io/project/requirements/undefined-2/undefined-2-1/mysql-vs-mongodb
- SQL vs. NoSQL : http://sql-vs-nosql.blogspot.com/2013/11/indexes-comparison-mongodb-vs-mssqlserver.html
- mongoDB Story 1 : https://meetup.nhncloud.com/posts/274
- data engineering basic(SQL Basic) : https://heung-bae-lee.github.io/2019/12/10/data_engineering_02/
'리눅스' 카테고리의 다른 글
growpart 명령어 (0) | 2023.01.03 |
---|---|
MongoDB의 샤딩을 활성화(enable sharding)하고 샤딩된 클러스터에서 쿼리를 테스트하는 방법 (0) | 2023.01.02 |
[draft] MongoDB 5.0+에는 AVX를 지원하는 CPU가 필요함 (0) | 2023.01.01 |
[리눅스] 도커 컨테이너로 몽고디비 클러스터 구성하기(mongodb shard cluster) (0) | 2023.01.01 |
yum(dnf) 설치 및 업데이트 시 에러 (0) | 2022.12.30 |