Azure表存储的替代方案

Ken*_*ith 6 azure nosql azure-table-storage

我们一直在Windows Azure上使用混合体系结构,将大多数实体存储在SQL Azure数据库中,但是将任何可能需要大量存储空间的内容丢入Azure表存储中.

但是,使用这种架构,我们遇到了Azure桌面存储的各种问题,这让我觉得它是一个不成熟且不完整的产品.最大的限制是,出于所有实际目的,它是一个只写数据存储.大家一致认为它的写入功能非常非常好,但它的查询和索引功能是如此惊人地限制(尽管多年来用户抱怨和微软承诺),我得出结论你应该基本上只尝试检索数据在紧急情况下退出ATS.从复杂的实时交易生产应用程序中获取数据比使用它更困难.当然,有一些解决方法,比如维护多个数据副本,为每个副本分配不同的索引策略,或者拆分查询并并行运行它们,但是当云服务的整个要点最小化时,这会增加复杂性.

也就是说,我们现在已经致力于Azure,我希望对替代方案和陷阱有很好的理解,最好是那些实际上已经走上这条道路的人们.

我非常清楚那里有很多NoSQL选项(例如,这个问题中列出的所有选项:针对.NET的NoSQL解决方案是什么?)我可以在VM或其他云上运行.但我特别想知道Azure的PAAS模型是否适合.换句话说,如果我在Azure上,并且不想管理我自己的VM,并希望尽可能接近ATS承诺的几乎自动且几乎无限的可扩展性(尽管从未完全交付),有哪些选择人们发现有价值?是的MongoDB/Azure的包装器的简单和可行的替代方案?或者我应该咬紧牙关并启动我自己的VM?或切换到AWS?还是坚持使用Azure SQL?

(为了让您了解我们的尺寸要求:我们认为我们需要存储超过10亿行.不是很大,但也不可忽略不计.)

cdi*_*zal 2

我们经历过类似的情况,并研究了几种选项,其中提供了 Azure 和 nosql 选项。

我们采取的措施是使用 Azure Blob Storage 和 Lucene.Net。我们用 Json 序列化对象,然后将它们保存在 AzureBlobs 中。

我们使用 Lucene.Net 创建索引,Lucene.Net 返回我们需要的数据来获取包含我们要搜索的数据的 blob。我们还没有对这种组合进行生产开发,但在我们所做的测试中,它运行得很好。