이제 이것이 끝이 아닙니다. 끝의 시작도 아닙니다. 그러나 그것은 아마도 시작의 끝일 것입니다. - 윈스턴 처칠

데이터 업데이트는 일반적으로 끝이 아니라 워크플로우의 진행 과정입니다. 주문 후 배송, 재고 업데이트 후 배송, 반품 후 크레딧 조정 등 워크플로우를 계속 진행하기 위해서는 다음 단계의 작업이 필요합니다. 워크플로는 몇 단계로 단순할 수도 있고 수백 단계로 복잡할 수도 있습니다.  비즈니스 프로세스 관리 (BPM)은 그 자체로 하나의 산업입니다.

Couchbase 5.5 도입 저녁 서비스. 개발자는 데이터 변경 시 실행할 자바스크립트 함수를 작성할 수 있습니다. 삽입, 업데이트, 병합 및 삭제는 다음과 같이 함께 참조합니다. 돌연변이. 여러 가지 구체적인 사용 사례 문서화되었습니다. 개발하기 위해 이벤트 함수.

JSON 카우치베이스의 데이터 모델은 자바스크립트.  N1QL 은 JSON용 SQL입니다. 이벤트 함수는 자바스크립트로 작성되며 N1QL이 통합되어 있습니다. 이벤트 함수를 사용하면 데이터에 즉시 액세스할 수 있는 절차적 비즈니스 로직을 쉽게 작성할 수 있습니다.

다음은 개발자의 관점에서 본 함수의 수명 주기입니다. 모든 변이에 대해 실행할 함수를 원하는 수만큼 정의할 수 있습니다. 변이 수에 따라 함수의 실행 시간을 조정하는 것은 개발자의 책임입니다.

이벤트 함수의 라이프사이클은 다음과 같습니다:

 

모든 삽입, 업데이트 또는 삭제(직접 또는 만료)에 대해 하나 이상의 자바스크립트 함수를 실행할 수 있습니다. 이러한 함수는 새 데이터와 작업 유형을 읽은 다음 후속 작업을 실행할 수 있습니다. 이 기능은 Couchbase 블로그 및 문서에 잘 설명되어 있습니다.

문 유형 이벤트 함수 호출
선택 없음
삽입 OnUpdate(). 함수가 호출됩니다. 삽입된 문서당 한 번만 입력합니다. 단순 삽입은 단일 문서를 삽입합니다. 삽입은 VALUES 절에 여러 문서를 사용하여 여러 문서를 포함하거나 INSERT INTO...SELECT 문을 통해 여러 문서를 삽입할 수 있습니다.
업데이트 OnUpdate()가 호출됩니다. 동일한 문서에 대한 여러 업데이트가 단일 업데이트로 중복 제거되는 경우를 제외하고는 업데이트된 문서당 한 번만 가능합니다. 업데이트 문은 여러 문서를 업데이트할 수 있습니다.
UPSERT OnUpdate(). 동작은 INSERT와 유사합니다.
삭제 OnDelete(). 문서가 삭제될 때마다 한 번씩 호출됩니다.
MERGE 삽입, 업데이트 및 삭제 작업에 따라 OnUpdate() 및/또는 OnDelete()를 호출합니다.
색인 생성, 색인 삭제, 설명, 준비, 승인, 취소 이벤트 함수가 호출되지 않습니다.
실행 실행되는 문 유형에 따라 다릅니다.

이러한 함수는 N1QL 문을 실행할 수도 있습니다. 이 글의 나머지 부분에서는 이벤트 함수에서 실행되는 N1QL의 모든 측면을 살펴봅니다.

이벤트 함수의 N1QL 문.

성명서 이벤트 함수의 N1QL 문 사용 사례
인덱스 생성 스키마는 유연하기 때문에 데이터를 자주/주기적으로 검사하여 새로운 필드를 감지한 다음 색인을 생성할 수 있습니다.
삭제 계단식 삭제.
드롭 인덱스 인덱스 만들기 사용 사례에 대한 추론입니다.
INFER 구조에 대한 버킷을 주기적으로 점검합니다. 그런 다음 필요한 경우 조치를 취합니다(유효성 검사, 인덱스 생성, 데이터 모델 업데이트).
삽입 참조 데이터 유지 관리(궁극적으로).

이 데이터를 참조하여 다른 문서를 업데이트합니다. 예: 새 우편 번호, 주 등의 데이터.

데이터를 2차/3차 문서로 (전체 또는 일부) 복사합니다. 트리거 후 작업과 유사합니다.

MERGE 보조 데이터를 동기화 상태로 유지하세요.
선택 데이터를 가져오고, 주기적으로 보고서를 실행하는 등의 작업을 수행합니다.

데이터 품질, 데이터 유효성 등 다양한 사항을 확인합니다,

대상 문서 키를 알고 있는 경우 기본 제공 직접 문서 참조를 사용하세요. 예시를 참조하세요: https://docs.couchbase.com/server/5.5/eventing/eventing-examples.html

UPSERT 보조/보조 데이터 동기화 유지.

트리거 후 동작과 유사합니다.

업데이트 보조/보조 데이터 동기화 유지.

트리거 후 동작과 유사합니다.

예제: 예: N1QL로 몇 가지 이벤트 함수를 사용해 보겠습니다.

  1. 로깅 및 계단식 삭제를 위한 함수의 간단한 N1QL.

삭제한 모든 문서를 별도의 버킷에 저장하세요.

  1. OnUpdate() 함수를 사용하여 집계 정보를 주기적으로 준비할 수 있습니다.

참조:

  1. 카우치베이스 문서: https://docs.couchbase.com/server/5.5/eventing/eventing-overview.html
  2. 카우치베이스의 이벤트 관련 블로그: https://www.couchbase.com/blog/tag/eventing/

작성자

게시자 케샤브 머시

케샤브 머시는 Couchbase R&D의 부사장입니다. 이전에는 MapR, IBM, Informix, Sybase에서 근무했으며 데이터베이스 설계 및 개발 분야에서 20년 이상의 경력을 쌓았습니다. IBM Informix에서 SQL 및 NoSQL R&D 팀을 이끌었습니다. Couchbase에서 두 번의 President's Club 상을, IBM에서 두 번의 우수 기술 업적상을 수상했습니다. 인도 마이소르 대학교에서 컴퓨터 과학 및 공학 학사 학위를 받았으며, 10개의 미국 특허를 보유하고 있고 3개의 미국 특허를 출원 중입니다.

댓글 남기기