본문 바로가기
BackEnd

[DataBase] MySQL과 NoSQL에 대해서

by SoriKim 2023. 11. 28.
반응형

📍 SQL이란?

SQL(Structured Query Language)은 주로 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 정의, 조작, 제어하기 위한 표준화된 프로그래밍 언어입니다. SQL은 데이터베이스에서 데이터의 생성, 조회, 수정, 삭제와 같은 작업을 수행할 수 있는 강력한 언어로, 대부분의 현대적인 데이터베이스 시스템에서 지원됩니다. SQL은 각 데이터베이스 시스템에서 약간의 차이가 있을 수 있지만, 기본적인 구문과 개념은 대체로 유사합니다. SQL을 사용하면 데이터베이스를 효과적으로 관리하고 조작할 수 있습니다. 그러나 비관계형 데이터베이스에서는 SQL과 유사한 언어 또는 쿼리 인터페이스를 지원하는 경우가 있습니다. 예를 들어, 몇몇 NoSQL 데이터베이스는 SQL과 유사한 쿼리 언어를 제공하거나 SQL 스타일의 쿼리를 변환하여 처리하는 기능을 제공합니다. 

 

1. MySQL 소개 및 역사

1️⃣ 소개

MySQL은 관계형 데이터베이스 관리 시스템(RDBMS)으로, 개방 소스 소프트웨어입니다. 이는 데이터를 테이블 형식으로 저장하고, SQL(Structured Query Language)을 사용해 데이터베이스를 관리하고 쿼리 하는데 주로 사용됩니다. 

 

2️⃣ MySQL 역사

MySQL은 1994년 Michael Widenius와 David Axmark가 개발했습니다. 초기 스웨덴의 TcX 데이터베이스 관리 시스템으로 시작했지만, 나중에 MySQL로 이름을 변경했습니다. 1995년 MySQL은 오픈 소스로 전환해 소프트웨어 개발자들이 MySQL을 사용하고 개선할 수 있게 했습니다. 2001년 MySQL AB는 스웨덴에서 미국으로 본사를 이전했습니다. 2008년에는 MySQL이 점점 더 많은 기업 및 개발자들에게 인기를 얻어 Sun Microsystems가 MySQL AB를 약 10억 달러로 인수했습니다. 2010년에는 Sun Microsystems가 Oracle에 인수되면서 MySQL은 Oracle의 소유가 되어 커뮤니티에서는 MySQL의 미래에 대한 우려를 나타냈습니다. 현재 MySQL은 여전히 활발하게 개발되며, 안정성과 성능 개선을 위한 여러 버전 업데이트가 이루어지고 Oracle Corporation은 MySQL을 계속해 지원하고 있습니다. 또한 MySQL 커뮤니티도 여전히 활발하게 운영되고 있습니다. 

 

 

2. MySQL  특징

1️⃣ 오픈 소스와 성능

MySQL은 오픈 소스로 제공되어 비용 부담이 적으며 라이선스 비용 없이 무료로 사용할 수 있어 개발자들 사이에 널리 채택되었습니다. 또한 높은 성능을 제공해 적은 리소스로도 빠르고 효율적으로 동작해 대규모 데이터베이스에서도 안정적인 성능을 보장합니다. 

 

2️⃣ 안정성 & 신뢰성 & 확장성  

ACID(Atomicity, Consistency, Isolation, Durability) 속성을 지원해 트랜잭션의 원자성, 일관성, 고립성, 지속성을 보장합니다. 이로써 데이터 일관성과 안정성이 유지됩니다. 그리고 MySQL은 수평 및 수직 확장을 지원해 데이터베이스 시스템을 쉽게 확장할 수 있습니다. 

 

3️⃣ 다양한 스토리지 엔진 및 크로스 플랫폼 지원

다양한 스토리지 엔진을 지원하며, 각 스토리지 엔진은 특정 용도에 최적화된 기능을 제공합니다. 대표적으로 InnoDB, MyISAM이 있습니다. 또한 MySQL은 여러 플랫폼에서 동작하며, Windows, Linux, MacOS 등 다양한 운영 체제에서 사용할 수 있습니다. 

 

4️⃣ 대표적인 데이터베이스 & 풍부한 기능

많은 웹 애플리케이션과 소프트웨어 시스템에서 MySQL을 기본 데이터베이스로 사용해 개발자들이 익숙하게 다룰 수 있고, 풍부한 생태계와 커뮤니티 지원이 있습니다. MySQL은 풍부한 기능을 제공하며, 트리거, 프로시저, 뷰, 서브쿼리, 인덱싱 등 고급 SQL 기능을 지원합니다. 

 

5️⃣ 보안 기능 

데이터베이스 보안을 강화하기 위한 다양한 기능을 제공하며, 예시로 사용자권한 관리, SSL 인증서 지원, 데이터 암호화 등이 있습니다. 

 

6️⃣ 커뮤니티 및 문서화

MySQL은 활발한 개발자 커뮤니티와 풍부한 문서화가 제공되어 사용자들이 문제를 해결하고 지원을 받을 수 있습니다. 

 

이런 다양한 특징으로 신뢰성 있고 성능 우수한 데이터베이스 시스템으로 평가되어 웹개발, 엔터프라이즈 애플리케이션 등 다양한 분야에서 많이 사용되고 있습니다. 

 

3.  NoSQL에 대해서 

NoSQL(Not Only SQL)은 전통적인 관계형 데이터베이스 시스템이 갖는 특징을 벗어나 다양한 형태의 데이터 모델을 사용하는 데이터베이스를 지칭하는 용어입니다. NoSQL 데이터베이스는 주로 대량의 분산 데이터를 다루거나 유연한 데이터 모델이 필요한 경우 사용됩니다. 다양한 NoSQL 데이터베이스가 있으며, 주요한 몇 가지 유형을 살펴보겠습니다. 

 

4. 주요 NoSQL 데이터베이스 유형

1️⃣ 문서 지향 데이터베이스(Document Store)

- 데이터를 문서(Document)로 저장해, 일반적으로 JSON 또는 BSON 형식으로 표현됩니다. 

- 대표적인 예시: MongoDB

 

2️⃣ 키-값 저장소

- 간단한 키와 값의 쌍으로 데이터를 저장하는 형태로, 분산 시스템에서 높은 성능을 제공합니다. 

- 대표적인 예시: Redis, DynamoDB

 

3️⃣ 열 지향 데이터베이스(Column Family Store)

- 데이터를 컬럼 기반의 패밀리로 저장해, 대량의 데이터를 빠르게 읽고 쓸 수 있습니다. 

- 대표적인 예시: Apache Cassandra, HBase

 

4️⃣ 그래프 데이터베이스(Graph Database) 

- 데이터의 관계를 그래프로 모델링해 저장하며, 복잡한 연결성을 다루기에 용이합니다. 

- 대표적인 예시: Neo4j, Amazon Neptune

 

5. NoSQL의 공통적인 특징 

1️⃣ 스키마 유연성

NoSQL은 스키마가 동적이거나 유연하게 변할 수 있는 특징을 가지며 새로운 필드나 속성을 추가하는 것이 쉽습니다. 

 

2️⃣ 분산 데이터 베이스

NoSQL은 대부분 분산 환경에서 동작하도록 설계되어 있어, 대용량 데이터를 효과적으로 저장하고 처리할 수 있습니다. 

 

3️⃣ 수평적 확장성

NoSQL은 수평적 확장이 가능하며, 데이터베이스의 용량을 늘리기 위해 샤딩(Sharding)등의 기술을 사용합니다. 

 

4️⃣ 높은 성능

간단한 쿼리 및 특화된 데이터 모델링을 통해 높은 성능을 제공합니다. 

 

5️⃣ 다양한 데이터 모델

NoSQL은 다양한 데이터 모델을 지원하므로, 애플리케이션의 특정 요구에 따라 선택적으로 사용할 수 있습니다. 

 

6️⃣ 빠른 읽기 및 쓰기 

다수의 동시 쓰기 및 읽기 작업을 효율적으로 처리할 수 있도록 최적화되어 있습니다. 

 

NoSQL 데이터베이스는 다양한 환경에 사용되며, 특히 대규모 웹 어플리케이션, 소셜 미디어, 로그 처리, 실시간 분석 등 다양한 분야에서 활용되고 있습니다. 데이터의 특성과 요구 사항에 따라 적절한 NoSQL 데이터베이스를 선택하는 것이 중요합니다. 

반응형

댓글