QueryDataTableEntries 및 QueryStreamEntriesWithData 서비스 사용
QueryDataTableEntries 서비스는 데이터 테이블을 질의하고 요청 매개 변수와 일치하는 기록의 인포테이블을 반환합니다. ThingWorx에서 최적화되지 않은 데이터 질의를 사용하면 성능 문제가 발생하고 시스템이 중단될 수도 있습니다.
이 서비스의 작동 방식을 이해하려면 아래의 예제 시나리오를 참조하십시오.
예제 시나리오
시나리오 1: 질의 필터는 ThingWorx Platform의 메모리 내에 항상 적용되며 SQL 문에서는 사용되지 않습니다.
var query = {
"filters": {
"type": "EQ",
"fieldName": "firstname",
"value": "Doe"
}
};
var result = Things["myDataTable"].QueryDataTableEntries({query: query})
위의 코드는 데이터베이스에서 전체 데이터 테이블을 가져오고 필터는 ThingWorx Platform의 메모리 내에 적용됩니다.
이 시나리오는 QueryDataTableEntries, QueryStreamData, QueryStreamEntries, QueryStreamEntriesWithData에 적용됩니다.
대체 시나리오: FindDataTableEntries 및 QueryDataTableEntries의 값 매개 변수를 사용하는 데이터 테이블입니다.
시나리오 2: QueryDataTableEntries 서비스의 maxItems 매개 변수는 ThingWorx Platform의 메모리 내에 적용되며 SQL 문에서는 사용되지 않습니다.
var result = Things["myDataTable"].QueryDataTableEntries({maxItems: 1 });
위의 코드는 데이터베이스에서 전체 데이터 테이블을 가져오고 제한은 ThingWorx Platform의 메모리 내에 적용됩니다.
스트림 질의 API의 동작은 서로 다릅니다. 자세한 내용은 아래 시나리오 3을 참조하십시오.
시나리오 3: 스트림 질의 서비스의 maxItems는 질의 필터와 함께 사용될 때 ThingWorx Platform의 메모리 내에 적용됩니다(데이터 테이블의 경우 항상 메모리 내에 적용, 시나리오 2 참조).
var query = {...};
var result = Things["myStream"].QueryStreamEntriesWithData({maxItems: 1, query: query});)
위의 코드는 데이터베이스에서 전체 스트림을 가져옵니다.
var result = Things["myStream"].QueryStreamEntriesWithData({maxItems: 1, source: "myThing"});
위의 코드는 질의 매개 변수가 사용되지 않으므로 데이터베이스에서 기록 한 개만 가져옵니다.