가족들은 제가 다음과 같은 이야기를 하는 것을 듣습니다. JSON 데이터베이스 를 자주 사용합니다.

당연히 저는 다음과 같이 설명해야 했습니다. Jason 는 내 회사의 소유자가 아닙니다! 대신 많은 최신 데이터베이스는 데이터 형식으로 JSON을 사용합니다. 보통 이쯤 되면 Couchbase JSON 데이터베이스에 대한 저의 열정에 지쳐서 방을 나가곤 합니다.

JSON 데이터베이스란 무엇인가요?

A JSON 데이터베이스 는 NoSQL 데이터베이스 제품군에서 가장 인기 있는 카테고리입니다. NoSQL 데이터베이스 관리 는 열과 행 이외의 데이터를 저장하는 데 어려움을 겪는 기존의 관계형 데이터베이스와는 다릅니다. 대신 다양한 데이터 유형, 변화하는 애플리케이션 요구 사항 및 데이터 모델에 유연하게 적응할 수 있습니다. 물리적 스토리지의 한계가 더 이상 병목 현상이 되지 않는 시대에 JSON 데이터베이스는 뛰어난 확장성과 성능을 제공합니다.

이러한 유연성 덕분에 JSON 데이터베이스는 다중 모델 또는 다중 모드 처리를 지원하는 NoSQL 시스템을 위한 탁월한 스토리지 구조로 자리 잡았습니다. 이러한 인기는 주로 JSON 데이터베이스 문서 구조의 단순성과 유연성 덕분입니다.

2006년에 처음 소개된 JSON은 "JavaScript Object Notation"의 약자로, 널리 사용되는 XML(eXtensible Markup Language)보다 덜 장황한 데이터 형식을 제공합니다. 오늘날 JSON 데이터 형식은 자바스크립트 프로그래밍과 간단한 웹 기반 애플리케이션을 지원하는 데 뿌리를 두고 있음에도 불구하고 전 세계 엔터프라이즈 시스템을 지원하고 있습니다. 카우치베이스나 몽고DB와 같은 JSON 데이터베이스는 표준의 간단한 구문을 활용하여 사람과 기계가 모두 읽을 수 있는 데이터 구조를 제공합니다.

데이터를 JSON 형식으로 저장하는 데이터베이스의 몇 가지 장점을 살펴보겠습니다. 이 과정에서 향후 애플리케이션에서 이 기능을 어떻게 활용할 수 있을지 생각해 보세요.

스토리지 유연성이 뛰어난 JSON 데이터베이스

NoSQL 는 스토리지 구조, 확장 설계, 쿼리/색인 방법에 중점을 둔 특정 사용 사례에 적합한 데이터베이스 카테고리입니다. 또한 동시성, 고가용성, 실시간 데이터 지속성 보장에 중점을 두고 있습니다.

예를 들어, 일부 데이터베이스는 검색 속도를 위해 키-값 데이터 저장소를 최적화하여 최대한 빠르게 실행하는 것을 목표로 합니다. 이러한 데이터베이스는 주로 메모리에서 실행되므로 회전하는 하드 드라이브에서 데이터를 읽는 데 시간이 많이 걸리는 부담을 피할 수 있습니다.

물론 메모리는 휘발성이 있으며 정전이 발생하면 메모리에 저장된 데이터가 지워질 수 있습니다. 키-값 데이터베이스 엔진은 데이터 손실을 줄이기 위해 영구 저장소에 데이터를 기록하는 수단을 제공합니다. 하지만 키-값 저장소는 일부 사용 사례에서는 너무 단순할 수 있습니다.

또한 그래프 데이터베이스와 같은 다른 데이터 구조는 다른 사용 사례에 비해 너무 추상적일 수 있습니다. 그래프 데이터베이스 구조는 일반적으로 관계 탐색 속도를 높이기 위해 인메모리 처리를 지원하므로 속도가 빠를 수 있습니다. 하지만 이를 위해서는 "인덱스 없는 인접성"과 같은 멋진 디자인 이름을 가진 기본 데이터 아키텍처가 필요합니다. 이러한 구조는 각 데이터를 디스크에 물리적으로 저장된 관계 ID 번호 집합과 연결합니다.

그래프 데이터 모델은 메모리와 디스크 공간이 부족할 때 가장 유용했습니다. 하지만 여러 데이터베이스 노드에 걸쳐 그래프 구조를 확장할 때 문제가 발생했습니다. 예를 들어, 기초 데이터의 관계를 논리적으로 어디에서 끊어야 할까요?

NoSQL JSON 데이터베이스는 구조화된 테이블을 사용하지 않고 문서를 개별 데이터 파일 개체로 처리합니다. 행 수나 테이블 크기는 JSON 데이터베이스에 저장되는 문서 수를 제한하지 않습니다. 대신 스토리지 가용성이 데이터 볼륨의 유일한 제한입니다. 다행히도 클러스터는 스토리지를 쉽게 확장할 수 있습니다.

데이터 파티셔닝

이 클러스터 기반 접근 방식을 통해 데이터베이스는 필요에 따라 더 많은 노드를 추가하여 더 큰 데이터 플랫폼을 만들 수 있습니다. 개발자들은 이 프로세스를 클러스터 '확장'이라고 부르기도 합니다. 노드 간에 데이터를 분할하면 단일 노드가 모든 작업을 수행하지 않고 분산 저장 및 처리가 가능합니다.

기본 데이터베이스는 공유-무공유 아키텍처의 스토리지 서비스 풀을 사용하여 데이터를 분할하여 이 균형을 유지합니다. 시스템은 노드를 사용할 수 없게 되는 경우 데이터의 균형을 유지하고 복제하여 데이터를 계속 사용할 수 있도록 합니다.

데이터 모델 처리

클러스터에는 다양한 액세스 모델을 사용하여 데이터 저장, 처리, 데이터 제공 등의 노드 유형이 혼합되어 있을 수도 있습니다. JSON 데이터베이스를 사용하면 데이터를 JSON으로 저장하고 다른 형식으로 애플리케이션에 제공할 수 있습니다.

예를 들어, JSON 데이터베이스는 빠르고 간편한 액세스가 필요한 애플리케이션을 위한 인메모리 키-값 저장소로 작동할 수 있습니다. 또는 인덱싱 및 쿼리를 통해 JSON 데이터를 테이블로 표시할 수 있습니다. 또한 개발자는 데이터 구조 SDK를 사용하여 원자 속성을 키-값 쌍으로 제공할 수 있습니다.

유연한 스키마를 제공하는 JSON 데이터베이스

JSON 문서 데이터베이스는 관계형 데이터베이스 스키마의 경직성을 제거하도록 설계된 특정 표기법을 사용해 데이터를 파일에 저장합니다. 초기 데이터베이스 스키마 설계 및 애플리케이션 릴리스 이후에 파생된 새로운 데이터 구조 요구 사항을 보다 신속하게 충족할 수 있습니다.

Mapping relational schema to a NoSQL JSON document

다중 테이블 관계형 데이터 모델과 단순화된 JSON 문서를 비교합니다.

80년대와 90년대에는 애플리케이션 유지 관리 및 배포 주기를 완료하는 데 수년이 걸리는 경우가 많았습니다. 그리고 가장 시간이 많이 걸리고 두려운 작업 중 하나는 애플리케이션 아래에 새로운 데이터베이스 스키마 변경 사항을 도입하는 것이었습니다.

이제 개발자는 문서에 새로운 속성을 추가하여 기본적으로 해당 문서의 스키마를 확장할 수 있습니다. JSON 데이터베이스의 강력한 기능을 통해 개발자는 DBA가 아닌 스키마를 제어할 수 있습니다.

예를 들어 사람을 설명하는 문서를 작성할 때 개발자는 필요에 따라 속성을 추가하고 수정할 수 있습니다. 개발자는 이름과 성만 저장된 문서를 집 주소까지 포함하도록 확장할 수 있습니다. 스키마의 유연성 때문에 개발자들은 JSON 데이터베이스와 카우치베이스 고객 설문조사 증명할 수 있습니다.

클라우드 기반 인프라로 인해 물리적 스토리지 비용(그리고 그보다 적은 범위의 RAM)이 범용화됨에 따라 JSON 데이터베이스는 현대적인 이점을 가지고 있습니다. 따라서 궁극적인 소형화는 예전만큼 중요하지 않습니다. 또한 JSON 데이터베이스에서 문서를 구성하는 것이 관계형 및 기타 구조보다 훨씬 더 직관적입니다.

읽기 쉬운 JSON 데이터

JSON 데이터베이스의 데이터는 단순하기 때문에 사람과 기계 모두 쉽게 읽고 쓸 수 있습니다.

JavaScript와 마찬가지로 문서에는 속성 또는 객체와 관련된 키 이름 집합이 포함되어 있습니다. 공백을 사용하면 사람이 문서를 더 읽기 쉽게 만들 수 있습니다.

텍스트, 숫자, 목록, 키-값 맵 등 다양한 기본 데이터 유형을 혼합하고 일치시킬 수 있습니다. 객체는 계층적 형태로 다른 객체를 포함할 수도 있습니다.

JSON 데이터베이스는 공식적인 스키마 유효성 검사가 필요하지 않습니다. 애플리케이션은 필요에 따라 키와 객체 집합을 사용/추가/수정할 수 있습니다. 이러한 유연성 덕분에 애플리케이션 스키마를 관리하기 위해 DBA가 필요하지 않으며 마이크로서비스의 '지속적인 배포'를 가속화할 수 있습니다.

SQL 구조에 대한 JSON 스키마 매핑

JSON 데이터베이스에서 스키마의 선택적 특성을 강조했지만, 필요한 구조를 적용할 수 있습니다. 관계형 테이블 컨텍스트에서 JSON 문서 키 이름은 열 이름으로 취급될 수 있습니다. 문서에 계층적 객체가 있는 경우 조금 더 복잡해지지만 함수를 사용하면 데이터를 평탄화하는 데 도움이 될 수 있습니다(다음에 자세히 설명).

JSON 속성을 열 이름에 매핑하면 SQL의 일반적인 구문을 적용할 수 있습니다. JSON 데이터베이스는 SQL의 간단한 구문 구조로 인해 이 매핑을 자동화할 수 있어 무한한 가능성을 열어줍니다. 개발자는 이미 SQL 사용법을 알고 있으며 이를 통해 개발 속도를 높일 수 있습니다. 또한 DBA와 아키텍트가 개입할 필요도 줄어듭니다.

JSON 데이터베이스는 다양한 인덱스 유형을 지원합니다.

JSON 데이터베이스는 SQL 데이터 쿼리를 가속화하는 컬럼 인덱스를 생성할 수도 있습니다. 개발자가 애플리케이션에서 사용할 컬럼을 식별하면 백엔드 시스템이 자동으로 인덱스를 유지 관리합니다. 기본 인덱스, 글로벌 보조 인덱스(GSI), 심지어는 전체 텍스트 검색 인덱스.

검색하기 쉬운 JSON 데이터

전체 텍스트 검색 엔진 애플리케이션은 JSON 데이터베이스에도 자연스럽게 적용되며 다른 유형의 인덱스를 통해 가능합니다.

개발자는 색인할 속성을 식별하고 프로그래밍 언어 SDK를 사용하여 데이터베이스에 검색 요청을 보냅니다. JSON 응답에는 데이터 일치, 일치 통계 및 개발자가 클라이언트 애플리케이션을 최적화하는 데 사용하는 기타 메타데이터가 포함됩니다.

스스로 알아서 처리하는 JSON 데이터베이스

지금까지 JSON 데이터베이스가 얼마나 다재다능하고 강력한지 살펴보았습니다. 가장 중요한 점은 데이터베이스 서비스가 구성된 모든 인덱싱, 파티셔닝, 복제 및 데이터 액세스 기능을 자동으로 관리한다는 점입니다.

애플리케이션 개발자는 클러스터 관리 대신 솔루션 구축에 집중할 수 있어 이 기능의 이점을 크게 누릴 수 있습니다. 새 문서를 추가하면 시스템이 이를 인지하고 조정하여 사용자 개입 없이도 색인된 데이터를 적절히 업데이트합니다.

모니터링 대시보드는 성능 메트릭에 대한 웹 인터페이스를 제공하며, 노드나 메모리가 더 필요한 시기를 알려줍니다. 사용자는 클러스터에 새 노드를 쉽게 추가할 수 있으며, 데이터 밸런싱과 복제는 백그라운드에서 자동으로 수행됩니다. JSON 데이터베이스는 장애가 발생하면 고장난 노드를 끄고, 데이터 배포를 조정하고, 관리자에게 알릴 수 있습니다.

다음 단계

개발자는 애플리케이션을 위해 데이터 인프라가 항상 존재하기를 기대합니다. 다음과 같은 JSON 데이터베이스를 사용하면 카우치베이스를 사용하면 유연성과 고성능을 바로 사용할 수 있습니다.

NoSQL JSON 데이터베이스 및 Couchbase에 대해 자세히 알아보세요:

 

작성자

게시자 Jeff Morris, 제품 마케팅 부사장

Jeff Morris는 Couchbase의 제품 및 솔루션 마케팅 담당 부사장입니다. 그는 30년 넘게 소프트웨어 개발 도구, 데이터베이스, 분석 도구, 클라우드 서비스 및 기타 오픈 소스 제품을 마케팅해 왔습니다. 그는 빠르고 유연하며 친숙하고 합리적인 가격의 서비스형 클라우드 데이터베이스를 찾는 사람이라면 누구라도 Couchbase를 확인하면 더 이상 고민할 필요가 없다고 말합니다.

댓글 남기기