繁体   English   中英

表存储服务(Azure的nosql实现)与Windows Azure缓存(内存中的非结构化缓存)

[英]Table Storage Service (Azure's implementation of nosql) vs Windows Azure Caching (unstructured in memory cached)

我们希望在Azure中实现缓存有两个主要原因:

  1. 加速重复数据访问
  2. 减轻数据库的压力

以下是我们计划缓存的数据的特征:

  1. 相对较小(1 - 100 kb)
  2. 具体到每个客户
  3. 不是私密的,但我们并不希望随机的人在我们的整个缓存中导航
  4. XML或JSON
  5. 由C#消费(即没有直接链接到html)
  6. 大多数周数据都不会改变,尽管有些日子数据可能会改变几次

出于这个特定目的, 表存储看起来比Blob存储更好(我们只为图像,CSS和JavaScript实现Blob存储), Windows Azure缓存看起来比Windows Azure共享缓存更好 (可能几乎总是更好 ,共享缓存主要是遗留此时的功能 )。

两者的编程API直接出现。 与我们为云站点支付的费用相比,每个站点的成本似乎可以忽略不计。

到目前为止,我们倾向于使用表存储,因为我们认为它是Azure缓存的优缺点。 作为旧的.Net人员,我们比NoSql风格的解决方案更熟悉内存缓存:

Windows Azure缓存的问题:

  1. 如果将VM移动到其他服务器(由Microsoft进行负载平衡或其他原因),内存缓存是否完好无损?
  2. 我们猜测,每当我们发布对云的更改时,它都会消除现有的内存缓存
  3. 虽然用户在进行更改时很少对缓存数据进行更改,但很可能他们可能会在几秒钟内进行多次更新,而我们不确定这将如何与位于运行Web角色的多个节点上的缓存一起使用,尤其是在流量增加的情况下。 (这也可能是桌面存储的一个问题!)
  4. 表存储似乎更容易调试

Windows Azure缓存的优点

  1. 有点快

您熟悉内存中缓存是在Windows Azure上实现缓存时需要了解的模型。 'NoSql风格'不是缓存,而是存储。 因此,表存储取而代之的是SQL取代缓存。 表存储用于持久,可靠的存储 - 具有内存缓存不存在的持久性的所有延迟和其他缺点。

写入缓存始终是次要的。 当您的用户对缓存数据进行更改时,您将始终将数据写入磁盘(例如SQL),然后将相同的数据写入缓存,因为您可能还有,因为您手头有数据(尽管对书面数据的次要影响可能意味着您应该使缓存的项目无效或重新读取)。

当机器回收时,擦除数据不应该是一个问题,因为数据存储在别处。 从缓存中读取的每一个都应该跟一个'if if found not then read from database'这种语句。 当角色开始预先填充您知道您将需要的项目时,您可以预热缓存。

Azure上的缓存分布在节点上,更新现有项目将始终在其所驻留的节点上更新。 快速更新可能不是您想象的问题。

对于内存中缓存,使用Windows Azure缓存(您认为共享缓存是遗留的),并根据您的需要,查看其他缓存技术,如memcached。 缓存和表存储无法比较。 表存储是为了长期持久化。 不要不必要地破解表存储来进行缓存 - 使表存储临时创建一大堆你需要担心自己的事情,比如到期和失效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM