Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用nosql数据库替代sql server_C#_Sql Server_Nosql - Fatal编程技术网

C# 使用nosql数据库替代sql server

C# 使用nosql数据库替代sql server,c#,sql-server,nosql,C#,Sql Server,Nosql,我正在开发一个网站,如果成功的话,它将拥有一个快速增长的数据库(可能是TB或更多)。到目前为止,我一直使用sql server,对nosql一无所知。 我刚刚发现nosql正在研究数据库的大小,现在我不确定它是否能满足我的需要。我将拥有与sql server相同的功能吗 我的问题可能看起来很傻,因为我是nosql的新手,但我只是想知道它是否不支持sql查询。我们怎样才能做到: select *, (select name from cities where id = cityid) from u

我正在开发一个网站,如果成功的话,它将拥有一个快速增长的数据库(可能是TB或更多)。到目前为止,我一直使用sql server,对nosql一无所知。 我刚刚发现nosql正在研究数据库的大小,现在我不确定它是否能满足我的需要。我将拥有与sql server相同的功能吗

我的问题可能看起来很傻,因为我是nosql的新手,但我只是想知道它是否不支持sql查询。我们怎样才能做到:

select *, (select name from cities where id = cityid) from users

如何连接表?使用存储过程、视图之类的东西

我经常使用MongoDB。我建议在Mongolabs上注册一个沙箱帐户,然后玩它。它也有一个优秀的C#驱动程序。NoSql并不是真正的关系型,尽管您可以通过ID关联文档。在您的示例中,您将根据用户文档存储一个城市数组(如果我正在清楚地阅读您的示例),并查询该数组,反之亦然。对数据重复的关注已经减少,因为存储方面的关注已经不像以前那么重要了。我使用JavaScript编写脚本(与存储过程相等),并直接在Mongo上运行它,Mongo具有难以置信的灵活性和强大功能。当然,如果您有大量相关对象,那么关系数据库可能是您的最佳选择。

这是一个大问题。NoSQL是一个宽泛的术语,几乎用于描述一组非关系数据存储。它们的范围从MongoDB、RavenDB(文档存储)到Redis和其他键值存储变体。它们的操作与SQL关系模型(以及由此产生的T-SQL)非常不同

像Mongo或Raven这样的文档数据库通常有一个C#驱动程序(在大多数情况下)允许您在数据存储中使用LinQ查询(这里是Mongo示例和RavenDB示例)。它们都是特定于它们的发动机的,并且是不同的

所有这些引擎都不是专门为解决您所描述的“空间”问题而设计的,而是尝试以一种低摩擦的方式与数据存储进行快速交互。所有这些数据存储的大小仍将以SQL向其抛出大量数据时的方式增长。SQL Server将处理大量数据库,大多数文档存储和其他NoSQL变体也将如此。老实说,我更信任SQL Server而不是较新的NoSQL存储,因为它经过了更长时间的现场测试。但是,正如前面所述,这些文档存储(以及其他存储,如Apache Cassandra)都可以处理大量数据。我唯一的建议是看看您希望如何查询数据。文档存储通常不像外键那样具有关系完整性的概念,因此规范化规则不适用。此外,您还需要评估您的报告需求,因为SQL在这方面通常具有优势,因为它有更多的工具。您还可以选择一种混合方法,对关系数据使用SQL,对其他对象blob等使用文档存储


我建议您首先研究如何访问数据,然后评估哪一个最适合您的需要。还有一件事需要注意,SQL有一些很好的特性,但通常只在企业版本中使用。这要花很多钱。文档数据库的许可费用往往要低得多,有些是免费的,因为许多公司都提供托管服务,所以您无需担心。最后,如果使用SQL,我建议您从一开始就考虑分片方法,因为这将使您处理的数据量更易于管理,并允许更好的查询性能。

是的,这与我的想法非常相似,在工作中,我们使用混合方法,真正重要的数据将写入SQL