对于社交网络、流媒体内容、新闻分发和零售,全球可扩展在线服务的出现极大地改变了对应用程序基础架构和软件架构的要求。最重要的转变之一是系统存储、组织和访问数据的方式。Oracle数据库等传统关系数据库管理系统(RDBMS)不太适合Web应用程序,因为这些应用程序需要分布式横向扩展集群基础架构。NoSQL数据库更适合松耦合设计,其中应用程序数据和可执行代码分布在多台机器和数据中心。扎根于开源社区和云原生开发的基础设施即服务(IaaS)提供商构建了多种NoSQL数据库类型,以适应不同的数据和用例。优点和缺点由于Web应用程序和服务是NoSQL开发背后的主要驱动力,因此所有类型的NoSQL数据库都比RDBMS更具优势。这些优点包括如下:可以处理多种数据类型;更高的性能和更低的延迟;非常适合非结构化数据,例如文本、图像、音频和视频;更适合水平扩展的松耦合系统;非常适合时间序列或其他流数据,例如事件日志和物联网数据;可以处理不同形式的NoSQL系统和非结构化数据模型的可用性;可以访问广泛的开源或低成本部署,比复杂的RDBMS更便宜。然而,这些好处是有代价的。例如,RDBMS系统通过ACID模型确保更直接的一致性和可靠性,它指的是原子性、一致性、隔离性和持久性。NoSQL数据库遵循BASE模型:基本可用性、软状态和最终一致性。此外,这些非关系数据库缺乏检查数据完整性的内置机制;它必须在外部代码中完成。***,一般不支持复杂的SQL操作,例如复合select语句或表连接。NoSQL数据库类别NoSQL不是特定类型的数据库,而是具有多种变体的数据库类别:一个或多个数据对象或记录。这类似于字典,每个键可以有不同数量的值,而不是固定长度。Memcache:这是一个非常适合系统RAM的键值存储。无需扩展整个数据库来处理特定的应用程序功能或场景,从而提高性能并降低成本。文档存储:虽然它是键值数据库的一个子集,但文档存储中的值遵循预定义的层次结构,该结构嵌入了有关存储内容的元数据。文档存储通常以文本格式(例如XML、YAML或JSON)或二进制变体(例如MicrosoftOffice文件或PDF)进行编码。搜索数据库:一个专用的文档存储,文档索引可以在多个节点上进行分片和分布,以提供巨大的可扩展性来加速特定项目的检索。基于列的存储:此存储按列而不是行组织数据。列被分组为可以一起访问的相关数据系列。图数据库:这类数据库不采用一般的行列结构,而是支持项的集合及其相互关系。NoSQL数据库比较随着云基础设施成为部署Web应用程序的流行选择,AWS、Microsoft和GoogleCloud构建了NoSQL服务和产品,以更好地适应不同的数据类型和用例。每个产品的细节会有所不同,但下表显示了每个NoSQL数据库产品的样子:正如NoSQL数据库比较表所示,每种NoSQL数据库类型都有几种流行的开源和商业产品。每个第三方选项都具有云替代方案不一定提供的特定功能和优势。例如,可以配置MongoDB,使复制数据与读取立即一致,而不是最终一致性。然而,最重要的区别是部署模型:私有管理(内部部署或托管基础设施)与云服务。这里归结为企业是更喜欢自我管理、高度可配置和受控的软件,还是更喜欢可消除前期资本支出和持续基础设施管理开销的托管云服务。
