QUESTION #0264
프론트엔드

관계형 데이터베이스와 비관계형 데이터베이스에 대해 설명해주세요.

관계형 데이터베이스와 비관계형 데이터베이스에 대해 설명해주세요.

분야: 프론트엔드


관계형 데이터베이스데이터를 테이블 형식으로 저장하고 관리하는 데이터베이스입니다. 각 테이블은 고정된 스키마를 가지며, 행(Row)은 개별 레코드, 열(Column)은 속성을 나타냅니다. 각 테이블은 고유한 스키마를 가지고 있어, 데이터 타입과 구조가 엄격하게 정의되어 있습니다. 대표적인 예로는 MySQL, PostgreSQL, Oracle이 있습니다.

관계형 데이터베이스는 정형화된 데이터를 다룰 때 특히 유용합니다. 미리 정의된 타입과 구조가 있기 때문에 이에 부합하는지 검증하여 데이터의 일관성을 유지하기 용이합니다. 또한, 데이터 간의 관계를 명확히 표현할 수 있는 것이 큰 장점입니다. 예를 들어 사용자와 주문 데이터를 각각 테이블로 만들고, 사용자 ID를 외래키로 설정해 두 테이블을 연결할 수 있습니다. 이를 통해 하나의 사용자에 속한 주문 내역을 정확히 조회할 수 있으며, 이 외에도 복잡한 조건의 데이터 조회나 조인을 처리하기 용이합니다.

반면, 흔히 NoSQL이라고 부르기도 하는 비관계형 데이터베이스전통적인 테이블 기반 구조가 아닌, 보다 유연한 데이터 모델을 사용합니다. "Key - value", "Document", "Graph" 등의 유형이 존재합니다. 비관계형 데이터베이스는 스키마가 고정되어 있지 않아서, 저장되는 데이터 구조가 일관되지 않아도 됩니다. 필요에 따라 유동적으로 속성을 추가할 수도 있습니다. 대표적인 예로는 MongoDB, Cassandra, Redis가 있습니다.

비관계형 데이터베이스의 장점은 유연성과 확장성입니다. 스키마가 고정되어 있지 않기 때문에, 초기 개발 단계에서 데이터 구조가 자주 변경될 가능성이 있는 프로젝트에 특히 적합합니다. 또한, 수평적 확장이 쉬워서 대용량의 데이터를 빠르게 처리하거나, 사용자가 급격히 늘어나는 상황에서도 안정적인 성능을 유지할 수 있다는 장점이 있습니다. 문서 기반 NoSQL에서는 하나의 객체에 필요한 데이터를 모두 담을 수 있어서, 관계를 맺고 조인하는 대신 한 번의 조회로 필요한 정보를 가져올 수 있다는 장점도 있습니다.

둘의 단점에 대해서도 간단히 설명해주실 수 있나요? 🤔

관계형 데이터베이스의 단점은 유연성이 떨어진다는 점입니다. 스키마가 고정돼 있기 때문에, 새로운 필드를 추가하거나 데이터 구조를 바꾸려면 테이블 자체를 수정해야 하고, 이로 인해 마이그레이션 과정이 복잡하고 시간이 오래 걸릴 수 있습니다. 또한, 서버를 여러 대로 분산시키는 수평적 확장이 상대적으로 어렵다는 단점도 있습니다. 관계형 데이터는 여러 테이블 간의 조인이 많기 때문에 데이터를 분산시켜 저장하면 성능 저하가 생길 수 있습니다. 그래서 대규모 트래픽을 처리해야 하는 시스템에서는 확장성이 한계로 작용할 수 있습니다.

비관계형 데이터베이스는 반대로 데이터의 일관성 유지가 어렵다는 문제가 있습니다. 스키마가 자유롭다 보니, 같은 컬렉션 안에 구조가 다른 문서들이 들어갈 수 있고, 그로 인해 나중에 데이터를 가공하거나 검증할 때 오류가 발생하기 쉽습니다. 또한, 조인 기능이 제한적이기 때문에, 데이터 간의 관계를 표현하는 데 한계가 있습니다. 만약 여러 컬렉션에 나눠 저장된 데이터를 합쳐서 조회해야 한다면, 애플리케이션 단에서 로직을 더 많이 처리해야 할 수도 있습니다.

📚 추가 학습 자료를 공유합니다.