SQL, NoSQL
- SQL은 관계형 및 비관계형(NoSQL) 데이터베이스를 처리하는데 사용된다.
- "관계형"이라는 용어는 대수학에서 유래했다. 데이터베이스에서 이것은 관계형 데이터베이스 데이터가 테이블과 행의 형태로 저장됨을 의미한다.
- 비관계형 데이터베이스는 정보를 JSON 문서 모음에 저장한다.
- 관계형 데이터베이스는 SQL을 사용한다. 이러한 데이터베이스의 구조를 통해 각 테이블의 원자 데이터를 고유하게 식별하는 데 사용되는 외부 키(또는 인덱스)를 사용하여 서로 다른 테이블의 정보를 연결할 수 있다. 다른 테이블은 이 외부 키를 참조하여 데이터 부분과 이 외부 키로 가리킨 부분 사이의 관계를 만들 수 있다.
- 비관계형 데이터베이스가 필요한 이유
- 주요 장점은 높은 수준의 보안과 하드웨어 제한을 무시할 수 있다는 것이다.
SQL, NoSQL 차이점
**예시**
모든 사람들이 같은 언어를 사용하는 도시를 상상해 보세요. 이 언어는 모든 형태의 커뮤니케이션에 사용되며 모든 비즈니스 프로세스가 이 언어를 기반으로 합니다. 이 도시의 주민들은 이 언어를 통해서만 서로를 이해하고 주변 세계를 탐험합니다. 만약 언어가 갑자기 한 곳에서 바뀌면, 다른 사람들은 모두 혼란스러워 할 것이다.
이제 모든 사람들이 집에서 다른 언어를 사용하는 또 다른 도시를 상상해 보세요. 모든 사람은 다른 방식으로 세상과 상호작용하며, "보편적인" 이해 방법과 지속 가능한 의사소통 조직도 없다. 한 사람이 어떤 것을 바꾸더라도 다른 사람에게 영향을 미치지 않을 것이다.
- 이 예제는 SQL(관계형) 데이터베이스와 NoSQL(비관계형) 데이터베이스 간의 주요 차이점 중 하나를 설명하는 데 도움이 된다.
SQL, NoSQL 장단점
- 관계형 데이터베이스는 데이터를 처리하고 조작하기 위해 구조화된 쿼리 언어를 사용한다.
- SQL 장점
- SQL은 가장 다재다능하고 일반적으로 사용되는 언어 옵션 중 하나이기 때문에 안전한 선택이다.
- 명확하게 정의된 스키마, 데이터 무결성을 보장한다.
- 관계는 각 데이터를 중복없이 한번만 저장한다.
- 복잡한 질의에도 적합하다.
- SQL 단점
- SQL 작업을 시작하기 전에 데이터 스키마를 미리 정의해야하고 미리 정의된 스키마를 사용하여 데이터 구조를 정의해야 한다. 유연하지 못해서 나중에 수정하기 어렵다.
- 모든 데이터의 구조가 동일해야 합니다. 위의 예시와 같이 구조의 변화는 문제를 초래하고 전체 시스템을 파괴할 수 있습니다.
- 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있다.
- 비관계형 데이터베이스는 구조화되지 않은 데이터에 대한 유연한 스키마를 가지고 있다. 열, 문서, 그래프 또는 키-값 저장소와 같은 다양한 방법으로 저장할 수 있다.
- NoSQL 장점
- 스키마가 없어서 유연하다. 구조를 미리 정의하지 않고 문서를 작성할 수 있다.
- 각 문서는 고유한 구조를 가질 수 있다.
- 데이터는 애플리케이션이 필요로 하는 형식으로 저장된다. 그로 인해 데이터 읽어오는 속도 빨라진다.
- 언제든지 작업 과정에서 저장된 데이터를 조정하고 새 필드를 추가할 수 있다.
- NoSQL 단점
- 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있다.
- 데이터 중복을 계속 업데이트 해야 한다.
- 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 한다. (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)
SQL 데이터베이스 사용이 더 좋을 때
NoSQL 데이터베이스 사용이 더 좋을 때
- 정확한 데이터 구조를 알 수 없거나 변경/확장 될 수 있는 경우
- 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우