Breeze import实例

Breeze import实例

问题描述:

当我的应用程序加载时,我导出一些breeze实体并将它们存储在本地缓存中,以便稍后当我必须再次使用这些实体时,我将它们从本地存储导回,并在本地执行查询。Breeze import实例

有一个实体有84389行。我注意到importEntites需要更长的时间来执行这个实体。有什么方法可以加速这个吗?

var entities = manager.getEntities('Client'); 
var exportedEntity = manager.exportEntities(entities, { includeMetadata: false }); 

我正在将exportedEntity存储在缓存中。

我从缓存中取出后,将上述exportedEntity导入到entitymanager中。

entityManager.importEntities(exportedEntity); 

以上声明对于客户实体需要更长的时间。客户在桌上有80K行。我不确定这是否会降低importEntities方法的执行速度。 我也在导入实体后在本地执行查询。

+0

不确定一个实体有84389行的含义。 – 2015-02-23 18:57:29

+0

我的意思是说,对于在数据库中有84389行(大量数据)的实体,执行importEntity操作需要更长的时间。 – user2585299 2015-02-23 19:21:55

+0

仍然不清楚,通常一个实体代表一行。具有84K行的实体的概念是没有意义的。你的意思是返回84K行的查询吗? – 2015-02-23 19:37:54

我认为你的意思是你有一个实体类型,Client,与84K行/实体。

这是很多的对象。我会重新考虑这些数据是否应该被视为丰富的微风实体,或者是否应该以更简单,更紧凑的形式作为数据对象。我强烈倾向于后者,尤其是如果它们是只读的。将只读数据表示为实体的好处较少,并且在这些卷上,较差的性能和内存使用率更可能。请记住,并非所有数据都必须是实体,Breeze很乐意获取实体和原始数据的混合。混合应用程序很常见。

如果你仍然想探索将它们视为实体,你可以尝试以下导出命令,输出给定类型为JSON的所有实体:

var exported = manager.exportEntities('Client', {asString:false, includeMetadata:false}); 

结果可以导入以前一样。

var imported = manager.importEntities(exported); 

可以提高出口和进口速度(或没有)。

之后您不必在本地查询。所有导入的实体都在imported.entities

+0

谢谢你的回答。我会尝试asString:false参数。之后我在本地执行查询,因为我想在访问它之前将排序和谓词参数应用于我的结果。 – user2585299 2015-02-24 19:20:04

+0

再次请您考虑将这些数据作为实体处理是否合适。您还必须谨慎尝试JSON字符串化和解析这么多数据,甚至是否适合本地存储。这并非严格意义上的Breeze性能问题。 – Ward 2015-02-25 00:13:47

+0

我试过JSON stringify但没有影响任何东西。如果不是实体,您是否可以建议在应用程序中处理客户端数据的方法?幸运的是,它的只读数据,正如你所提到的那样,并不一定是微风实体。 – user2585299 2015-02-25 14:00:31