|
6 | 6 | <description>Recent content on tyza66的博客</description> |
7 | 7 | <generator>Hugo -- 0.155.0</generator> |
8 | 8 | <language>zh-cn</language> |
9 | | - <lastBuildDate>Fri, 06 Feb 2026 19:36:04 +0800</lastBuildDate> |
| 9 | + <lastBuildDate>Wed, 11 Feb 2026 11:36:04 +0800</lastBuildDate> |
10 | 10 | <atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" /> |
| 11 | + <item> |
| 12 | + <title>[技术分享][006期]数据库一次全通!(以 SQL 型为例)</title> |
| 13 | + <link>http://localhost:1313/technology_sharing/t006/</link> |
| 14 | + <pubDate>Wed, 11 Feb 2026 11:36:04 +0800</pubDate> |
| 15 | + <guid>http://localhost:1313/technology_sharing/t006/</guid> |
| 16 | + <description><h3 id="说明">说明</h3> |
| 17 | +<p> 你会发现,Web 开发中服务器接受一个请求正常不就是走那个执行流程产生一个返回结果返回回去吗,事实也是这样</p> |
| 18 | +<p> 在常规的Web开发中,从控制器接收到请求命令之后可以执行一段逻辑,而在这段逻辑中我们可以设定符合相应逻辑的特定操作(其中一种常见的操作就是读写数据)之后把数据拼装成特定的形式返回给请求方 |
| 19 | + |
| 20 | + 数据虽然可以存储在任何介质中,比如文本文件,可是文本文件太大了读写就会变慢,这时候我们就会想到按某种方式去分区存储(比如放在不同类型的文件夹、不同名称的文件)&hellip; |
| 21 | + |
| 22 | + 然后为了图读写方便,我们还要将文本中的每行都固定一个格式,跟咱们选的编程语言能相互搭配,快速转换成这个语言支持的变量&hellip;</p> |
| 23 | +<p> 你又感觉存硬盘里面读取太慢了,改成选择性保存到内存&hellip; 升级索引方式&hellip; 优化查找逻辑&hellip;</p> |
| 24 | +<p> 之后改改这改改那&hellip; 最后你就设计出来一个数据库 |
| 25 | + </p> |
| 26 | +<h3 id="如何界定快慢">如何界定快慢</h3> |
| 27 | +<p> 暂且认为快慢只取决于操作复杂度和传输大小。 |
| 28 | + </p> |
| 29 | +<h3 id="数据库能干啥">数据库能干啥</h3> |
| 30 | +<p> 现在已经有的成熟的数据库类型有很多种,能存储的数据也多种多样,包括表单、对象、纯文本、向量、图片&hellip;</p> |
| 31 | +<p> 其实有这样一种说法&ndash;“语言是逻辑的边界”,也就是说其实只要能存有序的二进制、或者文本,其实就能存一切&hellip;(如果你不理解,先想想密码学为什么存在)</p> |
| 32 | +<p> 之前我说过,一切能看见的功能其实都可以自己实现,一方面人类大脑具有相同或者相似的结构,别人能想到,你也能想到。另一方面,大家用的编程语言、工具啥的也是相同或相似的。</p> |
| 33 | +<p> &ldquo;没有最好只有最合适&rdquo;,所以没必要什么都去手搓(让然手搓有时候也有自己的好处),已有的很多数据库已经做的很好了:效率高、可分离、优化好、稳定、成熟、暗病已被解决、省事、遇到问题有解决方案&hellip;</p> |
| 34 | +<p> 现有的数据库有:关系型数据库(通常使用 SQL作为交互指令)、缓存数据库、文档型数据库、键值型数据库、列式数据库、图数据库层次性数据库、面对对象数据库、时序数据库、向量数据库&hellip;</p> |
| 35 | +<p> 任何软件都有一套操作逻辑,数据库软件也一样。比如说常见的关系型数据库(PostgreSQL、MySQL、SQLServer、Oracle等),他们都是使用 SQL 去交互的(相似但不完全相同,但操作逻辑基本一致),换句话说就是这些数据库的制作者认为使用 SQL 操作(与其交互)这些种类软件是最合适的</p> |
| 36 | +<p> 外部运行一个软件再与其交互的好处有挺多的,比如可以分离进程、分离存储、分机器、便于灾备和负载均衡、兼容多语言&hellip; (而直接代码实现也有自己的好处),这个自己选最合适的方式就行</p> |
| 37 | +<p> 对于一种数据库要关注的点就是操作逻辑、增删改查、原子性保证(事务)、便捷优化方式(比如索引),如果你想非常在最大程度上优化就需要理解原理了(比如全查后过滤和同时条件查询的选择、SQL 语句嵌套顺序的选择)</p> |
| 38 | +<p> 快速理解一个数据库的操作逻辑的方法就是用一下,如果有可视化操作工具就更好了(例如 Navicat),一般使用不同编程语言去连接数据库的时候,我们会用数据库驱动连接(一般是官方提供的)、数据库中间件、ORM 等工具,甚至可以一句 SQL 也不写,按照编程语言的特性去调用被封装过的操作,这个杠杆加大了“理解远大于背诵” |
| 39 | + |
| 40 | + 可以通过可视化软件快速理表、字段、查询&hellip;</p> |
| 41 | +<p> 以SQL 的逻辑为例,基础操作可以理解为“【操作】(为操作目标服务的修饰)”,例如:</p> |
| 42 | +<p> - insert into `user`(name, email, age) values (&lsquo;sdm&rsquo;, &lsquo;<a href="mailto:shun_@outlook.com">shun_@outlook.com</a>&rsquo;, 26) [修饰]; 是“【操作】(【目标】【来源】【修饰】)” |
| 43 | + - select * from `user` where id &lt; 10; 也是 “【操作】(【目标】【来源】【修饰】)” |
| 44 | + - update `user` set age = 30 where name = &lsquo;Alice&rsquo;; 是“【操作】(【目标】【修饰】)“ |
| 45 | + - delete from `user` where id = 5; 也是“【操作】(【目标】【修饰】)“</p></description> |
| 46 | + </item> |
11 | 47 | <item> |
12 | 48 | <title>[技术分享][005期]分享一些逻辑 2026</title> |
13 | 49 | <link>http://localhost:1313/technology_sharing/t005/</link> |
|
0 commit comments