我有一个 C#/.NET 应用程序,它需要在中央存储库中存储可变大小的二进制 blob (10KB - 100MB)。MogileFS 完全满足了我的需求(一次写入、高度可用、透明的水平可扩展性、针对商品硬件进行了优化),但缺少 .NET 绑定表明还有其他一些更类似于 .NET 的方式来执行此操作。
还是我应该只写那些绑定?
我有一个 C#/.NET 应用程序,它需要在中央存储库中存储可变大小的二进制 blob (10KB - 100MB)。MogileFS 完全满足了我的需求(一次写入、高度可用、透明的水平可扩展性、针对商品硬件进行了优化),但缺少 .NET 绑定表明还有其他一些更类似于 .NET 的方式来执行此操作。
还是我应该只写那些绑定?
为此,您可以考虑使用 Raven DB。与其他解决方案相比,它针对更高的读写比率进行了优化,并且是 .NET 特定的。支持分布式场景,包括分片、多租户等。
我建议你看看Appistry的CloudIQ Storage 。它是在商品硬件上运行的完全分布式数据存储。您可以逐个文件定义它跨节点维护的文件副本数。所以如果你写一个文件一次,但有很多并发读取,你可以将N(文件的副本数)的值设置为一个很大的数字,以获得更大的并发性。
该系统为 PUT 和 GET 实现了基于 REST 的接口,元数据以 JSON 形式返回,因此 .NET 中有许多好的库可用。
我将在这里冒险并建议使用 MySQL。如果您将 MySQL 与 MyISAM 一起使用,在我看来,它似乎可以很好地满足您的需求。如果您想要高可用性,您可以使用复制在多台机器上镜像数据。如果您想要更高的可用性,您可以迁移到 MySQL Cluster。MySQL 的 .Net 绑定工作得很好。除非你真的需要更专业的东西,从你的小描述来看,你似乎不需要,那么 MySQL 可以胜任这项任务。使用标准 RDBMS 的优势,即使您不一定需要它的所有功能,也很容易找到已经知道如何使用它的开发人员。