Mutation API 레퍼런스
엣지 뮤테이션 API. 개념적 배경은 뮤테이션을 참고하세요.
1. 엣지 뮤테이션
섹션 제목: “1. 엣지 뮤테이션”소스 노드와 타겟 노드 사이의 엣지를 변경합니다.
엔드포인트
섹션 제목: “엔드포인트”POST /graph/v3/databases/{database}/tables/{table}/edges파라미터
섹션 제목: “파라미터”| 위치 | 파라미터 | 필수 여부 | 설명 |
|---|---|---|---|
| Header | Authorization | 선택 | 인증 키 (향후 사용을 위해 예약됨) |
| Path | database | 필수 | 타겟 데이터베이스 이름 |
| Path | table | 필수 | 타겟 테이블 이름 |
| Query | lock | 선택 (기본값: true) | 뮤테이션 중 락 획득 여부 |
| Body | mutations | 필수 | 뮤테이션 항목 목록 |
요청 바디
섹션 제목: “요청 바디”EdgeBulkMutationRequest - 뮤테이션 항목을 포함한 페이로드
응답 타입
섹션 제목: “응답 타입”EdgeMutationResponse - 뮤테이션 결과를 포함한 페이로드
요청 예시
섹션 제목: “요청 예시”| 파라미터 | 값 |
|---|---|
| Authorization | YOUR_API_KEY |
| database | your_database |
| table | your_table |
| lock | true |
# POST /graph/v3/databases/your_database/tables/your_table/edgescurl -X POST \ "http://ab.example.com/graph/v3/databases/your_database/tables/your_table/edges?lock=true" \ -H "Authorization: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "mutations": [ { "type": "INSERT", "edge": { "version": 1, "source": "source1", "target": "target1", "properties": { "weight": 0.8, "type": "FOLLOWS" } } } ] }'응답 예시
섹션 제목: “응답 예시”{ "results": [ { "source": "source1", "target": "target1", "status": "CREATED", "count": 1 } ]}2. 엣지 뮤테이션 (동기)
섹션 제목: “2. 엣지 뮤테이션 (동기)”엣지를 동기적으로 변경합니다. 이 엔드포인트는 뮤테이션이 완료될 때까지 기다린 후 응답을 반환합니다.
엔드포인트
섹션 제목: “엔드포인트”POST /graph/v3/databases/{database}/tables/{table}/edges/sync파라미터
섹션 제목: “파라미터”| 위치 | 파라미터 | 필수 여부 | 설명 |
|---|---|---|---|
| Header | Authorization | 선택 | 인증 키 (향후 사용을 위해 예약됨) |
| Path | database | 필수 | 타겟 데이터베이스 이름 |
| Path | table | 필수 | 타겟 테이블 이름 |
| Query | lock | 선택 (기본값: true) | 뮤테이션 중 락 획득 여부 |
| Body | mutations | 필수 | 뮤테이션 항목 목록 |
요청 바디
섹션 제목: “요청 바디”EdgeBulkMutationRequest - 뮤테이션 항목을 포함한 페이로드
응답 타입
섹션 제목: “응답 타입”EdgeMutationResponse - 뮤테이션 결과를 포함한 페이로드
요청 예시
섹션 제목: “요청 예시”| 파라미터 | 값 |
|---|---|
| Authorization | YOUR_API_KEY |
| database | your_database |
| table | your_table |
| lock | true |
# POST /graph/v3/databases/your_database/tables/your_table/edges/synccurl -X POST \ "http://ab.example.com/graph/v3/databases/your_database/tables/your_table/edges/sync?lock=true" \ -H "Authorization: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "mutations": [ { "type": "UPDATE", "edge": { "version": 2, "source": "source1", "target": "target1", "properties": { "weight": 0.9, "type": "FOLLOWS" } } } ] }'응답 예시
섹션 제목: “응답 예시”{ "results": [ { "source": "source1", "target": "target1", "status": "UPDATED", "count": 1 } ]}3. 멀티 엣지 뮤테이션
섹션 제목: “3. 멀티 엣지 뮤테이션”엣지 ID로 식별되는 멀티 엣지를 변경합니다.
엔드포인트
섹션 제목: “엔드포인트”POST /graph/v3/databases/{database}/tables/{table}/multi-edges파라미터
섹션 제목: “파라미터”| 위치 | 파라미터 | 필수 여부 | 설명 |
|---|---|---|---|
| Header | Authorization | 선택 | 인증 키 (향후 사용을 위해 예약됨) |
| Path | database | 필수 | 타겟 데이터베이스 이름 |
| Path | table | 필수 | 타겟 테이블 이름 |
| Query | lock | 선택 (기본값: true) | 뮤테이션 중 락 획득 여부 |
| Body | mutations | 필수 | 뮤테이션 항목 목록 |
요청 바디
섹션 제목: “요청 바디”MultiEdgeBulkMutationRequest - 뮤테이션 항목을 포함한 페이로드
응답 타입
섹션 제목: “응답 타입”MultiEdgeMutationResponse - 뮤테이션 결과를 포함한 페이로드
요청 예시
섹션 제목: “요청 예시”| 파라미터 | 값 |
|---|---|
| Authorization | YOUR_API_KEY |
| database | your_database |
| table | your_table |
| lock | true |
# POST /graph/v3/databases/your_database/tables/your_table/multi-edgescurl -X POST \ "http://ab.example.com/graph/v3/databases/your_database/tables/your_table/multi-edges?lock=true" \ -H "Authorization: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "mutations": [ { "type": "INSERT", "edge": { "version": 1, "id": "edge1", "source": "source1", "target": "target1", "properties": { "weight": 0.8, "type": "FOLLOWS" } } } ] }'응답 예시
섹션 제목: “응답 예시”{ "results": [ { "id": "edge1", "status": "CREATED", "count": 1 } ]}4. 멀티 엣지 뮤테이션 (동기)
섹션 제목: “4. 멀티 엣지 뮤테이션 (동기)”멀티 엣지를 동기적으로 변경합니다. 이 엔드포인트는 뮤테이션이 완료될 때까지 기다린 후 응답을 반환합니다.
엔드포인트
섹션 제목: “엔드포인트”POST /graph/v3/databases/{database}/tables/{table}/multi-edges/sync파라미터
섹션 제목: “파라미터”| 위치 | 파라미터 | 필수 여부 | 설명 |
|---|---|---|---|
| Header | Authorization | 선택 | 인증 키 (향후 사용을 위해 예약됨) |
| Path | database | 필수 | 타겟 데이터베이스 이름 |
| Path | table | 필수 | 타겟 테이블 이름 |
| Query | lock | 선택 (기본값: true) | 뮤테이션 중 락 획득 여부 |
| Body | mutations | 필수 | 뮤테이션 항목 목록 |
요청 바디
섹션 제목: “요청 바디”MultiEdgeBulkMutationRequest - 뮤테이션 항목을 포함한 페이로드
응답 타입
섹션 제목: “응답 타입”MultiEdgeMutationResponse - 뮤테이션 결과를 포함한 페이로드
요청 예시
섹션 제목: “요청 예시”| 파라미터 | 값 |
|---|---|
| Authorization | YOUR_API_KEY |
| database | your_database |
| table | your_table |
| lock | true |
# POST /graph/v3/databases/your_database/tables/your_table/multi-edges/synccurl -X POST \ "http://ab.example.com/graph/v3/databases/your_database/tables/your_table/multi-edges/sync?lock=true" \ -H "Authorization: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "mutations": [ { "type": "DELETE", "edge": { "version": 3, "id": "edge1", "source": "source1", "target": "target1", "properties": {} } } ] }'응답 예시
섹션 제목: “응답 예시”{ "results": [ { "id": "edge1", "status": "DELETED", "count": 1 } ]}이벤트 타입
섹션 제목: “이벤트 타입”뮤테이션 항목의 type 필드는 수행할 작업을 지정합니다:
| 타입 | 설명 |
|---|---|
INSERT | 새 엣지를 생성하거나 기존 엣지를 새 버전으로 업데이트합니다 |
UPDATE | 기존 엣지의 프로퍼티를 업데이트합니다 |
DELETE | 엣지를 삭제합니다 (삭제됨으로 표시) |
락 파라미터
섹션 제목: “락 파라미터”lock 파라미터는 뮤테이션 중 락 획득 여부를 제어합니다:
- true (기본값): 동시 수정을 방지하기 위해 락을 획득합니다. 데이터 일관성을 보장하지만 지연 시간이 높아질 수 있습니다.
- false: 락을 건너뜁니다. 더 빠르지만 여러 뮤테이션이 동시에 같은 엣지를 대상으로 할 경우 경쟁 조건이 발생할 수 있습니다.
참고: 데이터 일관성을 보장하기 위해 프로덕션 환경에서는 lock=true를 사용하는 것이 권장됩니다.
데이터 모델
섹션 제목: “데이터 모델”EdgeBulkMutationRequest
섹션 제목: “EdgeBulkMutationRequest”엣지 뮤테이션 요청 페이로드.
data class EdgeBulkMutationRequest( val mutations: List<MutationItem>, // 뮤테이션 항목 목록) { data class MutationItem( val type: EventType, // 이벤트 타입 (INSERT, UPDATE, DELETE) val edge: Edge, // 엣지 데이터 )}MultiEdgeBulkMutationRequest
섹션 제목: “MultiEdgeBulkMutationRequest”멀티 엣지 뮤테이션 요청 페이로드.
data class MultiEdgeBulkMutationRequest( val mutations: List<MutationItem>, // 뮤테이션 항목 목록) { data class MutationItem( val type: EventType, // 이벤트 타입 (INSERT, UPDATE, DELETE) val edge: MultiEdge, // 멀티 엣지 데이터 )}EdgeMutationResponse
섹션 제목: “EdgeMutationResponse”엣지 뮤테이션 응답 페이로드.
data class EdgeMutationResponse( val results: List<Item>, // 뮤테이션 결과 목록) { data class Item( val source: Any, // 소스 노드 ID val target: Any, // 타겟 노드 ID val status: String, // 뮤테이션 상태 (예: CREATED, UPDATED, DELETED) val count: Int, // 영향받은 엣지 수 )}MultiEdgeMutationResponse
섹션 제목: “MultiEdgeMutationResponse”멀티 엣지 뮤테이션 응답 페이로드.
data class MultiEdgeMutationResponse( val results: List<Item>, // 뮤테이션 결과 목록) { data class Item( val id: Any, // 엣지 ID val status: String, // 뮤테이션 상태 (예: CREATED, UPDATED, DELETED) val count: Int, // 영향받은 엣지 수 )}Edge
섹션 제목: “Edge”뮤테이션을 위한 개별 엣지 정보.
data class Edge( val version: Long, // 엣지 버전 val source: Any, // 소스 노드 ID val target: Any, // 타겟 노드 ID val properties: Map<String, Any?>, // 엣지 프로퍼티)MultiEdge
섹션 제목: “MultiEdge”뮤테이션을 위한 개별 멀티 엣지 정보.
data class MultiEdge( val version: Long, // 엣지 버전 val id: Any, // 엣지 ID val source: Any? = null, // 소스 노드 ID (선택) val target: Any? = null, // 타겟 노드 ID (선택) val properties: Map<String, Any?>, // 엣지 프로퍼티)