这是个大问题。NoSQL 是一个广泛的术语,几乎用于描述一堆非关系数据存储。它们的范围从 MongoDB、RavenDB(它们是文档存储)到 Redis 和其他键/值存储变体。它们都与 SQL 关系模型(以及由此产生的 T-SQL)非常不同。
像 Mongo 或 Raven 这样的文档数据库通常有一个 C# 驱动程序,它(在大多数情况下)允许您跨数据存储使用 LinQ 查询(此线程上的 Mongo 示例和其文档页面上的 RavenDB 示例)。它们都特定于它们的引擎并且不同。
所有这些引擎都不是专门为解决您所描述的“空间”问题而设计的,而是尝试以一种低摩擦的方式与数据存储进行快速交互。所有这些数据存储的大小仍将增长,就像 SQL 在向其抛出大量数据时所做的那样。SQL Server 将处理海量数据库,大多数文档存储和其他 NoSQL 变体也是如此。老实说,我比新的 NoSQL 存储更信任 SQL Server,因为它已经过更长时间的现场测试,但是如前所述,这些文档存储(以及 Apache Cassandra 等其他存储)都可以处理大量数据。我唯一的建议是看看你想如何查询数据。文档存储通常没有外键等关系完整性的概念,因此规范化规则不适用。此外,您需要评估您的报告需求,因为 SQL 通常在该领域具有优势,具有更多工具。您还可以选择一种混合方法,将 SQL 用于关系数据,将文档存储用于其他对象 blob 等。
我建议先研究一下您希望如何访问您的数据,然后评估哪一个最适合您的需求。还有一点需要注意的是,SQL 有一些很棒的特性,但通常只在企业版中。这要花很多钱。文档数据库的许可成本往往要低很多,有些是免费的,许多公司提供托管服务,因此您无需担心它。最后,如果使用 SQL,我建议从一开始就考虑分片方法,因为您将要处理的数据量很大,因为这将使其更易于管理,并且还可以提供更好的查询性能。