【发布时间】:2013-11-24 23:52:36
【问题描述】:
我们一直在 Windows Azure 上使用混合架构,将大多数实体存储在 SQL Azure 数据库中,但将可能需要大量存储空间的任何东西都放入 Azure 表存储中。
不过,使用这种架构时,我们会遇到各种与 Azure 表存储相关的问题,在我看来,这充其量只是一个不成熟且不完整的产品。最大的限制是,出于所有实际目的,它是一个只写数据存储。共识是它的写入能力非常非常好,但是它的查询和索引能力非常有限(尽管users complaining and Microsoft promising 多年),我得出的结论是你应该基本上只尝试检索数据紧急情况下的 ATS。为一个复杂的、实时的、事务性的生产应用程序从中获取数据比它应该做的要困难得多。当然,有一些变通方法,比如维护多个数据副本,为每个副本使用不同的索引策略,或者拆分查询并并行运行它们,但是当云服务的全部目的是最小化它时,这就增加了复杂性。
也就是说,我们目前致力于 Azure,我想对替代方案和陷阱有一个很好的了解,最好是来自那些实际上已经在生产中走这条路的人。
我很清楚有很多 NoSQL 选项(例如,这个问题中列出的所有选项:What NoSQL solutions are out there for .NET?),我可以在 VM 或其他云中运行。但我特别想知道是否有任何适合 Azure 的 PAAS 模型。换句话说,如果我在 Azure 上,并且不想管理我自己的 VM,并且想要尽可能接近 ATS 承诺的几乎自动和几乎无限的可扩展性(尽管从未完全交付),那么有什么选择人们发现有价值的东西? MongoDB/Azure wrapper 是一个简单可行的替代方案吗?还是我应该硬着头皮启动自己的虚拟机?还是切换到 AWS?还是坚持使用 Azure SQL?
(让您了解我们的大小要求:我们认为我们将需要存储超过 10 亿行。不是很大,但也不能忽略不计。)
【问题讨论】:
-
我完全理解您在查询 ATS 时所说的内容。不幸的是,我没有答案,但这正是我必须尽快考虑的事情,希望有人能回答你。我曾简要地研究过 MongoLab,但它们的价格似乎很高。
-
似乎没有人提到它,但 Azure 表存储只是一个键值存储。您不应该能够查询它或添加索引。
标签: azure nosql azure-table-storage