티스토리 뷰

O:::Jena 다루기

O_2. Jena TDBLoader Test

joyHong 2013. 1. 18. 17:55

TDB는 RDF 저장과 질의를 위한 Jena의 컴포넌트이다.

Open Source이기에 성능 테스트를 위해 사용해 보았다.



※ 기초 지식

DataSource - 하나의 Default Graph과 n개의 Named Graph들로 구성되는 Graph 들의 집합

Dataset - DataSource와 유사하지만 데이터의 add, delete가 불가능하며 read만 가능


Graph - Triple들의 집합(Triple/Node), 모든 Model은 Graph로 변경이 가능

Model - Statement들의 집합 (Resource/Literal/Property/Class)


Jena API에서는 두 개의 레이어로 구성되어 있다. 

(lower 레이어는 Graph 클래스, upper 레이어는 Model 클래스)




TDBLoader는 3가지 방식의 로딩 매커니즘을 제공한다.


1. DatasetGraphTDB 

N-Quads 형식의 데이터를 로딩

2. GraphTDB

Triples 형식의 데이터를 로딩

3. Model

Models 형식의 데이터를 로딩 ( 1,2 번에 비해 효율적이지 않다고 스펙에 나옴)




1. DatasetGraphTDB Test


DatasetGraphTransaction dst = TDBMaker.createDatasetGraphTransaction(conn.directory);

  DatasetGraphTDB dsg = dst.getBaseDatasetGraph();

dst.begin(ReadWrite.WRITE);

TDBLoader.load(dsg, file.getAbsolutePath(), true);

dst.close();

dsg.close();


N-Quads, TriG, N-Triple형식의 데이터를 로딩하여 Index를 잡는다.

Index 패턴은 SPO, POS, OSP 3개의 패턴으로 생성한다.

* N-Quads는 N-Triples의 확장으로 

<Subject> <Predicate> <Object> <Context> .

와 같은 형식이다.

주어진 Statement의 출처를 나타내는 Context를 추가적으로 가진다.



2. GraphTDB Test


DatasetGraphTransaction dst = (DatasetGraphTransaction)TDBFactory.createDatasetGraph(conn.directory) ;

GraphTDB g = (GraphTDB) dst.getGraph(Node.createURI(graphName));


dst.begin(ReadWrite.WRITE);

TDBLoader.load(g, file.getAbsolutePath(), true);

dst.close();


g.close();


Turtle, N-Triple 형식 데이터 로딩 테스트는 완료, 다른 형식은 로딩해 보지 않음

Index 패턴은 GSPO, GPOS, GOSP, SPOG, POSG, OSPG 6개의 패턴으로 생성한다.



3. Model Test

일반적으로 Model에 데이터를 불러들여 로딩하는 방식으로

테스트는 해보지 않음




테스트 해본 결과

다양한 형식(NQuads, TriG, Turtle, N_Triple 등)의 데이터를 로딩하여 사용해 볼 수 있겠다.

속도면에서는 백만단위까지는 그럭저럭 로딩이 수월하나

천만단위가 넘어가는 대용량 데이터의 로딩은

Index를 생성하는 과정에서 상당한 시간이 걸린다.

약 6 GByte 정도의 데이터(8800만건의 트리플)의 Index를 생성하는데

NQuads 형식은  2일 이상이 소요되고

Triple형식은 4일 이상이 소요되는 것 같다.


'O:::Jena 다루기' 카테고리의 다른 글

O_6. Jena TDB에 Select하기  (0) 2019.12.16
O_5. Triple 단위를 Statement 단위로 변경하기  (0) 2019.12.13
O_4. TDB 에 적재된 내용 확인  (0) 2019.12.11
O_3. Jena LARQ Test  (0) 2013.01.23
O_1. SPARQL 실행  (0) 2012.12.05
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함