用于会话状态的Azure SQL数据库与表存储

时间:2014-05-28 11:58:00

标签: azure azure-sql-database azure-table-storage

我已经在这里以及其他帖子和论坛上看到,在Azure中保存会话状态的最佳位置是AppFabric Cache,但我发现它非常昂贵,并且想要使用表存储或SQL数据库。 / p>

我读到SQL数据库会更快,但我无法理解为什么会这样。当然SQL数据库会将热数据缓存在内存中,但我希望Table Storage也可以这样做(是吗?)。否则,我不明白为什么SQL数据库在检索行时比表存储更快,最后两者都只是根据密钥从本地磁盘检索数据。我甚至希望因为Table Storage能够很好地自动扩展(相对于需要手动分区的SQL数据库),所以最好是因为会话状态不适合本地缓存。

有没有人对此有任何经验或意见?

感谢 查尔斯

1 个答案:

答案 0 :(得分:3)

您提到了AppFabric Cache,这是一项已退役的服务。关于SQL vs Table:对此没有真正正确的答案。如果要启动SQL数据库实例(每月为基本层数据库运行大约2.50美元),则可以使用2GB。使用表存储,您将为同一存储支付约0.15美元。然后是Redis缓存,您自己的缓存(例如memcached),Azure托管缓存服务等。在性能方面,您需要进行一些基准测试以了解每个缓存的执行情况。其中任何一个都适用于虚拟机,云服务(Web /工作者角色)和Web站点,因为它们都有非常明确定义的API,如果使用ASP.NET MVC,则可以提供良好的提供程序支持。每个都有不同的容量限制和不同的价格。

表存储的一件事:每个实体(行)限制为1MB,因此如果您尝试缓存>每个缓存条目1MB,您需要考虑另一个选项。

@Gaurav提到了角色内缓存。这是在Web /辅助角色实例中使用额外内存的好方法。但是:它仅限于Web / worker云服务;它对网站或虚拟机没有帮助。对于那些,你真的需要某种类型的独立缓存提供者。