I'm developing a .NET app, which needs to run both on Azure and on regular Windows Servers(2003). It needs to store a few GB of data and SQL Azure is too expensive for me, so I'll use Azure tables in the cloud version. Can you recommend a storage solution, which will run on standalone servers and have an API and behavior similar to Azure tables? From what I've seen Server AppFabric does not include Tables.
If you think what Windows Azure Table Storage is, it is a Key-Value pair based non-relational databse which is accessible through REST API. Please download this document about Windows Azure and NoSQL database details.
If I were in your situation, my approach would have been to find something similar to Azure Table Storage which I can access over REST and have similar accessibility API. So if you try to find the similar database to run on a machine you really need to look for:
- Key Value Pair DB
- Support for basic operations i.e add, delete, insert, modify an entity
- Partition Key and Row Key based Accessibility
- RESTful Interface to connect
If you would want to try something you sure can look at:
- DBreeze (C# based Key Value Pair NoSQL DB) I just saw it and looks exciting
- Googles LevelDB (Key Value Pair DB, open source and available on Windows) I have no idea about API
- Redis (Great Key-Value Pair DB but not sure for Windows compatibility and API)
Here is a list of key/value databases without additional indexing facilities are:
- Berkeley DB
- HBase
- MemcacheDB
- Redis
- SimpleDB
- Tokyo Cabinet/Tyrant
- Voldemort
- Riak
If none works, you sure can get any of open source DB and modify to work for your requirement and then make that available to others as your contribution to community.
ADDED
Now you can use Windows Azure Virtual Machine to run any kind of Key-Value pair DB on Linux or Windows Machine and connection with your application.
I'm not sure which storage solution to recommend, but just about any database solution would work provided that you write an Interface to abstract all your data storage code. Then write implementations of that interface for Azure Table storage and whatever other database you want to use on the non-cloud server
You should be doing that anyway so that your code isn't tightly coupled with Azure Table Storage APIs.
If you combine coding against that Interface with an IoC container, then a single line of code or a single configuration setting would enable you to switch between data implementations based on which platform the code is running on.
来源:https://stackoverflow.com/questions/2695041/alternative-to-windows-azure-tables-out-of-the-cloud