我正在开发一个 .NET 应用程序,它需要在 Azure 和常规 Windows Servers(2003) 上运行。它需要存储几 GB 的数据,SQL Azure 对我来说太贵了,所以我会在云版本中使用 Azure 表。您能否推荐一个存储解决方案,该解决方案将在独立服务器上运行并具有类似于 Azure 表的 API 和行为?根据我所见,Server AppFabric 不包括表格。
2 回答
如果您认为 Windows Azure 表存储是什么,它是一个基于键值对的非关系数据库,可通过 REST API 访问。请下载有关Windows Azure 和 NoSQL 数据库详细信息的文档。
如果我处于您的情况,我的方法是找到类似于 Azure 表存储的东西,我可以通过 REST 访问它并具有类似的可访问性 API。因此,如果您尝试找到要在机器上运行的类似数据库,您确实需要寻找:
- 键值对数据库
- 支持基本操作,即添加、删除、插入、修改实体
- 基于分区键和行键的可访问性
- 用于连接的 RESTful 接口
如果你想尝试一些你肯定可以看的东西:
- DBreeze (C# based Key Value Pair NoSQL DB) 我刚看到,看起来很兴奋
- Googles LevelDB (Key Value Pair DB, open source and available on Windows) 我不知道 API
- Redis(很棒的键值对数据库,但不确定 Windows 兼容性和 API)
以下是没有额外索引工具的键/值数据库列表:
- 伯克利数据库
- HBase
- 内存缓存数据库
- 雷迪斯
- 简单数据库
- 东京内阁/暴君
- 伏地魔
- 里亚克
如果没有工作,您肯定可以获取任何开源数据库并进行修改以满足您的要求,然后将其提供给其他人作为您对社区的贡献。
添加
现在,您可以使用 Windows Azure 虚拟机在 Linux 或 Windows 机器上运行任何类型的键值对数据库并与您的应用程序连接。
我不确定要推荐哪种存储解决方案,但只要您编写一个接口来抽象所有数据存储代码,几乎任何数据库解决方案都可以工作。然后为 Azure 表存储和您想在非云服务器上使用的任何其他数据库编写该接口的实现
无论如何,您都应该这样做,以免您的代码与 Azure 表存储 API 紧密耦合。
如果您将针对该接口的编码与 IoC 容器相结合,那么单行代码或单个配置设置将使您能够根据代码运行的平台在数据实现之间切换。