zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

《SQL与关系数据库理论——如何编写健壮的SQL代码》一1.3 原理而非产品

SQL原理产品代码 如何 编写 理论 1.3
2023-09-11 14:19:16 时间

本节书摘来华章计算机《SQL与关系数据库理论——如何编写健壮的SQL代码》一书中的第1章 ,第1.1节 C. J. Date 著 单世民 何英昊 许侃 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 原理而非产品

如同我早先提到的,“为什么你作为数据库领域专业人员需要懂得关系模型”这个问题是值得花时间去搞清楚的。原因是:关系模型不是特定的产品;相反,它关注于原理。这里的原理指的是什么?这里有一个定义(来源于《Chambers Twentieth Century Dictionary》)。
“原理:基础的、自然本质的、理论基础的源头,根本,本源:其他课题得以建立或发展的基础事实。”
关于原理的关键在于:原理具有普适性、稳定性。相反,产品和技术(以及SQL语言)总是在改变——而原理不变。举例来说,假设你懂Oracle;事实上,可以假设你是Oracle专家。而如果你仅仅懂得Oracle,那么你的知识就不一定是可移植的,比如DB2或SQL Server环境(甚至有可能会阻碍你在新环境中的进步)。但是如果你懂得底层原理(也就是说,如果你懂得关系模型),那么你就掌握了可移植的知识和技巧:这些知识和技巧可以应用于任何环境,永不过时。
因此,我们会在本书中关注于原理而非产品,关注于基础而非新奇的技术。我知道,你在现实世界中有时不得不进行妥协。比如,有时你会出于实用原因而不按照理论上的优化方法来设计数据库。再比如,重新考虑SQL。尽管以关系化方法使用SQL(至少在大部分情况下)是确实可行的,但是你有时会发现(因为已有的实现很不完美),关系化使用SQL存在严重的性能问题……此时你多少会被迫做一些不是“真正关系化”的事情(比如为了实现强制使用索引而以不自然的方式编写查询)。然而,我十分坚定地相信:你应该总是以理论为先的立场进行这样的妥协或权衡:

在你决定进行权衡的时候,你应该理解你想要做什么。 你应该知道理论上正确的情形,若要违反它你应该有十分有力的理由。 你还应该把这些理由记录下来,以便在将来某个时刻这些理由不再成立的情况下(比如,你使用产品的新版本在某些方面进行了改善)可以撤销先前的权衡措施。

下面的引述来自于500多年前的达芬奇(Leonardo da Vinci ,1452—1519),这位艺术大师很好地总结了这种情形:
热衷于实践而不要理论的人好像一个水手登上了一只没有舵和罗盘的船,他拿不准该往哪里航行。实践应以好的理论为基础。


【SQL开发实战技巧】系列(二十七):数仓报表场景☞通过对移动范围进行聚集来详解分析函数开窗原理以及如何一个SQL打印九九乘法表 本篇文章讲解的主要内容是:***通过执行计划看开窗函数开窗语法rows\range between preceding and current row以及rows\range between unbounded preceding and unbounded following对移动范围的值进行聚集的原理以及区别】、如何通过一个SQL打印九九乘法口表!!!***
没有索引也能用SQL ?深度解析 SLS Schema-on-Read 分析原理与应用 为了能够更灵活的挖掘日志数据背后的价值,SLS提出了一种不需要事先建立索引就能对数据进行分析的模式。本文对SLS Schema-on-Read分析的提出背景、设计思路、实现过程、使用方式、适用场景进行了全面的介绍。
深入浅出SQL优化器原理 SQL优化器是数据库、数据仓库、大数据等相关领域中最复杂的内核模块之一,它是影响查询性能的关键因素。比如大家熟知的开源产品 MySQL、PostgreSQL、Greenplum DB、Hive、Spark、Presto,都有自己的优化器。本文将由浅入深地带读者了解其中技术原理。
深入浅出SQL优化器原理 SQL优化器是数据库、数据仓库、大数据等相关领域中最复杂的内核模块之一,它是影响查询性能的关键因素。比如大家熟知的开源产品 MySQL、PostgreSQL、Greenplum DB、Hive、Spark、Presto,都有自己的优化器。本文将由浅入深地带读者了解其中技术原理。 作者:阿里云 AnalyticDB MySQL 团队 — 郭泽晖(索月)
霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理 举凡后端面试,面试官不言数据库则已,言则必称SQL优化,说起SQL优化,网络上各种“指南”和“圣经”难以枚举,不一而足,仿佛SQL优化已然是妇孺皆知的理论常识,然后根据多数无知(Pluralistic ignorance)理论,人们印象里觉得多数人会怎么想怎么做,但这种印象往往是不准确的。那SQL优化到底应该怎么做?本次让我们褪去SQL华丽的躯壳,以最浅显,最粗俗,最下里巴人的方式讲解一下SQL优化的前因后果,前世今生。
SQL查询引擎原理浅析 # SQL的诞生 SQL英文全称是Structured Query Language,中文名即结构化查询语言,是一门专门用来查询数据的声明式编程语言。 我先解释一下声明式语言的概念,编程语言有两个分类: * 命令式:手把手教机器做事情 * 声明式:告诉机器任务,让它自己想办法解决 举个例子,假设你家里有机器人,你想让它帮忙拿一个在客厅桌子上的白色杯子给你。 如果用命令式编程的方