基于磁盘的基于文档的存储
Posted
技术标签:
【中文标题】基于磁盘的基于文档的存储【英文标题】:Disk based document based storage 【发布时间】:2012-02-25 09:34:17 【问题描述】:网络上有免费的基于磁盘的高度可扩展的 NoSQL 存储系统吗? SQL Server 的好处是它可以扩展,但是将我的项目迁移到 SQL 表中是一场噩梦,因为它都是对象?
选项包括: 1.从内存中运行 2.序列化文档 3.转成SQL 4. 使用大型 NoSQL 数据存储
【问题讨论】:
大多数 NoSQL 都是基于磁盘的。像 Azure 表存储,非常好。但是,没有免费的 我不认为有免费的可以让你存储大量数据(我记得S3可能会免费存储少量数据),也许你可以使用像DropBox这样的文件托管服务,然后在SQL Server中索引你的键 “SQL Server 的优点在于它可以扩展”——真的吗?!事实上恰恰相反。 “NOSQL 的好处在于它可以扩展”,看起来 OP 打错了 【参考方案1】:MongoDB 是基于磁盘的,但它当然会受益于(大量)内存。它是开源和免费的,它使用分片和复制从一台机器扩展到数千台机器。
您可以download it 并在本地运行它,也可以使用free hosted solutions 之一。
【讨论】:
【参考方案2】:在过去的几周里,我一直在处理同样的问题;这是我的观察:
-
SQL Server 可以工作,但不能很好地扩展。我们测试了一个包含大约 600GB 文档的 SQL Server 数据库,我们可以说事情变得非常缓慢。
对于 mysql 来说或多或少是相同的……两者都不是为文档而设计的……
Hadoop/HDFS 在 Windows 上似乎并不成熟。虽然 Microsoft 有可用的 HDFS 实现,但它仍处于 RC 阶段。从积极的方面来说,如果您正在为未来开发(假设生产 1 年),这似乎是一个不错的选择。
Apache Cassandra 似乎成熟了。从积极的方面来说,实现非常简单;也就是说:它基本上只是一个带有一个分区器的普通分布式键值存储,其中键和值都是一个字节[]。但是,实现的简单性也意味着您需要解决各种问题。如果您使用过它,您就会知道如果您需要实现 Twitter,它非常棒,但对于其他任何事情来说都太简单了。它可以很好地扩展,但老实说,我对性能并没有太大印象。此外,我遇到了一些数据不一致/损坏,这并没有真正温暖我的心......如果你使用 Cassandra,我个人会使用 Aquiles 作为客户端(因为你会很容易遇到低级的东西) - 但 FluentCassandra 也是一个很好的客户。
MongoDB 也相当成熟。从积极的方面来说,它是活跃的,并且有一个非常好的和易于使用的(不像 Cassandra)C# 客户端库。此外,虽然分片服务器在我的集群上崩溃了几次,但恢复总是成功的(而且我对重启不太礼貌:-)而且我遇到的所有问题似乎已经在开发分支中解决了 -所以我对此并不感到不舒服。 MongoDB 拥有而 Cassandra 缺乏的最重要的东西是对二级索引的支持。
所有这些解决方案都是基于磁盘的(例如磁盘上的持久性)。
我查看了 3-5 的代码,并在过去(大约 6 年前)实现了我自己的 NoSQL 解决方案,过去几年我们一直在使用该解决方案进行数据存储。老实说,MongoDB 是我自己实现它的方式。
为了完整性:我唯一还没有尝试过的是 CouchDB...但坦率地说,我对 MongoDB 非常满意,我什至不会打扰。
-斯特凡。
【讨论】:
【参考方案3】:开源许可证(GPL 或 Apache)提供了许多 NoSQL 选项。在搜索时,我遇到了这个listing,它提供了一些选项的功能比较。
如果您必须拥有受支持的 C# 客户端,那么您会受到一些限制,但我会研究 MongoDB 和 Redis,因为我过去曾使用过它们并取得了不错的效果。
【讨论】:
以上是关于基于磁盘的基于文档的存储的主要内容,如果未能解决你的问题,请参考以下文章