피드로 돌아가기
Validating lists in Okyline: uniqueness, order, and cross-element rules
Dev.toDev.to
Backend

Okyline 기반 Business Key 유일성 및 리스트 간 정합성 검증 설계

Validating lists in Okyline: uniqueness, order, and cross-element rules

Pierre-Michel Bret2026년 5월 26일7intermediate

Context

JSON Schema의 uniqueItems는 객체 전체를 비교하므로 특정 필드 기준의 유일성 보장이 불가한 한계 존재. 리스트 내 요소 간의 시간적 순서나 컬렉션 전체와 단일 필드 간의 상호 참조 정합성을 선언적으로 검증할 수 있는 구조적 필요성 대두.

Technical Solution

  • Business Key 지정(#)과 유일성 제약(! )의 결합을 통한 특정 필드 기반 중복 데이터 차단
  • Iteration Context Variable(isFirst, prev)을 활용해 이전 요소의 Timestamp와 현재 요소를 비교하는 Chronological Order 검증 로직 구현
  • Collection-level Compute 식을 통해 리스트의 첫 번째 요소(first)가 특정 상태(CREATED)인지 확인하는 Business Invariant 강제
  • lastOf, exists 함수를 이용해 리스트의 최종 상태값과 단일 필드(actualStep, isShipped) 간의 데이터 일관성을 교차 검증하는 Cross-collection Check 설계
  • 검증 로직을 데이터 정의와 동일한 문서 내 $compute 섹션에 통합하여 단일 진실 공급원(Single Source of Truth) 구조 확보

1. JSON 리스트 검증 시 전체 객체 비교가 아닌 특정 Business Key 기준의 유일성 제약이 필요한지 확인

2. 상태 전이 데이터 처리 시 이전 요소와의 비교를 통한 순서 정합성 검증 로직 도입 검토

3. 리스트 내 특정 상태 존재 여부가 외부 플래그 필드와 동기화되어야 하는 경우 Cross-collection 검증 패턴 적용

원문 읽기