Justin Kim
Logic meets intuition
-
같은 사실, 다른 출처: Named Graph로 신뢰의 경계를 긋다
1. 김철수의 상충하는 프로필 이번에는 유사한 상황에서 Reification이 답이 아닌 상황, 그래서 Named Graph를 사용해야 하는 상황이 있다는 것을 이야기해보려고 합니다. Knowledge Graph를 구축하다 보면, 서로 다른 출처에서 가져온 데이터가 충돌하는 상황을 자주 만납니다. 앞의 Reification에서 다룬 예시와 유사하지만, 이번에는 Reification이 답이 아닌 상황을 다룹니다. 헤드헌터가 김철수의 인재 데이터베이스를 조회하니...
-
시간이 흐르면 사실도 변한다: RDF Reification으로 맥락 기록하기
1. 김철수의 이직 기록 Knowledge Graph를 구축하다 보면, 시간의 흐름에 따라 변하는 사실을 기록해야 하는 순간이 반드시 찾아옵니다. 간단한 예를 들어보겠습니다. 김철수는 2020년부터 2022년까지 삼성전자에서 근무했고, 2023년부터 현재까지 네이버에서 근무하고 있다. 사람이 읽으면 명확합니다. 하지만 이것을 RDF 트리플로 표현하면 어떻게 될까요? ex:김철수 ex:worksAt ex:삼성전자 . ex:김철수 ex:worksAt ex:네이버 . 이...
-
Apache Arrow를 Timely Dataflow에 적용하기 위한 계획
이전 글에서 Timely Dataflow를 위한 전송 프로토콜을 왜 새로 설계해야 하는지, 그리고 5개 레이어 구조의 밑그림을 그렸습니다. 이번 글에서는 그 설계의 한 축이 될 수 있는 Apache Arrow를 살펴보고, 구체적으로 어디에 어떻게 적용할 수 있을지 계획을 세워봅니다. Apache Arrow란 무엇인가 Apache Arrow[1]는 언어 중립적인 컬럼 기반 인메모리 데이터 포맷입니다. 핵심...
-
Timely Dataflow를 위한 전송 프로토콜은 왜 새로 필요한가
Differential Dataflow는 데이터의 변화를 차이(Difference)의 축적으로 표현하고, 변경분만 전파하여 증분 계산을 수행합니다. 이 증분 계산이 단일 머신에서 동작할 때는 공유 메모리를 통해 워커(Worker) 간 데이터를 교환하면 됩니다. 하지만 데이터가 수십억 건으로 늘어나고, 워커를 수십 대의 머신에 분산 배치해야 하는 시점이 오면, 네트워크가 개입합니다. 델타 (data, time, diff) 튜플이 머신 경계를...
-
Datalog의 증분 계산
Datalog는 사실(Facts)과 규칙(Rules)으로부터 새로운 지식을 연역해내는 논리 프로그래밍 언어입니다. 간결한 재귀 규칙 몇 줄로 소셜 네트워크의 도달가능성을 분석하거나, 지식 그래프 위에서 복잡한 추론을 수행할 수 있습니다. 하지만 Datalog를 실제 시스템에 적용하려면, “데이터가 변하면 어떻게 하는가”라는 문제를 피할 수 없습니다. 쇼핑몰의 추천 시스템을 예로 들면, 고객이 새 상품을 하나 구매할 때마다...