NoSQL 데이터베이스(일명 "SQL만을 사용하지 않는 데이터베이스")는 표 형식이 아니며, 관계형 테이블과는 다른 방식으로 데이터를 저장합니다. NoSQL 데이터베이스는 데이터 모델에 따라 유형이 다양합니다. 주요 유형으로는 문서, 키 값, 와이드 컬럼, 그래프가 있습니다. 이들은 유연한 스키마를 제공하며, 대량의 데이터와 높은 사용자 부하에서도 손쉽게 확장이 가능합니다.

NoSQL이란 무엇입니까?

사람들은 보통 “NoSQL 데이터베이스”란 용어를 비관계형 데이터베이스를 지칭할 때 사용합니다. 누군가는 “NoSQL”을 “non SQL(비 SQL)“의 약자로, 또 누군가는 “not only SQL(SQL만을 사용하지 않는)”의 약자로 생각합니다. 어떤 경우든 대부분의 사람들은 NoSQL 데이터베이스가 관계형 데이터베이스 이외의 형식으로 데이터를 저장하는 데이터베이스라는 데 동의합니다.

흔히들 NoSQL 데이터베이스 또는 비관계형 데이터베이스는 관계 데이터를 저장하지 않는다고 오해합니다. NoSQL 데이터베이스는 관계형 데이터베이스와 방식은 다르지만 관계 데이터를 저장할 수 있습니다. 실제로 SQL 데이터베이스아 비교해보면, 대체로 NoSQL 데이터베이스에 있는 관계 데이터를 모델링하는 것이 SQL 데이터베이스보다 쉽다는 것을 알 수 있는데, 이는 관련 데이터를 테이블 간에 분할할 필요가 없기 때문입니다.

NoSQL 데이터 모델을 사용하면 관련 데이터를 단일 데이터 구조 내에 중첩시킬 수 있습니다 .

NoSQL 데이터베이스는 2000년대 말에 스토리지 비용이 크게 하락하면서 등장했습니다. 단순히 데이터 중복 감소를 목적으로 복잡하고 관리가 어려운 데이터 모델을 생성해야 하던 시절은 이제 지났습니다. 스토리지가 아니라 개발자들이 소프트웨어 개발의 1차 비용이 되었기 때문에 NoSQL 데이터베이스는 개발자 생산성에 맞게 최적화되었습니다.

<iframe style=“background: #FFFFFF;border: none;border-radius: 2px;box-shadow: 0 2px 10px 0 rgba(70, 76, 79, .2);“ width=“640“ height=“480“ src=“https://charts.mongodb.com/charts-storage-costs-sbekh/embed/charts?id=740dea93-d2da-44c3-8104-14ccef947662&amp;theme=light&quot;&gt;&lt;/iframe&gt;

스토리지 비용이 급격히 상승하면서 저장 및 쿼리를 위해 필요한 데이터 애플리케이션의 양도 증가했습니다. 이러한 데이터는 정형, 반정형, 다형적 등 모양과 크기가 모두 다르기 때문에 미리 스키마를 정의하는 것이 거의 불가능해졌습니다. NoSQL 데이터베이스는 개발자가 엄청난 양의 비정형 데이터를 저장할 수 있도록 지원하여 뛰어난 유연성을 제공합니다.

뿐만 아니라, Agile Manifesto의 인기가 높아지면서 소프트웨어 개발자들은 소프트웨어 개발 방식을 재고하기 시작했습니다. 그리고 변화하는 요구사항에 발 빠르게 적응해야 할 필요가 있음을 인식했습니다. 이들에게는 데이터베이스 모델에 이르기까지 소프트웨어 스택 전반에서 반복 작업과 변경을 신속하게 수행할 수 있는 능력이 필요했습니다. NoSQL 데이터베이스는 개발자들에게 이러한 유연성을 제공했습니다.

클라우드 컴퓨팅 역시 인기가 높아졌고, 개발자들은 퍼블릭 클라우드를 사용해 애플리케이션과 데이터를 호스팅하기 시작했습니다. 이들은 여러 서버와 리전에 데이터를 분산시켜 애플리케이션 복원력을 높이고, 스케일업이 아닌 스케일아웃을 수행하며, 데이터를 지능적으로 배치할 수 있기를 원했습니다. MongoDB 같은 일부 NoSQL 데이터베이스들은 이러한 기능을 제공하고 있습니다.

SQL이란 무엇입니까?

NoSQL 데이터베이스를 이해했다면 이제는 과거에 가장 인기 있었던 SQL(Structured Query Language)로 액세스하는 관계형 데이터베이스와 이들을 비교해보겠습니다. 데이터가 고정된 열과 행을 가지고 있는 테이블에 저장되는 관계형 데이터베이스와 상호 작용할 때 SQL을 사용할 수 있습니다.

SQL 데이터베이스는 1970년대 초반에 사용자들로부터 많은 사랑을 받았습니다. 당시만 해도 스토리지가 매우 비쌌기 때문에 소프트웨어 엔지니어들은 데이터 중복을 줄이기 위해 데이터베이스를 정규화했습니다.

또한 1970년대의 소프트웨어 엔지니어들은 일반적으로 소프트웨어 개발에 있어 폭포수(waterfall) 모델을 따랐습니다. 개발이 시작되기 전에 프로젝트에 대한 상세한 계획이 수립되었습니다. 소프트웨어 엔지니어들은 저장이 필요한 모든 데이터를 신중하게 고려하기 위해 애써서 복잡한 엔터티-관계(E-R) 다이어그램을 만들었습니다. 이러한 선행 계획 모델로 인해 소프트웨어 엔지니어들은 개발 주기 동안 요구사항이 바뀔 경우, 이에 대처하느라 애를 먹었습니다. 그 결과, 프로젝트에서 예산이 초과되고 마감 기간을 넘겨서 사용자 요구를 충족하지 못하는 일이 잦았습니다.

NoSQL 데이터베이스의 유형으로는 어떤 것이 있습니까?

시간이 지나면서 4가지 유형의 NoSQL 데이터베이스가 등장했는데, 문서 데이터베이스, 키-값 데이터베이스, 와이드 컬럼 스토어, 그리고 그래프 데이터베이스가 바로 그것입니다. 각 유형을 살펴보겠습니다.

  • 문서 데이터베이스는 JSON(JavaScript Object Notation) 객체와 비슷한 문서에 데이터를 저장합니다. 각 문서에는 필드와 값의 쌍이 포함되어 있습니다. 일반적으로 값은 문자열, 숫자, 불리언(boolean), 어레이, 객체 등 유형이 다양할 수 있으며, 구조는 개발자가 코드에서 사용하고 있는 객체에 맞춰 조정됩니다. 다양한 필드 값 유형과 강력한 쿼리 언어 덕분에 문서 데이터베이스는 다양한 사용 사례에 적합하며, 범용 데이터베이스로도 사용할 수 있습니다. 또한 대량의 데이터를 수용하도록 수평 스케일아웃이 가능합니다. DB-engines에 따르면 문서 데이터베이스를 대표하는 MongoDB는 세계에서 가장 인기 있는 NoSQL 데이터베이스 목록에 계속 이름을 올리고 있습니다. 문서 데이터베이스에 대한 자세한 내용은 문서 데이터베이스란 무엇입니까?를 참조하세요.

  • 키-값 데이터베이스는 각 항목에 키와 값이 포함되어 있는 보다 간한 유형의 데이터베이스입니다. 값은 보통 키를 참조하는 방식으로만 검색이 가능하기 때문에 일반적으로 특정 키-값 쌍에 대해 쿼리를 수행하는 방법을 간단히 익힐 수 있습니다. 키-값 데이터베이스는 대량의 데이터를 저장해야 하지만 검색을 위해 복잡한 쿼리를 수행할 필요가 없는 사용 사례에 적합합니다. 일반적인 사용자 선호도 저장 또는 캐싱에서 사용됩니다. Redis와 DynanoDB는 인기 있는 키-값 데이터베이스입니다.

  • 와이드 컬럼 스토어는 테이블, 행 및 동적 열에 데이터를 저장합니다. 와이드 컬럼 스토어는 각 행이 동일한 열을 가질 필요가 없다는 점에서 관계형 데이터베이스에 대해 뛰어난 유연성을 제공합니다. 와이드 컬럼 스토어를 2차원적 키-값 데이터베이스로 생각하는 사람들이 많습니다. 와이드 컬럼 스토어는 대량의 데이터를 저장해야 할 때 적합하며, 쿼리 패턴을 예측할 수 있습니다. 와이드 컬럼 스토어는 보통 사물인터넷 데이터와 사용자 프로필 데이터를 저장하는 데 사용됩니다. Cassandra와 HBase는 가장 인기 있는 와이드 컬럼 스토어입니다.

  • 그래프 데이터베이스는 노드와 에지에 데이터를 저장합니다. 노드에는 일반적으로 사람, 장소 및 사물에 대한 정보가 저장되고, 에지에는 노드 간의 관계에 대한 정보가 저장됩니다. 그래프 데이터베이스는 소셜 네트워크, 사기 탐지, 권장 엔진 같은 패턴을 찾아보기 위해 관계를 상세히 검토해야 하는 사용 사례에 적합합니다. 그래프 데이터베이스로는 Neo4j와 JanusGraph가 있습니다.

NoSQL 데이터베이스가 작동하는 방법

설계 측면에서 NoSQL 데이터베이스의 이점을 이해할 수 있는 방법 중 하나는, SQL 및 NoSQL 데이터베이스의 데이터 모델이 주소 데이터를 사용하는 지나치게 단순화된 예제에서 어떻게 보일 것인가를 살펴보는 것입니다.

SQL 사용 사례 SQL 데이터베이스에서는 저장되는 레코드가 비교적 변경 없이 유지될 것이라는 예상 하에 형식을 논리적으로 구성하는 것에서부터 주소에 대한 데이터베이스 구축이 시작됩니다. 예상된 쿼리 패턴을 분석한 후에 SQL 데이터베이스는 스토리지를 2개의 테이블로 최적화할 수 있는데, 하나는 기본 정보를 저장하기 위한 것이고, 다른 하나는 두 테이블 모두에 중요한 이름이 포함된 고객 정보를 저장하기 위한 것입니다. 각 테이블의 각 행은 단일 고객을 나타내며, 각 열에는

  • Last name :: first name :: middle initial :: address fields :: email address :: phone number
  • Last name :: date of birth :: account number :: customer years :: communication preferences

    같은 고정 속성을 가지고 있습니다. NoSQL 사용 사례. 위의 “NoSQL 데이터베이스의 유형“ 섹션을 보면 4가지 유형이 설명되어 있으며, 각각 자체 데이터 모델이 있습니다.

NoSQL 데이터베이스의 각 유형은 특정한 고객 상황을 염두에 두어 설계되었고, 각각의 데이터베이스 유형은 기술적 이유을 고려해 구성 방식이 결정됩니다.설명하기 가장 간단한 유형이 문서 데이터베이스인데, 여기서는 기본적으로 하나의 JSON 문서에 기본 정보와 고객 정보가 통합되어 있습니다. 이 경우, 각각의 SQL 열 속성이 필드가 되며 고객 레코드의 세부 정보가 각 필드에 연관된 데이터 값이 됩니다.

예를 들면 Last_name: &quot;Jones&quot;, First_name: &quot;Mary&quot;, Middle_initial: &quot;S&quot; 같은 식입니다.

NoSQL 데이터베이스 체험하기

NoSQL 데이터베이스를 체험하고 싶은 분들에게는 MongoDB Atlas가 시작하기에 좋은 리소스입니다. Atlas는 MongoDB가 완전히 관리를 전담하고 업계 최고의 모든 클라우드 제공업체 제품에서 사용할 수 있는 데이터베이스 서비스입니다. Atlas에는 구입 전에 기본 기능을 체험하는 데 사용할 수 있는 무료 티어가 있습니다.

Atlas 계정이 있으면 이제 무엇을 해야 할지 모르시겠습니까? MongoDB University에 가서 MongoDB 엔지니어들이 제공하는 무료 온라인 교육을 수강할 수 있습니다. MongoDB University의 등록 인원이 140만 명을 넘었습니다. 퀵 스타트 튜토리얼은 원하는 프로그래밍 언어로 신속하게 설치 및 실행할 수 있도록 도와준다는 점에서 또 하나의 유용한 리소스입니다.

이 문서는 MongoDB 개발자 지지자인 Lauren Schaefer가 작성했습니다.

[NoSQL과 SQL Databases] 간의 주요 차이점에 대해 자세히 알아보기(https://www.mongodb.com/nosql-explained/nosql-vs-sql)

MongoDB Atlas 시작하기

최고의 NoSQL 데이터베이스인 MongoDB를 클라우드에서 사용하는 이점을 누려보세요.