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 Blob 存储失败
如何在 Azure Blob 存储中备份和还原 Azure SQL 表,反之亦然