0
JSP 웹 기반 응용 프로그램에서 Sesame을 사용하고 일관되게 사용되는 일부 쿼리를 캐시하는 방법이 있는지 알고 싶습니다.참깨 캐싱 일반 쿼리
JSP 웹 기반 응용 프로그램에서 Sesame을 사용하고 일관되게 사용되는 일부 쿼리를 캐시하는 방법이 있는지 알고 싶습니다.참깨 캐싱 일반 쿼리
"캐시"하려는 것은 특정 값의 주어진 쿼리에 대해 결과 인입니다. 당신은 매우 쉽게 그러한 캐시를 직접 만들 수 있습니다. 다만 내부적으로 값 키에서지도는 HashMap에 대한 참조를 유지 일반 쿼리에 대한 클래스를 생성 (예를 들어, 귀하의 예제 쿼리에 대한 placeid) 쿼리 결과에 :
HashMap<URI, TupleQueryResult> cache = new HashMap<>();
그리고 당신이 할 모든 검사가, 주어진 장소 ID에 대해 캐시에 존재할 경우. 그렇지 않은 경우, 쿼리를 실행 결과를 다시 얻을 당신이 그 캐시에 넣을 수 MutableTupleQueryResult
로 구체화 :
if (!cache.contains(placeId)) {
// reuse the prepared query with the specific binding for which we want a result
preparedQuery.setBinding("placeid", placeId);
// execute the query and add the result to a result object we can reuse multiple times
TupleQueryResult result = new MutableTupleQueryResult(preparedQuery.evaluate());
// put the result in the cache.
cache.put(placeId, result);
}
return cache.get(placeId);
당신이 (예를 들어, 뭔가 좀 더 정교한 무언가를 원하는 경우에 밖으로 던져 특정 시간이 지나면 캐시 된 항목 또는 캐시의 크기 제한이 설정 됨), HashMap
대신 Guava Cache과 같은 것을 사용했지만 기본 설정은 동일하게 유지됩니다.
달성하고자하는 목표에 대해 좀 더 자세히 설명해 주시겠습니까? 정확한 설정과 정확히 무엇이 캐시되어야합니까? –
"select? att? value where {placeid? att? value}"와 같은 일부 sparql 쿼리가 있습니다. 30 개 장소에 대해이 쿼리를 수행하고 사용 된 경우 "캐시"하고 싶습니다. –