Azure 存储表与 SQL

Posted

技术标签:

【中文标题】Azure 存储表与 SQL【英文标题】:Azure storage tables vs SQL 【发布时间】:2012-05-02 17:25:55 【问题描述】:

我刚刚开始学习 Azure,我看不出有太多场景需要将某些内容放入 Azure 存储表而不是 SQL。我想也许我习惯于在需要相关数据的环境中工作?

什么时候将某些内容放入 Azure 存储表而不是放入 Azure SQL 数据库的表中更好?

【问题讨论】:

这篇文章应该有助于消除对所涉及的差异的一些疑问。 msdn.microsoft.com/en-us/magazine/ff796231.aspx When should I use Sql Azure and when should I use table Storage?的可能重复 【参考方案1】:

当您想使用关系、索引、约束等处理结构化数据时,SQL Azure 非常棒。

当您需要处理没有关系且通常具有大量数据的集中式结构化数据时,Azure 存储表非常适合。

价格: SQL Azure:5GB 每月 25.98 美元

存储表:175 GB 21.88 美元/米(不含事务或带宽) 因此,当您存储大量数据时,存储表会便宜很多......例如考虑日志记录。

中心化: Windows Azure 是服务器的分布式环境,因此如果您将某些内容保存在一台机器上,其他人不会知道它,因此存储表是集中登录、会话处理、设置或其他任何东西的一个很好的解决方案(请记住,存在延迟即使在一个数据中心)

速度: 如果设计得当,在许多情况下存储表应该比 sql azure 更快,但这可能取决于用例,我还没有真正测试过。

【讨论】:

关于集中化,表存储以及 Azure SQL 都提供异地复制。 Link. 关于定价,这有点棘手,Azure SQL 每月收费约 1400 美元,即使没有数据或交易。虽然表存储不是基于持续时间的,但它是基于数据的。对于任何类型的 1000 万次操作,成本应该接近 100 美元。【参考方案2】:

虽然我在这篇文章中添加的内容较晚,但我确实想提一提似乎尚未涵盖的一件事。 Azure SQL 有数据限制(我怀疑很快就会增加)。网络版 5 GB,商业版 150 GB。对于某些解决方案,这是完全足够的。但对其他人来说,可能不是,我个人也遇到过。

Azure 表的磁盘上限要高得多。我相信它有 100 TB。

此外,虽然 NoSQL 本质上是非关系型的,但这并不一定是坏事。我们经常认为我们需要关系,而事实上,如果我们以不同的方式思考我们的问题,我们可能就不需要这么多了。您可以在代码本身内强制执行关系——我怀疑大多数开发人员做的比他们真正想象的要多得多。

【讨论】:

【参考方案3】:

如果:

我只通过 PK 执行表选择(由于整个反序列化,属性选择很慢) 我可以忍受有限的 Linq 集 (Query Operators (Table Service Support) 我不需要在服务器上连接表和执行复杂的查询 我需要对我的数据进行水平分区“分片”(Sql Azure Federations 是朝着这个方向迈出的一步,表从第 0 天开始就有 PartionKey

【讨论】:

@RickNZ 值得注意的是,在撰写本文时,该费用非常低:每 100,000 笔交易 0.005 美元。

以上是关于Azure 存储表与 SQL的主要内容,如果未能解决你的问题,请参考以下文章

Azure SQL 连接到选定网络的 Azure 存储

Azure Sql 数据库导出到 Azure Blob 存储失败

如何在 Azure Blob 存储中备份和还原 Azure SQL 表,反之亦然

相当于 SQL“IN”的 Azure 表存储

我需要将 SQL Azure 中的媒体内容(视频或图像)存储上传到 Azure BLOB 容器

Azure sql 数据库导出到存储 blob 失败