我们正在使用SAP Mobile Platform SDK 3.0 SP14实施原生Android应用。该应用程序具有多个脱机存储,用于在设备上本地保存主数据。只会请求数据,没有提取,因为数据不会在设备上更改。每个商店都有相同的,简单的实体类型,包含4个字段。最后一个是String字段,最多可包含150个字符。 要访问商店中的离线数据,应用程序会立即选择所有数据。但是这个要求非常慢(每秒约1,000件)。我们最大的商店有500,000件商品,所以要求这家商店的持续时间为500秒。 有没有办法加快大型离线商店的请求?
if (offlineStore != null) {
try {
//Define the resource path
String resourcePath = format("%1$s",
StoreDefinitions.Data.ENTITY_SET_NAME);
ODataRequestParamSingle request = new ODataRequestParamSingleDefaultImpl();
request.setMode(ODataRequestParamSingle.Mode.Read);
request.setResourcePath(resourcePath);
//Send a request to read the travel agencies from the local database
ODataResponseSingle response;
// executeReadEntitySet: poor performance
response = offlineStore.executeReadEntitySet(resourcePath, null);
...
答案 0 :(得分:0)
您可以将OData过滤器和分页选项与SMP SDK中的脱机存储API一起使用,就像使用OData v2 Web服务一样。例如,您可以在resourcePath字符串中添加“$ filter = property1 eq'value'”,这与SQL查询中的WHERE子句具有相同的效果。对于分页,您可以将$ top和$ skip选项与脱机存储查询一起使用。
如果您需要使用SMP 3.0 SDK一次实际访问500,000个项目,我担心没有好办法加快本地访问速度。但它确实提出了一个更大的问题,即为什么要尝试在移动设备上访问如此大量的项目?