基于磁盘的文档存储

本文关键字:文档 存储 磁盘 于磁盘 | 更新日期: 2023-09-27 18:25:51

网络上是否有高度可扩展的基于磁盘的NoSQL存储系统?SQL Server的好处是它可以扩展,但将我的项目迁移到SQL表中是一场噩梦,因为它都是对象?

选项包括:1.从内存中运行2.序列化文档3.转换为SQL4.使用大型NoSQL数据存储

基于磁盘的文档存储

MongoDB是基于磁盘的,但它当然会受益于(大量)内存。它是开源和免费的,使用分片和复制可以从一台机器扩展到数千台。

您可以下载它并在本地运行,也可以使用一个免费的托管解决方案。

在过去的几周里,我一直在处理同样的问题;以下是我的观察结果:

  1. SQL Server可以工作,但扩展性不好。我们已经测试了一个包含大约600GB文档的SQL Server数据库,我们可以说它变得非常慢
  2. MySQL或多或少也是如此。。。两者都不是为文件而设计的
  3. Hadoop/HDFS在Windows上似乎并不成熟。虽然微软有HDFS实现,但它仍处于RC阶段。从积极的方面来看,如果你正在为未来进行开发(比如说生产一年),这似乎是一个不错的选择
  4. Apache Cassandra似乎很成熟。从积极的方面来说,实施非常简单;也就是说:它基本上只是一个带有一个partitioner的纯分布式键值存储,其中键和值都是byte[]。然而,实现的简单性也意味着您需要解决各种问题。如果你使用过它,你就会知道,如果你需要实现Twitter,那就太棒了,但对于其他任何事情来说都太简单了。它的规模很好,但说实话,我对它的表现印象不深。此外,我还遇到了一些数据不一致/损坏,这并没有真正温暖我的心。。。如果你使用Cassandra,我个人会使用Aquiles作为客户端(因为你很容易遇到低级的东西),但FluentCassandra也是一个很好的客户端
  5. MongoDB也相当成熟。从积极的方面来看,它是活跃的,有一个非常好用的C#客户端库(与Cassandra不同)。此外,尽管我的集群上的碎片服务器已经崩溃了几次,但恢复总是成功的(我对重启不太客气:-),我遇到的所有问题似乎都已经在开发部门得到了解决,所以我对此并不感到不舒服。MongoDB拥有和Cassandra缺乏的最重要的东西是对二级索引的支持

所有这些解决方案都是基于磁盘的(例如,磁盘上的持久性)。

我查看了3-5的代码,并在过去(大约6年前)实现了我自己的NoSQL解决方案,过去几年我们一直在使用它来存储数据。老实说,MongoDB就是我自己实现它的方式。

为了完整性:我唯一还没有尝试的是CouchDB。。。但坦率地说,我对MongoDB非常满意,我甚至不会打扰。

-Stefan。

在开源许可证(GPL或Apache)上提供了许多NoSQL选项。在搜索时,我发现了这个列表,它对一些选项进行了功能比较。

如果你必须有一个受支持的C#客户端,你会受到一些限制,但我会研究MongoDB和Redis,因为我过去使用过它们,效果很好。