NodeType

노드타입 (NodeType)

노드타입은 스키마의 entity를 나타내고 있으며, 스키마 설계시 기본이 되고 필수적으로 정의되어야 합니다. 노드타입은 하위로 메타데이터 속성을 정의하는 프로퍼티 타입과 로직을 처리하는 이벤트로 구성되어 있습니다.

저장소 유형(repositoryType)

repositoryType에 따라서 Infinispan 저장소로 사용할 수도 있고 RDBMS의 테이블과 바인딩 하여 사용할 수도 있습니다.

Node 저장소

Node 저장소는 내부적으로 오픈소스 DataGrid인 Infinispan(http://infinispan.org/)을 이용하여 저장합니다. 설정한 노드 타입별로 Infinispan 저장소를 가지게 되며 각 노드타입은 기본적으로 파일을 이용하여 데이터를 저장하고 있으며, eviction 설정에 따라서 메모리에 적재하여 성능을 보장합니다. 또한, Infinispan에서 지원하는 Lucene기반의 Hibernate Search를 이용하여 인덱싱 및 쿼리를 지원합니다.

Node 저장소와 관련된 노드타입 속성은 다음과 같습니다.

pid

valueType

config

description

pid

valueType

config

description

eviction

INT



메모리 적재 데이터 건수 지정(기본값 10,000), 해당 노드타입의 데이터가 eviction을 초과하면 eviction 사이즈 만큼만 메모리에 적재되고 나머지는 필요시마다 파일을 저장소에서 읽어서 메모리에 적재합니다. 이때, 신규 메모리 적재를 위해서 기존 메모리에 있던 데이터 중에서 LRU 정책에 따라서 사용빈도가 낮은 데이터를 메모리에서 삭제하게 됩니다.

standaloneIndex

BOOLEAN

 

단독 저장 파일 및 인덱싱 사용 여부를 정의합니다. 대량의 데이터가 저장되는 노드타입과 Facetable이나 Sortalbe을 추가로 필요로하는 노드타입은 단독 인덱싱을 사용하여야 합니다.

targetGroup

REFERENCE

referenceType=nodeType
repositoryType=group

만약 해당 노드타입이 특정 Group 노드타입에 소속인 경우에 group 노드타입의 아이디를 설정해야 합니다.

Local 저장소

Local 저장소는 Node 저장소와 동일하게 Infinispan 저장소를 이용하여 저장합니다. Node 저장소와의 다른 부분은 서버간의 데이터 동기화 없이 해당 서버에만 저장한다는 점입니다. 일반적으로 Local 저장소는 로그와 같이 대량의 데이터가 생성되고, 나중에 분석하는 경우에 사용됩니다.

Group 유형

Group 저장소 유형은 저장소 유형이 Node인 다수의 노드 타입의 검색이나 참조를 위해서 대표 노드 타입을 이용하여 인덱싱 및 쿼리를 제공합니다. 이때, Group에 속한 개별 노드타입은 targetGroup에 해당 Group 노드 타입을 지정하여야 합니다.

pid

valueType

config

description

pid

valueType

config

description

groupType

CODE

code=
Standalone, Extend,
Merge,
Integration

그룹 노드타입의 인덱싱 유형을 지정합니다.
Standalone : 하위 노드타입 개별 인덱싱 사용
Extend: 그룹 노드타입의 속성을 상속받아서 하위 노드타입에 정의
Merge: 그룹 노드타입에 하위 노드타입을 포함하여 인덱싱하고, 하위 노드타입은 개별 인덱싱
Integration: 그룹 노드타입과 하위 노드타입의 속성을 결합하여 인덱싱

Data 저장소

Data 저장소는 노드타입 스키마-SQL 매핑을 통하여 DB에 저장하며 현재는 MySQL, Maria, MS-SQL, Oracle, DB2를 지원합니다.

Data 저장소를 이용하기 위해서는 다음과 같이 datasourcetableName을 정의해야 합니다. 그러면, ICE에서는 데이터 저장시에 DB 테이블 스키마를 조회하여 CRUD 쿼리를 자동 생성하고 실행하게 됩니다. Node 저장소를 사용하는 경우에 datasourcetableName를 정의하면 Infinispan 저장소와 DB 저장소를 동시에 지원하게 됩니다.

pid

valueType

config

description

pid

valueType

config

description

datasource

REFERENCE

referenceType=datasource

데이터를 저장하기 위한 DB 커넥션 정보를 정의하는 datasource 노드타입을 지정합니다.

tableName

STRING



datasource로 지정된 DB에 해당 노드타입과 연관된 테이블 명을 저장합니다

useJoin

BOOLEAN

 

Join 기능 사용여부를 지정합니다.

joinTable

STRING

 

Join을 사용하는 경우 Join할 대상 테이블을 지정합니다.

joinColumn

STRING

 

Join에 사용할 컬럼명을 지정합니다.

joinQuery

STRING

 

자동 쿼리 생성 기능으로 Join쿼리를 만들 수 없는 경우에 사용할 Join 쿼리를 직접 정의합니다.

Logic 유형

repositoryType을 logic으로 설정하고, serviceName을 SpringBoot 기반으로 LogicRepository를 implement하도록 개발된 서비스 명칭으로 설정하면 기본적인 CRUD 및 list API 호출시에 해당 서비스를 호출하여 처리합니다.

LogicRepository 인터페이스는 다음과 같습니다.

package net.ion.ice.core.logic; import net.ion.ice.core.context.QueryContext; import net.ion.ice.core.node.Node; import java.util.List; import java.util.Map; public interface LogicRepository { List<Map<String, Object>> list(QueryContext context); Map<String, Object> read(String id); int create(Node node); int update(Node node); int delete(String id); }

주요 속성

저장소 유형(Repository Type)과 관련된 속성 이외의 주요 속성은 다음과 같습니다.

pid

valueType

config

description

pid

valueType

config

description

microservice

REFERENCE

referenceType=nodeType

해당 노드타입이 소속된 마이크로서비스를 지정합니다.

i18n

BOOLEAN

 

해당 노드타입의 다국어 처리 지원 여부를 지정합니다.

historyable

BOOLEAN

 

해당 노드타입의 히스토리 처리 지원 여부를 지정합니다.

uniqueFields

STRING

 

자동 생성 아이디를 가진 노드타입의 스키마 로딩 기능을 이용하기 위하여 아이디 필드 이외에 유니크한 필드를 정의

authorityRule

CODE

code=
RE MO DO,
RG MR DO

권한 자동 생성에 관련된 룰을 정의합니다.
RE MO DO : 모든 사용자(Every)가 조회 가능, 생성자만(Owner) 수정(Modify), 삭제(Delete) 가능
RG MR DO : 그룹 사용자(Group) 조회 가능, 동일 Role 사용자 수정 가능, 생성자만 삭제 가능

filter

STRING

 

해당 노드타입의 데이터 조회 API 제공시 기본적으로 적용되는 검색 조건을 정의합니다.

jsonStore

BOOLEAN

 

해당 노드타입의 JSON 저장 기능 지원 여부를 정의합니다.

statistic

BOOLEAN

 

해당 노드타입의 통계 분석 기능 지원 여부를 정의합니다.

trace

BOOLEAN

 

해당 노드타입의 추적 기능 지원 여부를 정의합니다.

workflow

REFERENCE

 

해당 노드타입의 워크플로우를 지정합니다.

노드 저장 프로세스

Cache 동기화 프로세스