使用 NoSQL 数据库作为 SQL Server 的替代品
本文关键字:Server 替代品 SQL NoSQL 数据库 使用 | 更新日期: 2023-09-27 18:31:11
我正在开发网站,如果成功的话,它将拥有一个快速增长的数据库(可能是TB或更多)。 到目前为止,我一直在使用sql server,对nosql一无所知。我刚刚发现nosql正在研究数据库大小,现在我不确定它是否能满足我的需求。我会拥有与SQL服务器相同的功能吗?
我的问题可能看起来很愚蠢,因为我是 nosql 的新手,但我只是想知道它是否不支持 SQL 查询。 我们怎样才能做这样的事情:
select *, (select name from cities where id = cityid) from users
如何联接表? 使用诸如存储过程、视图之类的东西?
大问题。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,我建议从一开始就研究分片方法,因为您将要处理的数据量,因为这将使其更易于管理,并允许更好的查询性能。
我用过很多MongoDB。 我建议在Mongolabs上注册一个沙盒帐户并使用它。 它还有一个优秀的 C# 驱动程序。 NoSql 并不是真正的关系,尽管您可以通过 ID 关联文档。 在您的示例中,您将针对 User 文档存储一个城市数组(如果我清楚地阅读您的示例)并对其进行查询,反之亦然。 对数据重复的担忧较少,因为存储问题不像以前那么重要。 我使用 JavaScript 编写脚本(等同于存储过程),并直接针对 Mongo 运行它,它非常灵活和强大。 当然,如果你有大量的相关对象,也许关系数据库是你最好的选择。