.NET的BLOB分布式存储?

15

我正在寻找一款经过充分测试的库+服务器来存储持久化的分布式哈希表。

我不愿使用基于SQL的解决方案,因为数据是高度文档导向的,由数百万个约64KB的blob组成,只有一个索引(通过计算所述BLOB的哈希值) - 并且需要能够进行长期分布以实现规模扩展。

由于费用和带宽的考虑,像S3这样的外部解决方案不是一个选项。

像CouchDB或Project Voldemort这样的东西非常理想 - 但是两者都缺乏.NET绑定(PV可以从Java IKVMC - 但是存在“问题”)。键和值都是字节数组(键是16字节,值是高达2048KB平均为64KB)

我到目前为止已经搜索了Dynamo、Chord等.NET端口的解决方案 - 然而大多数结果似乎都是纯内存缓存,缺乏任何形式的持久性或复制。

大家有什么想法或建议吗?

5个回答

8

看看Ayende的Rhino DHT,可能更符合你的需求。源代码可在这里获取。


Ayende也开始了一系列关于文档数据库设计的文章http://ayende.com/Blog/archive/2009/03/17/designing-a-document-database-what-next.aspx - David Robbins

2

DryadLINQHadoop.Net可能会有所帮助。

Hadoop.Net是Hadoop的dotnet版本。更多关于Hadoop的信息可以在这里找到。


1
Hadoop.Net似乎没有任何进展。Google Code网站上没有发布任何内容,SVN树的版本为1,没有数据。 - Joe Doyle
我一直在使用DryadLINQ进行大规模分布式分析,它非常稳定。它具有分布式数据模型,但更适合迭代整个数据块进行分析,而不是快速分布式查找。 - Turbo

2

我认为你应该考虑使用SQL Server 2008。将数据存储在一个带有varbinary(max)列的表中,同时包含一个包含该列哈希值的列。像你所建议的那样对哈希值进行索引。

然后,你将能够使用该产品的各种分发功能。


1
考虑使用MS Velocity
摘要:“Velocity”是一种分布式内存应用程序缓存平台,可用于开发可扩展、可用和高性能的应用程序。 “Velocity”将多台计算机上的内存融合在一起,为应用程序提供单个统一的缓存视图。应用程序可以存储任何可序列化的CLR对象,而不必担心对象存储在哪里。通过简单地按需添加更多计算机,可以实现可扩展性。 “Velocity”还允许在群集中存储数据副本,从而保护数据免受故障影响。 “Velocity”可以配置为作为通过网络访问的服务运行,也可以嵌入到分布式应用程序中运行。

2
据我所知,Velocity仅是一种内存缓存,缺乏任何形式的长期持久性。 - Adam Frisby

1
您可以尝试使用 StorageEdge,它在后端使用 NCache 技术,因此使用它可以获得分布式缓存的支持,这将同时提高 SharePoint 的性能、可靠性、可扩展性并优化其存储。

这里是 StorageEdge 的主页链接 http://www.alachisoft.com/storageedge/ 希望对您有所帮助 :)

另外,对于 .NET,您也可以尝试使用分布式缓存中的大牌 NCache,您可以在http://www.alachisoft.com/ncache/找到它的详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接