【译】SQL数据库集成NoSQL类特性

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 【源文】https://www.datanami.com/2017/09/25/sql-databases-integrating-nosql-like-features【译文】过去的几十年间,关系型数据库(SQL)在全世界几乎应用到所有类型的业务。

【源文】https://www.datanami.com/2017/09/25/sql-databases-integrating-nosql-like-features
【译文】
过去的几十年间,关系型数据库(SQL)在全世界几乎应用到所有类型的业务。其技术可靠,标准稳定,整体成熟已超过20多年。

img_7d2f0451c87b368692c45b70df367286.png

非关系型数据库(NoSQL)的概念实际早于关系型数据库,但他们只是在10年前变成切实可行。然而,在他们开始做后,主要在两类业务中快速被推广应用。第一类是大型数字经济公司,他们需要前所未有的扩展,第二类是技术初创公司,他们寻找廉价易用的数据库解决方案,以满足其扩展要求。

鉴于NoSQL功能流行度的提升,SQL数据库厂商开始注意,并在其数据库架构中实现类NoSQL类的功能。

在我们深入讨论之前,有必要先更好的理解为什么NoSQL会取得现在的地位。

NoSQL的诱惑力

NoSQL数据库主要的亮点体现在两个方面:扩展性和弹性。

img_5569e44a03cefcc08806723064572caa.png

在基础设施和扩展性方面,几十年间随着业务的增长,数据量也同步增长,传统的手段是垂直扩展,即升级至更强的数据库服务器。然而,基于云计算、商业服务器,企业现在可以实现水平扩展解决性能和高可用需求,即分布式部署NoSQL数据库,跨数据中心复制数据(如果必要,跨全球也可实现)。

管理关系型数据库是一项有技巧、成本高的运维工作,既是是使用开源产品,这就阻碍了其在初创企业的应用。使用NoSQL数据库将大幅削减对DBA角色对需求,尤其是当使用云服务时,该角色甚至消失。

在数据架构中,弹性已成为关键。传统做法是,遵循范式规则创建数据模型,该方法成型的年代,存储设备非常昂贵,人们尽力避免数据冗余。但范式规则对改进产生了巨大对束缚。对于数据库模式做的任何变更都意味着繁重的操作和高成本的协调,既是是为了改进应用,这限制了企业的灵活性。除了上面提到的基础设施的革新,NoSQL的真正革命性的方面是其弹性,可以快速适应业务改变的需求。NoSQL数据库这方面被错误的称之为“无模式”。

这个词一方面有效的抓住了人们的注意力,但也传递了错误但印象,即开发者不需要思考待存数据但结构。事实上,在使用NoSQL数据库时,数据建模甚至比之前更家重要。为了表达持续的弹性,更好的术语可能是“动态模式”。

NoSQL降低了总体拥有成本

感谢上面的两个特性,应用的总体拥有成本(TCO)得到了大幅降低,因为企业开发变得更加灵活,IT部门可以更加快速的响应竞争环境的变化。

NoSQL易入门、扩展性好、可靠性高、弹性好,且灵活,这些因素导致只需更少成本的程序就能满足业务需求。这可能不足以证明翻写已有的应用,但对于任何新项目,采用NoSQL就有意义了,它可以阻止技术债的增长和创造高成本的资产。

选择关系型数据库的常见论点是,它们的一致性、引用完整性以及能基于两阶段提交来处理事务。的确如此,当今这些功能技术对于大型、本地复杂应用依然有用。然而,在以异步、无状态WEB服务组成的相互连接的世界中,这种优势正在快速消失,这这种应用环境中要求应用能容忍事务处理的失败。基于NoSQL数据库,大部分业务可以接受和实现最终一致性,尤其是这能让网站用户保持耐心。

JSON的影响

对于特定的应用有许多不同的方式来设计关系型数据库,范式规则和引用完整性提供来一种防护措施来应对各种设计问题。对于NoSQL文档数据库,JSON的特点是灵活性和功能强大,它给新用户一种错误的安全感。相比关系型数据库,对于NoSQL数据库而言,数据建模变得更加重要,它使用户创建不同的What-if脚本。

NoSQL数据库开始成为主流后,SQL数据库厂商感受到一些影响。对于传统数据库厂商最简单的事情是增加对JSON文档对支持。这种方式对应了NoSQL文档数据库对灵活性的优点。需要小心的是,每个厂商本地检索复杂对象的能力是否与这种新能力匹配。同时,每个厂商扩展策略仍然没有太多改变。这就意味着你不能自然的使用NoSQL技术来真正的实现水平扩展。

尽管如此,也很少发现在SQL数据库中实际存储JSON数据的用户。厂商们或许不知道这个比例,但依然好不犹豫的采取防御措施,尝试将NoSQL数据库排除在企业IT部门之外。无论如何,在SQL数据库中增加JSON存储似乎只是一种附加物,而NoSQL文档数据库则明显是有意内置的。同时,我们也观察到一些大的SQL数据库厂商收购了一些NoSQL数据库,这也反应了NoSQL市场的增长。有人会认为这是产品经理忙于将不同的产品打包至一个解决方案中。

几乎每个月都有一款新NoSQL产品发布,但这难以持续下去。面对快速发展的每个细分市场,我们可能更关注改组、强化、合并。已确立的运动员会防卫他们的场地,以捍卫现有的得分,另一面挑战者会出创新牌。一些挑战者会壮大,而另一些挑战者会被收购、兼并。让我们期待最好的技术能胜出,而不是最好的市场推广能力。

NoSQL数据库厂商的回应

当然,NoSQL厂商并不会坐而待毙。首先,他们从单一功能,转变为多模型方法。而且,在宣称NoSQL数据库为“非关系型”后,人们意识到关系存在于数据语义学中,无论数据库是否支持外键约束。结果,用户要求NoSQL数据库厂商增加关系特征,例如,MongoDB引入了跨多集合的lookup功能和只读视图,以应对执行用户的请求,还有增加ACID能力来应对缺乏事务支持对非议。另外,一些增加了类似SQL对查询句法来帮助开发者过渡。

最后一个需要考虑的是,如果你从没有强制规范化过,那么使用JSON来进行数据建模会很自然,但是习惯的力量是顽固的,尤其你是SQL老手。结果,如果你从事过关系数据库,使用JSON建模则需要换思路,不论是在传统数据库中内置JSON组件,还是NoSQL文档数据库。你需要取挑战那些不可改变的原则,那些范式和事务原子性。

为了合理的利用NoSQL的优势,你需要强迫自己忘记第三范式,而从如何访问数据的角度来思考。你想要写数据库是连接数据,所以你要做的是当你读取时将其存储在一起。这种思想转变很难,尤其是在同样的数据库里,你可能暂时需要能以传统规范的方式存储数据。

NoSQL玩家持续增加特性以帮助该技术的成熟,NoSQL数据库会占据一席之地,最终会成为主流,走入企业IT的视线。同时,SQL厂商可能会说服已安装的数据库保持现状。标准化一份老的技术也许会很安全,IT部门也不会使自己丧失新技术带来的益处。他们会实验和判断,以选择合适的的工具来完成各自的业务需求。

关于作者 Pascal Desmarets

Pascal Desmarets为Hackolade创始人、CEO,他带领团队打造来一系列可视化工具,以帮助NoSQL技术在IT架构中应用推广。Hackolade软件让NoSQL文档数据库的数据建模更加舒适和易用。pascal.desmarets@hackolade.com.

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
用 SQL 还是 NoSQL?Apipost 的回答是:两个都要!
构建API如同经营公司,需根据任务选择合适工具。数据库世界中,SQL(关系型)和NoSQL(非关系型)各有所长。SQL如高档餐厅的预约系统,结构化、规则明确,适合管理清晰格式的数据;NoSQL像美食车留言墙,灵活自由,适应多样化数据格式。 Apipost同时支持SQL与NoSQL,助你应对复杂应用场景。例如开发健身App,用SQL管理用户注册、付款等结构化数据,用NoSQL存储健身日记、自拍等灵活内容。选对工具,事半功倍,让API开发更智能高效!
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
51 16
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
478 3
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
113 9
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
332 6
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
124 11
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。

热门文章

最新文章