ArangoDB: 다중 값 데이터베이스로 성공 달성하기

다양한 데이터베이스 구조를 처리하는 것은 종종 시스템 아키텍처에 중요한 복잡성을 도입하는데, 특히 여러 데이터베이스 인스턴스가 필요한 경우에는 더 그렇습니다. 이러한 단편화는 운영을 복잡하게 만들고 비용을 증가시키며 효율성을 감소시킬 수 있습니다. ArangoDB와 같은 멀티모델 데이터베이스는 이러한 도전에 대처하기 위한 통합 솔루션을 제공합니다. 이러한 데이터베이스는 단일 데이터베이스 인스턴스 내에서 키-값, 문서 및 그래프 데이터 모델을 지원하여 아키텍처를 단순화하고 데이터 관리를 간소화합니다.

관계형 데이터베이스와는 달리, NoSQL 데이터베이스는 SQL과 같은 범용 표준을 준수하지 않습니다. 대신, 그들은 그들의 저장 구조를 기반으로 분류됩니다. 인기있는 유형 중 일부는 다음과 같습니다:

  • 키-값: Java Map이나 Python 사전과 유사하며, 이 구조는 키를 사용하여 전체 값을 BLOB로 검색합니다.
  • 와이드-칼럼: 키-값과 유사하지만 값들을 열로 분할하여 더 세분화된 데이터 검색을 제공합니다.
  • 문서: JSON이나 XML과 유사한 구조로, 이 유형은 더 큰 쿼리 유연성을 제공합니다.
  • 그래프: 엔티티와 그들의 연결을 나타내어 복잡한 관계 모델링과 쿼리를 가능하게 합니다.

멀티모델 데이터베이스는 이러한 기능들을 하나의 시스템으로 결합합니다. 예를 들어, ArangoDB는 키-값, 문서 및 그래프 모델을 지원하여 별도의 데이터베이스가 필요하지 않습니다.

본 문서는 Jakarta NoSQL을 사용하여 Java 애플리케이션에서 ArangoDB를 사용하여 키-값 및 문서 모델을 탐색하는 방법을 보여줍니다.

ArangoDB 설정하기

ArangoDB를 시작하기 위해 Docker는 서드파티 서비스를 관리하는 간단한 방법을 제공합니다. 다음 명령어를 실행하면 ArangoDB 인스턴스를 쉽게 설정할 수 있습니다:

Shell

 

키-값 데이터 탐색하기

키-값 데이터베이스는 간단한 데이터 모델에 이상적입니다. ArangoDB의 키-값 기능을 사용하여 공항 데이터를 관리하는 샘플 애플리케이션을 만들어 보겠습니다. Airport 엔티티에는 code (ID)와 name 두 개의 필드가 포함됩니다.

Java

 

엔티티가 정의되면 KeyValueTemplate을 사용하여 데이터베이스와 상호작용할 수 있습니다. 이 튜토리얼에서는 Eclipse JNoSQL를 사용하여 주석을 넘어 Jakarta NoSQL 기능을 더 많이 탐색할 것입니다. Eclipse JNoSQL이 Jakarta Data를 구현하고 지원하면 리포지토리를 생성할 수 있습니다.

Java

 

이 프로그램은 무작위 공항 레코드를 생성하고, 데이터베이스에 삽입한 후 검색합니다. 로컬에서 실행 중이라면 다음 URL을 사용하여 브라우저로 데이터베이스의 값을 확인할 수 있습니다:

http://localhost:8529/_db/airport/_admin/aardvark/index.html#collections

문서 데이터 작업하기

Jakarta NoSQL은 상속 및 계층적 데이터 모델링 지원을 포함한 문서 데이터베이스 작업에 풍부한 기능을 제공합니다. 일반적으로 NoSQL 데이터베이스는 이러한 기능을 기본적으로 지원하지 않지만, Jakarta NoSQL은 API를 통해 이 간극을 메꿉니다. 우리는 클라우드 제공업체 데이터를 관리하기 위해 Jakarta NoSQL을 ArangoDB와 함께 사용하여 두 가지 전문화인 Amazon Web Services (AWS)와 Azure를 포함합니다.

Jakarta NoSQL은 문서 데이터베이스에서 상속을 관리하기 위해 @DiscriminatorColumn, @DiscriminatorValue, @Inheritance 주석을 사용합니다.

  • @DiscriminatorColumn 주석은 데이터베이스 문서에서 엔티티 유형을 식별하는 데 사용되는 필드를 지정합니다.
  • @DiscriminatorValue 주석은 각 하위 클래스에 대한 특정 값을 정의하여 올바르게 식별되도록합니다.
  • @Inheritance 주석은 클래스 계층 구조가 데이터베이스로 매핑될 것임을 나타냅니다.

먼저, 클라우드 제공업체를 위한 베이스 클래스를 정의합니다:

Java

 

다음으로, 전문화된 클라우드 제공업체 클래스를 소개합니다. 이 예제는 Jakarta NoSQL이 @DiscriminatorValue 주석을 활용하여 다른 문서 유형을 구별하는 방법을 보여줍니다. 각 전문화 – AWS 및 Azure -는 베이스 CloudProvider 클래스를 상속하면서 각 제공업체에 고유한 속성을 정의합니다. 또한 데모 목적으로 샘플 데이터를 생성하기 위한 팩토리 메서드 (of)도 제공됩니다.

AWSCloudProvider

Java

 

AzureCloudProvider

Java

 

마지막으로, DocumentTemplate을 사용하여 데이터베이스와 상호 작용하는 방법을 살펴봅시다. 이 코드는 AWS 및 Azure 공급 업체의 인스턴스를 생성하고 데이터베이스에 삽입하고 검색하는 방법을 보여줍니다. 이 구현은 데이터 지속성을 처리하기 위해 Jakarta NoSQL의 API를 활용하며, 저장 및 검색 중에 상속 및 판별자 로직이 원활하게 적용됩니다.

Java

 

결론

ArangoDB의 멀티모델 기능은 현대 애플리케이션에 대한 다재다능한 선택지를 제공합니다. 단일 데이터베이스에서 키-값 및 문서 모델을 결합하면 데이터 아키텍처를 간단하게 유지하면서도 유연성을 유지할 수 있습니다. Jakarta NoSQL을 사용하면 ArangoDB를 Java 애플리케이션에 원활하게 통합할 수 있으며, 익숙한 주석 및 프로그래밍 패러다임을 활용할 수 있습니다.

전체 코드는 GitHub 저장소를 방문하십시오.

Source:
https://dzone.com/articles/arangodb-success-through-multivalue-database