Sql, NoSql
포스트
취소

Sql, NoSql

SQL은 구조화 된 쿼리 언어(Structured Query Language)의 약자다. 관계형 데이터베이스와 상호작용하는 데 사용 하는 쿼리 언어다. 관계형 데이터베이스에는 두 가지 주요 특징이 있다. 데이터는 정해진 데이터 스키마를 따라 데이터베이스 테이블에 저장된다. 데이터는 관계를 통해서 연결된 여러개의 테이블에 분산된다. 아래에서 나오는 SQL은 관계형 데이터베이스를 뜻한다.

1.엄격한 스키마 데이터는 테이블에 레코드로 저장되며, 각 테이블에는 명확하게 정의된 구조가 있다. 구조란 어떤 데이터가 테이블에 들어가고 어떤 데이터가 그렇지 않을지를 정의하는 필드 집합을 가르킨다. 구조는 필드의 이름과 데이터 유형으로 정의된다. 관계형 데이터베이스에서 스키마를 준수하지 않은 레코드는 추가할 수 없다.

NoSql(비관계형 데이터베이스) 스키마 없음, 관계 없음 여기선 SQL의 레코드를 문서라 칭한다. 단순히 이름만 다른 것이 아니라 핵심적인 차이점이 있는데, SQL에선 정해진 스키마를 따르지 않는다면 데이터를 추가할 수 없지만, NoSQL에서는 다른 구조의 데이터를 같은 컬렉션(테이블)에 추가할 수 있다. 일반적으로 관련 데이터를 동일한 컬렉션에 넣어버리고 대신 컬렉션을 통해 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 산출하도록 한다., 데이터가 중복되기 때문에 유지보수면에서 불안정하지만 Join을 사용할 필요가 없어 자주 변경되지 않거나 조금이라도 속도를 중시한다는 점은 장점이다.

Vetical & Horizontal scaling 수직 확장 : DB 서버 성능 향상 | | 수평 확장 : DB 서버 증설, DB 분산(여러 호스트에서 작동) 데이터가 저장되는 방식 때문에 SQL은 일반적으로 수직 확장만을 지원한다. 수평 확장은 NoSQL에서만 가능하다.

SQL에서는 샤딩(Sharding)의 개념을 알고 있지만 특정 제한이 있으며 구현하기 어렵다. NoSQL에서는 이를 기본적으로 지원하므로 여러 서버에서 데이터베이스를 쉽게 분리할 수 있다.

-

따라서 두 가지 중 하나의 솔루션을 선택해야 되는 문제에서는 어떤 데이터를 다루는 지,. 어떤 app에서 사용되는지를 고려해야한다. 무엇이 무조건 옳다는 것은 없다.

SQL의 장점 명확하게 정의 된 스키마 - 데이터 무결성 보장 관계는 각 데이터를 중복 없이 한번만 저장된다. SQL의 단점 상대적으로 덜 유연하다. 데이터 스키마는 사전에 계획되고 알려져야한다. 관계를 맺고 있기 때문에, Join문이 많은 매우 복잡한 쿼리가 만들어질 수 있다. 수평 확장이 어렵다 - 어떤 시점에서 성장 한계에 직면하게 된다.

NoSQL의 장점 스키마가 없기 때문에 유연하다. 언제든지 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있다. 데이터는 app이 필요로 하는 형식으로 저장된다 - 데이터를 읽어오는 속도가 빨라진다. 수직, 수평 확장이 가능하므로 DB가 app에 발생시키는 모든 읽기/쓰기 요청을 처리할 수 있다. NoSQL의 단점 이러한 유연성 때문에 데이터 구조를 결정하지 못하고 미루게 될 수 있다. 데이터 중복은 여러 컬렉션과 문서가 여러 개의 레코드가 변경된 경우 업데이트를 해야 한다. 데이터가 여러 컬렉션에 중복되어 있기 때문에, 수정해야 하는 경우 모든 컬렉션에서 수행함을 의미한다.

그럼 언제 사용할까? SQL - 관계를 맺고 수정이 잦은 데이터일 경우, 변경될 여지가 없고 명확한 스키마가 중요한 경우 NoSQL - 데이터 구조가 불분명하여 변경/확장 될 수 있는 경우 송수신이 잦지만 데이터 수정이 덜 한 경우, 수평 확장을 요하는 경우.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.