분류

Spring을 사용하여 Couchbase에 타임스탬프 메트릭 저장하기

Spring을 사용하여 Couchbase에 타임스탬프 메트릭 저장하기

나는 이전 블로그 스프링 데이터 카우치베이스에 대한 소개입니다. 이 게시물은 그 후속 글입니다. 이번 글에서는 Spring 소셜 커넥터를 사용하여 트위터에서 들어오는 데이터를 저장하는 방법을 보여드리겠습니다.

문서 구조

Java 개발과 관련하여 자주 받는 질문 중 하나는 "ODM(객체 문서 매퍼)이 있나요?"입니다. 현재 저희 SDK에는 Java ODM이 제공되지 않지만 스프링 데이터 카우치베이스에는 있습니다. 이제 POJO에 대해 조금 더 알아보고 이를 어떻게 JSON으로 매핑하여 Couchbase에 저장하는지 알아보겠습니다. 다음은 TwitterUpdate 클래스를 사용한 실제 예제입니다:

몇 가지 주석을 보셨을 텐데요, 각 주석은 스프링 데이터 카우치베이스가 POJO를 카우치베이스 문서에 매핑하는 데 도움이 됩니다. 기본적인 것들만 간단히 살펴보겠습니다.

문서

그 목적은 주석이 달린 클래스가 Couchbase 문서로 저장될 것이라는 신호를 spring-data-couchbase에 보내는 것입니다. "만료" 옵션을 사용하여 이러한 모든 저장된 객체에 대해 TTL을 설정할 수 있습니다. 기본값은 0이며, 이는 객체가 만료되지 않음을 의미합니다.

@Id

이 필드의 목적은 문서의 어떤 필드를 Couchbase에 저장할 키로 사용할지 정의하는 것입니다. 이 필드는 필수이며 최대 250자이어야 합니다.

필드

그 목적은 주석이 달린 필드가 Couchbase에 저장된 문서의 일부가 된다는 것을 의미합니다. 기본 동작은 필드 이름을 JSON 객체 키로 사용하지만 필드 어노테이션에 사용자 정의 값을 지정하여 고유한 값을 정의할 수 있습니다. 예를 들어 키 필드를 살펴보세요.

이제 POJO가 준비되었습니다. 이를 저장하기 위해 이전 포스트에서 했던 것처럼 CouchbaseClient Bean을 사용할 수 있습니다. 하지만 여기서는 사용자 정의 리포지토리를 만드는 것이 좋습니다.

Spring 데이터 리포지토리

한동안 Java 엔터프라이즈 코드를 사용해 왔거나 Spring에 익숙하다면 리포지토리에 대해 거의 확실하게 알고 계실 것입니다. 현재 Spring 데이터 카우치베이스는 CRUD저장소. 기본 CRUD 메서드(get, 저장, 삭제, 업데이트, findAll)에 액세스할 수 있습니다.

설정은 간단합니다. CRUDRepository 인터페이스를 확장하는 인터페이스를 만든 다음 제네릭을 사용하여 객체의 유형과 이 리포지토리에 데이터를 저장하는 데 사용되는 키를 정의하기만 하면 됩니다.

이것이 예상대로 작동하고 런타임에 Spring 프레임워크에 의해 리포지토리 구현이 자동으로 생성되도록 하려면 애플리케이션 클래스에 @EnableCouchbaseRepositories를 추가해야 합니다. 이 리포지토리 구현은 Spring Bean이 될 것이며, 따라서 인젝션이 가능합니다.

findAll, deleteAll 또는 count 메서드를 시도하면 즉시 작동하지 않습니다. 그 이유는 이 메서드들이 Couchbase 측의 사용자 정의 보기에 의존하기 때문입니다. 다른 모든 메서드는 문서의 키에 의존하기 때문에 작동합니다. 이제 우리 POJO에 대한 모든 보기를 만들어 보겠습니다. 규칙은 찾기무언가 메서드를 저장소에 추가하는 것은 무언가 뷰를 만듭니다. 따라서 지금은 다음과 같은 뷰를 만들어야 합니다. 모두 에 대한 트위터 업데이트 디자인 문서. 정말 간단합니다. 카운트 방법을 사용하려면 기본 제공 감소 중 하나를 클릭하여 카운트 감소를 추가하는 것을 잊지 마세요:

다음 질문은 문서의 키가 아닌 다른 것을 사용하여 쿼리하려면 어떻게 해야 하나요? 일반적으로 Couchbase에서는 검색하려는 속성을 키로 사용하여 새 보기를 만듭니다. 제 경우에는 'doc.account'가 될 것입니다.

이전과 동일한 규칙을 사용하여 트위터업데이트저장소 인터페이스에 findByAccount 메서드를 추가할 수 있습니다. 이 메서드는 쿼리 객체를 매개변수로 받습니다. 이는 또한 byAccount로 호출할 뷰가 필요하다는 것을 의미합니다:

이제 이 메서드를 사용하려면 적절한 쿼리 객체를 정의해야 합니다. 간단합니다:

리포지토리를 제 기본 메서드에 직접 사용할 수도 있지만, 이는 의미상 좋지 않을 것입니다. 애플리케이션의 '지속성' 부분에 대한 호출은 일반적으로 비즈니스 측면에서 발생합니다. 서비스에 속합니다.

스프링 서비스

Spring 서비스를 생성하려면 새 클래스를 추가하고 @Service 어노테이션으로 어노테이션을 추가합니다. 컴포넌트 어노테이션을 사용하는 것과 비슷하지만 의미론적인 의미가 더 추가됩니다. 다시 말하지만 서비스는 비즈니스 로직을 넣는 곳입니다. 컨트롤러나 리포지토리와 같은 다른 전문화된 어노테이션도 있습니다. 왜 이렇게 구분할까요? 다음과 같은 경우 구분하는 것이 유용할 수 있습니다. AOP.

트위터 클래스를 애플리케이션 클래스에서 빈으로 선언하고 @ComponentScan 어노테이션을 추가했기 때문에 트위터 클래스를 자동 와이어링할 수 있습니다. 모든 속성은 내 Couchabse 서버 구성과 마찬가지로 속성 파일에 정의되어 있습니다. 이 파일은 spring-social-twitter 프로젝트에서 가져온 것으로, 트위터 API에 대해 몇 가지 쿼리를 쉽게 실행할 수 있게 해줍니다. 이를 통해 트위터 업데이트 객체를 생성하고 TwitterUpdateRepository를 통해 카우치베이스에 저장할 수 있습니다.

여기서 흥미로운 점은 문서 키가 어떻게 만들어지는지 살펴보는 것입니다. 트위터의 경우 'tw'로 시작하고, 검색한 계정의 이름과 타임스탬프가 그 다음입니다. 이렇게 하면 나중에 다른 트위터 계정이나 다른 소셜 네트워크의 메트릭을 추가할 때 멋진 쿼리를 수행할 수 있을 것입니다. 이 모든 계정의 트렌드를 시각화할 수 있는 멋진 대시보드가 표시되는 것을 볼 수 있습니다.

도움이 되셨기를 바랍니다. 다음 블로그 포스팅에서는 Spring에 대한 좀 더 고급 사용 사례(캐싱, 유효성 검사 및 스케줄링)에 대해 다룰 예정입니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 로랑 도귄

Laurent는 파리에 사는 괴짜 금속공학도입니다. 주로 Java로 코드를 작성하고 AsciiDoc으로 구조화된 텍스트를 작성하며 데이터, 리액티브 프로그래밍 및 기타 유행어에 대해 자주 이야기합니다. 또한 Clever Cloud와 Nuxeo의 개발자 옹호자로 활동하며 해당 커뮤니티가 더 크고 강력하게 성장할 수 있도록 자신의 시간과 전문성을 바쳤습니다. 현재 Couchbase에서 개발자 관계를 운영하고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.