RDB와 NoSQL의 가장 큰 차이가 뭔가요?
RDB와 NoSQL의 가장 큰 차이가 뭔가요? NoSQL만으로도 데이터베이스 구축이 가능한 거 아닌가요? RDB보다 아무리봐도 NoSQL의 장점이 더 많은 것 같아 보여서 질문드립니다!
안녕하세요,
먼저, NoSQL의 디자인 결정은 대부분 대규모 애플리케이션을 상정하여 발전되어 왔습니다. 근간이 되는 논문들이 google 과 같은 분산 빅 데이터 처리 기업인 이유입니다. 그말인 즉슨, 검색엔진과 같은 대규모 애플리케이션에 필요한 아주 높은 성능 구간을 충족하기 위해 필요 없는 기능을 띄어내면서 특수한 형태의 데이터베이스를 만들기 시작한 것에 뿌리를 두고 있습니다. 즉, 대안 데이터베이스로 개발을 시작한 것이며, 상위호환 데이터베이스로 개발을 시작한 것은 아닙니다.
제가 생각하는 대표적인 차이점은 자료 형식과 일관성(consistency) 정도가 있습니다.
자료 형식에 대해서 얘기해보자면...
RDB의 경우 릴레이션(Relation) 형태로 자료를 관리합니다. 표 형태를 떠올리시면 됩니다. 표는 대부분의 사람이 쉽게 받아들이는 자료 구조 입니다. RDB의 경우 큰 규모의 오퍼레이션 데이터를 정규화 하여 저장하기 때문에, 여러개의 릴레이션을 결합(join)하면 사용자가 요구하는 관점에서 데이터를 바라볼 수 있습니다.
NoSQL의 경우는 사람보다는 응용 어플리케이션이 이해하기 쉬운 형태로 자료를 관리하는 경우가 많습니다. 예를 들자면, json object를 저장하는 경우를 생각하시면 됩니다. 표와 같이 2차원으로 구조화 되어 있지 않기 때문에, 애플리케이션을 이해하지 않으면 데이터를 해석함에 있어 조금은 어렵습니다. 더불어, 애플리케이션 관점으로 저장하기 때문에 정규화가 되어있지 않은 경우가 많습니다. 그렇기 때문에 다른 관점으로 데이터를 보기 위해서는 별도의 솔루션이 필요한 경우가 많습니다.
일관성은 특정 시점에 데이터의 버전이 몇개 존재할지에 대한 정도를 나타냅니다.
RDB의 경우 대부분 1개의 버전만 존재하도록 설계합니다. NoSQL의 경우 eventually consistency로, 특정 시점에는 복수의 버전이 존재하지만 시간이 지나면 하나로 합쳐지는 구조로 설계합니다.
감사합니다.