학위 논문에서 클라이언트와 데이터베이스 간의 선택/저장 작업을위한 REST API를 개발했습니다. 데이터는 JSON으로 센서에서 포스트되고 MongoDB에 저장됩니다. Jongo 드라이버 1.3.0, Java MongoDB 드라이버 3.4.0 및 Spring의 MongoRepository (Jackson FasterXML 포함)의 3 가지 저장 기술을 선택했습니다. 구현 후에는 JMeter를 통해 부하 테스트를 시작했습니다. - 100, 250, 500, 1000Jongo 드라이버, Java MongoDB 드라이버 및 MongoRepository 간의 부하 테스트를 통한 저장 방법 비교
진입로 기간 - 십초
루프 카운트 - 30
우리는 드라이버가 더 효과적 일 것으로 생각된다
스레드 : 테스트 케이스는 이러한 매개 변수를했다 MongoRepository는 1000 개 스레드의 경우 400 개 요청을로드하고 드라이버는 모든 요청을 처리 할 수 없었습니다. 따라서 MongoRepository는 빠른 속도로 저장할 수 있습니다. MongoRepository가 왜 더 효과적이라고 말 할 수 있습니까?
편집 :
MongoRepository는 다음과 같이 : 엔티티
@Repository
public interface EndPointsMongoRepository extends
MongoRepository<EndPointsDataControllerEntity, String> {
}
방법 deseralize의 JSON은 :
private EndPointsDataControllerEntity parseDataFromJson(String json) {
ObjectMapper mapper = new ObjectMapper();
EndPointsDataControllerEntity controller = null;
try {
controller = mapper.readValue(json, EndPointsDataControllerEntity.class);
} catch(JsonParseException ex){
LOGGER.warn(" JsonParseException with message :" + ex.getMessage());
} catch(JsonMappingException ex){
LOGGER.warn("JsonMappingException with message :" + ex.getMessage());
} catch(IOException ex){
LOGGER.warn("IOException with message :" + ex.getMessage());
}
LOGGER.info("Id controller: " + controller.getIdController());
return controller;
}
그럼 난 단지 데이터를 저장합니다.
자바 MongoDB의 드라이버 구현 :
public void saveUnstructuredMeasuredData(String json) {
LOGGER.info("Data saved to database by second way: \n" + json);
com.mongodb.client.MongoCollection<Document> collection = getMongoClient().getCollection(UNSTRUCTURED_DATA);
Document objectFromJson = Document.parse(json);
objectFromJson.put(TIMESTAMP_MEASURE, createTimeMeasureAsTimestamp(objectFromJson));
collection.insertOne(objectFromJson);
}
그리고 Jongo :
public void saveUnstructuredMeasuredDataStraightWithShell(String json) {
LOGGER.info("Data saved to database by third way: \n" + json);
Jongo jongo = new Jongo(getMongoDB());
MongoCollection measuredData = jongo.getCollection(MEASURED_DATA);
measuredData.insert(json);
}
나는 "공식적인"자바 드라이버의 확장과 같은 Jongo를 이해하고 조금 더 나은 성능을 가진 결과를 얻는다. –