从20世纪80年代到1990年代末的互联网时代,SQL数据库主导了开发领域。大型商业应用、利基产品和各种定制应用都基于SQL。
但互联网的兴起深刻地改变了应用开发。数据的数量、数据的结构、应用的规模以及应用的发展方式都发生了巨大的变化。
这些变化导致所有规模的组织都开始采用NoSQL数据库技术。
本文旨在解释为什么NoSQL越来越受欢迎,以及在什么情况下使用NoSQL构建应用是明智的选择。
学术界和工业界在数据库技术方面始终有着大量的创新。NoSQL起源于工业界,是由Web规模应用和搜索及广告基础设施的成功先驱的需求驱动的。这些应用的需求无法由SQL技术满足,每家早期公司都开发了新的数据库来满足其需求。其中大多数是在内部开发的,后来作为开源发布。有些保持为专有。
MongoDB的创始人Dwight Merriman、Eliot Horowtiz和Kevin Ryan在构建DoubleClick(一家早期的互联网广告公司,现在是谷歌的一部分)时,对SQL技术感到挫败。离开DoubleClick后,他们在2007年创立了MongoDB,以创建他们一直想要的NoSQL数据库。
与此同时,公共云被发明出来,并成为数据库技术交付的重要方式。
在更广泛的意义上,导致早期互联网公司创建NoSQL数据库的挫败感现在几乎被所有组织所共有。
数字化转型是指通过可扩展、可定制的互联网和移动应用程序来服务客户的趋势。这些应用程序往往难以使用SQL技术构建和快速演变。因此,从2000年代中期到2020年,我们见证了NoSQL数据库技术的持续增长。
NoSQL的兴起是计算机科学和应用开发中的一个重要事件,因为SQL一直占据主导地位如此之久。许多其他形式的数据库技术已经来去,但很少有像NoSQL这样被广泛采用。
通过了解NoSQL数据库的流行趋势,我们应该能够阐明何时使用NoSQL是合理的。
NoSQL 涵盖了许多不同的数据库结构和数据模型。(更多信息请参阅NoSQL 数据库类型。)本文讨论将它们视为一个整体,并确定人们转向 NoSQL 数据库的主要原因。
NoSQL 数据库技术通常出于以下一个或多个原因被采用
NoSQL 数据库的开发速度通常比 SQL 数据库快得多。
由于 NoSQL 数据库通常允许开发人员控制数据的结构,因此它们与现代基于冲刺、快速迭代和频繁代码推送的敏捷开发实践非常匹配。当一个开发人员必须要求 SQL 数据库管理员更改数据库结构,然后卸载数据并重新加载,这可能会减慢开发速度。
使用 NoSQL 数据库,处理和演变多种形式的数据结构更容易。
NoSQL 数据库通常更适合在一个数据库中存储和建模结构化、半结构化和非结构化数据。
NoSQL 数据库通常以与应用程序中使用的对象类似的形式存储数据,减少了从数据存储的形式转换到数据在代码中采取的形式的需要。
许多应用程序中的数据量无法由 SQL 数据库以可承受的成本提供。
NoSQL 数据库是为了处理大数据作为其基本架构的一部分而创建的。与使用 SQL 数据库处理 Web 规模应用程序时所需的额外工程不同,数据可扩展性的路径简单明了且易于理解。
NoSQL 数据库通常基于横向扩展策略,这使得在大型数据量上的扩展比使用 SQL 数据库采用的纵向扩展方法便宜得多。
SQL 无法处理流量规模和零停机时间的需求。
大多数 NoSQL 数据库使用的横向扩展策略为扩展数据库可以处理的流量量提供了一个清晰的路径。
横向扩展架构还提供了诸如能够在零停机时间内升级数据库或更改其结构等好处。
横向扩展架构是处理大量流量中最经济实惠的方法之一。
可以更容易地支持新的应用程序范例。
NoSQL 数据库的可扩展性允许一个数据库从同一个数据库中处理事务和分析工作负载。在 SQL 数据库中,通常使用单独的数据仓库来支持分析。
NoSQL 数据库是在云时代创建的,并且已经迅速适应了云的一部分自动化。使用 NoSQL 数据库以支持微服务的方式部署数据库通常更容易。
NoSQL 数据库通常与实时流技术具有更好的集成。
NoSQL 数据库支持多语言持久性,即根据应用程序特定部分的需求混合各种NoSQL 数据库类型。例如,一些应用程序将大部分数据存储在类似 MongoDB 的文档数据库中,但补充使用图数据库来捕获人与人或产品之间的固有联系。
如果你有这些需求,那么你应该考虑采用NoSQL 数据库,如 MongoDB。
所有规模的公司,从小型初创公司到知名财富100强公司,都在MongoDB上构建领先的应用程序。
免费开始使用最流行的NoSQL数据库MongoDB的最简单方法是通过尝试MongoDB Atlas,这是一个在所有流行的云平台上运行的全托管MongoDB版本。
值得注意的是,尽管NoSQL显示出快速增长,但SQL数据库对于许多应用程序来说仍然是一个很好的选择。关于SQL的知识非常广泛,有大量的产品和支持工具,以及庞大的训练有素的开发者和顾问社区。
在比较MongoDB与PostgreSQL的讨论中,提供了SQL与MongoDB之间优势的更详细比较。
本文的关键点是,即使在SQL拥有许多优势的情况下,NoSQL数据库也如上述原因所示,正在迅速进步。