2016-11-06 78 views
0

我试图创建一个基于它的NodeJS查询一个Azure Table中存储有1000个条目的web应用程序。 (我正在使用Azure跟踪订阅)如何降低Azure Table中存储延迟

实现的逻辑使用分区键和行键检索一个独特的实体,所以它应该非常快,并受Troy Hunt发布的blog的启发我预计延迟时间低于7毫秒。

app.get('/pick', function (req, res, next) { 
    var parKey = req.param('parKey'); 
    var rowKey = req.param('rowKey'); 
    var getRes, startTime, endTime, tableSvc; 

    tableSvc = azure.createTableService().withFilter(retryOperations); 

    //Timestamp before accessing table storage 
    startTime = new Date().getTime(); 

    tableSvc.retrieveEntity('lookupTable01', parKey, rowKey, 
     function (error, result, response) { 
      if (!error) { 
       //Timestamp after returning the result 
       endTime = new Date().getTime(); 
       getRes = JSON.stringify(result); 
       res.send("found in " + (endTime - startTime) + " ms " + getRes); 

      } else { 
      //Timestamp after returnung an error 
       endTime = new Date().getTime(); 
       getRes = JSON.stringify(error); 
       res.send("Error in " + (endTime - startTime) + " ms " + getRes); 
      } 
}) 

我已在相同的西欧数据中心中设置了Web应用程序服务器和存储帐户以获得最佳结果。然而,最低延迟被证明是47毫秒(不包括网络延迟)

我也试图在美国东部的数据中心相同的设置,发现几乎相同的结果。

+0

这将真正帮助,如果你编辑的问题,以显示你的代码。 –

回答

1

我们通常使用的点查询[特别两者分区键和行键]来查询表像你一样。另一个因素是查询密度。基于分区的query可能非常小。影响Azure表存储性能的因素也很多。如位置,分区命名约定,限制数据返回,表的定义原则等。有关如何提高Azure存储性能的更多详细信息,请参阅document

+0

感谢您的帮助。我跟着文件,但延迟仍然很高。我将寻找一种不同的解决方案,以便进行更精细的控制,然后提供Azure存储表。 – Harald