개발 일지/주간 개발 일지

[07월 1주차] Mybatis 바인딩 에러 해결 및 PostgreSQL 배열 관련 메서드

계란💕 2023. 7. 10. 23:18

PostgreSQL - 배열, 문자열 관련 메서드

  • generate_subscripts(배열명, 아래 첨자): 배열의 요소를 서브스크립트 형식으로 변환해서 반환한다. 
    • 배열 arr = {a, b, c}  .... (1은 아래 첨자) 이라고 하면
    • 배열의 각 요소에 아래 첨자를 붙여서 [a1, b1, c1]를 반환한다. 
  • string_agg(필드명, '구분자'):
    • 그룹별로 id로 구분해서 필드 name 값을 모두 콤마로 이어붙일 수 있다. 
generate_subscripts(array, 1)
string_agg(name, ',')

 

 

 

에러 해결


  • 오류: BindingException
  • 원인 : Mapper 인터페이스에 정의한 메서드명과 sql.xml 파일에 정의한 메서드명이 일치해야한다. 
  • 해결 
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): kr.co.models.mapper.modelMapper.selectModelList
	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:235)

 


org.apache.ibatis.binding.BindingException: Mapper method 'kr.co.n2.model.mapper.insertModel' has an unsupported return type: class java.lang.String
  • 오류: BindingException
  • 원인: Mapper 인터페이스 안에 있는  insertModel() 메서드의 반환 타입을 String으로 설정했는데 쿼리의 반환값이 String이 아니라서 오류가 생겼다. 
  • 해결

 


org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'rdfFormMtcdArray' in 'class kr.co.n2m.platform.meta.rdf.rdfclass.domain.RdfClassSearchVo'
  • 오류
  • 원인 
  • 해결

 

 

업무 관련 배경 지식

  • 회사에서 metadata 관련 부서로 옮기면서 업무 내용이 많이 달라졌다. 
  • metadata와 RDF 관련 업무를 맡게 되서 관련 내용을 알아보려고 한다. 

메타데이터란?

  • 메타데이터(MetaData): 데이터에 관한 구조화된 데이터를 말한다. 
    • 데이터를 기술하기 위해 사용되는 언어를 메타 언어라고 한다. 
    •  데이터를 빨리 찾기 위해 인덱스 역할을 하는 메타 데이터가 존재한다. 
    • 아래과 같은 종류가 있다.
    • 기술 메타데이터(Descriptive Metadata)
    • 구조 메타데이터(Structual Metadata)
    • 관리 메타데이터(Administrative Metadata)

 


RDF(Resource Description Framework, 자원 기술 프레임워크) 란?

  • RDF란 자원의 정보를 표현하고 상호 연결 및 교환하기 위해서 월드 와이드 웹 컨소시엄(W3C, World Wide Web Consortium)에 의해 개발되고 있는 언어 규격이다. 
  • 여기서 자원이란 웹 상에 존재하는 대부분의 객체를 의미한다.  사람이나, 웹 페이지, 저작물과 같은 특정지을 수 있는 개체들이 해당된다. 
  • RDF는 그래프 형태로 연결되어 다양한 관계를 표현할 수 있다. 
  • 즉, RDF는 그래프 구조를 통해 데이터 간의 연결성을 표현하고 검색할 수 있도록 한다. 
  • RDF는 이런 자원들의 메타데이터를 표현하기 위해 개발된 규격이다. 
    • resource:URI를 갖는 모든 자원
    • description: 자원들의 속성, 특성, 관계를 기술한다. 
    • framework: 자원과 속성을 기술하기 위한 모델, 언어, 문법

참고)
https://velog.io/@whanhee97/DCAT-v2 

https://givemetarte.github.io/knowledge-graph/what-is-rdf/

https://narup.tistory.com/2


Turtle 과 Owl

  • Turtle과 Owl은 모두 RDF 데이터 모델을 기반으로 한 웹 상의 정보 표현을 위한 언어이다. 
  • Turtle: RDF 데이터를 텍스트 형식으로 표현하기 위해 간단하고 가독성 좋다. 
  • Owl: 상대적으로 복잡한 온톨로지 구조를 표현하기 위한 언어로 Turtle 보다 표현력이 좋다. 
  • RDF 데이터를 텍스트 형식으로 표현하기 위한 간단하고 가독성 좋은 구문이다. 
  • 이를 사용해서 RDF그래프를 작성할 수 있으며 텍스트 파일로 저장하거나 전송가능하다. 

 


 SPARQL  (SPARQL Protocol And RDF Query Language)

  • W3C 표준 언어로 DB에서 RDF를 쿼리하는데 사용된다. 
  • 웹에 공개된 각종 RDF 데이터로부터 원하는 데이터를 꺼내올 수 없기 때문에 SPARQL을 사용한다. 
  • RDBMS에서 SQL를 사용한다면  RDF에는 SPARQL이 있다. 
  • 기본적으로 트리플 패턴으로 사용자가 찾고자하는 결과를 찾아온다. (S: 주어/ P: 서술어/ O: 목적어)

 


디지털 트윈과 시뮬레이션의 차이점

  • digital twin: 물리적인 물체를 정확하게 반영하도록 설계된 가상 모델이다. 
  • 시뮬레이션과 디지털 트윈은 모두 디지털 모델을 통해서 시스템의 다양한 프로세스를 복제하지만 디지털 트윈은 실제적인 가상 환경이기 때문에  연구 대상이 더욱 풍부하다. 
    • 시뮬레이션은 일반적으로 하나의 특정 프로세스를 연구한다면 디지털 트윈은 다양한 프로세스를 연구하도록 유용한 시뮬레이션을 얼마든지 실행하는 게 가능하다. 
    • 시뮬레이션에서는 실시간 데이터가 필요 없다.

참고)

https://www.ibm.com/kr-ko/topics/what-is-a-digital-twin

 


core와 스레드

  • Core(코어): CPU(중앙 처리 장치) 안에서 실제 연산 처리를 담당하는 부분이다. 컴퓨터에서 데이터를 처리하기 위해 존재하는 물리적인 요소이다. 
    • CPU 칩 안에 내장되어 있다
    • 각 코어는 독립적으로 명령어를 실행하고 연산을 수행할 수 있다. 
    • 하나의 CPU에는 여러 개의 코어가 있을 수 있다.
    • 코어는 일련의 전기 신호 클록 속도에 의해 동작한다. 
    • 클록: CPU 내에서 발생하는 신호이다. 일정 속도로 코어의 동작을 조정한다. 
    • 프로세스와 스레드를 실행하고 관리한다.
    • 코어는 스레드 간의 스케줄링과 작업 분배를 담당하고 프로세스의 처리를 조정한다. 
    • 코어는 병렬성을 통해 여러 작업을 동시에 실행하고 전체적인 속도를 향상시킨다. 
  • 코어가 많을수록 작업 처리 속도가 빨라진다.
    • ex) 코어 - 요리사, 스레드 - 가스레인지 화구 수 라고 생각할 수 있다. 
  • CPU의 사양을 결정하는 요소에는 코어의 수, 동작 속도를 뜻하는 클럭(clock) 수치, 자주 이용하는 데이터를 임시 저장해둬서 작업 속도를 높이는 캐시(cache) 메모리의 용량 등이 있다. 

 

  • Thread(스레드)
    • 프로세스(OS로부터 자원을 할당받아 실행중인 프로그램)의 실행 단위를 스레드라고 한다. 
    • 스레드가 많을수록 작업 처리 속도가 빨라진다. 
  • 원래는 코어 하나당 스레드 하나가 기본 구성이었으나 효율을 높이기 위해 스레드를 여러 개 사용할 수 있도록 만들었다.