编辑
2024-05-29
👨‍🎓 无限进步
00
请注意,本文编写于 386 天前,最后修改于 225 天前,其中某些信息可能已经过时。

目录

A nice cheat sheet of different databases in cloud services
8 Data Structures That Power Your Databases
How is an SQL statement executed in the database?
CAP theorem
Types of Memory and Storage
Visualizing a SQL query
SQL language

A nice cheat sheet of different databases in cloud services

云服务中不同数据库的便捷速查表

image.png

为您的项目选择合适的数据库是一项复杂的任务。许多数据库选项,每个都适合不同的用例,可能会迅速导致决策疲劳。

我们希望这个速查表能为您提供高层次的指导,以确定符合您项目需求的正确服务,并避免潜在的陷阱。

注意:谷歌对其数据库用例的文档有限。尽管我们尽力查看了可用内容并得出了最佳选项,但某些条目可能需要更准确。

8 Data Structures That Power Your Databases

数据库索引格式的选择取决于您的具体使用场景。数据可以在内存中或在磁盘上进行索引。同样,数据格式也各不相同,例如数字、字符串、地理坐标等。系统可能是写操作密集型或读操作密集型。所有这些因素都会影响您对数据库索引格式的选择。

image.png 以下是一些用于索引数据的最流行的数据结构:

  • 跳跃表:一种常见的内存中索引类型。在Redis中使用
  • 哈希索引:“映射”数据结构(或“集合”)的一种非常常见的实现
  • SSTable:不可变的磁盘上“映射”实现
  • LSM树:跳跃表+SSTable。高写入吞吐量
  • B树:基于磁盘的解决方案。一致的读写性能
  • 倒排索引:用于文档索引。在Lucene中使用
  • 后缀树:用于字符串模式搜索
  • R树:多维搜索,例如查找最近邻居

How is an SQL statement executed in the database?

下面这张图展示了这个过程。请注意,不同数据库的架构是不同的,这张图展示了一些常见的设计。

image.png

第一步 - 通过传输层协议(例如TCP)将SQL语句发送到数据库。

第二步 - SQL语句被发送到命令解析器,在那里它经过语法和语义分析,然后生成查询树。

第三步 - 查询树被发送到优化器。优化器创建执行计划。

第四步 - 执行计划被发送到执行器。执行器从执行中检索数据。

第五步 - 访问方法提供执行所需的数据获取逻辑,从存储引擎检索数据。

第六步 - 访问方法决定SQL语句是否是只读的。如果查询是只读的(SELECT语句),它将被传递给缓冲区管理器进行进一步处理。缓冲区管理器在缓存或数据文件中查找数据。

第七步 - 如果语句是UPDATE或INSERT,它将被传递给事务管理器进行进一步处理。

第八步 - 在事务期间,数据处于锁定模式。这是由锁管理器保证的。它还确保事务的ACID属性。

CAP theorem

CAP定理是计算机科学中最著名的术语之一,但我敢打赌不同的开发者有不同的理解。让我们来探讨一下它是什么以及为什么它可能会令人困惑。

image.png

CAP定理指出,一个分布式系统不能同时提供以下三个保证中的两个以上。

  • 一致性:一致性意味着所有客户端在任何时间点都能看到相同的数据,无论它们连接到哪个节点。
  • 可用性:可用性意味着任何请求数据的客户端都会得到响应,即使某些节点宕机。
  • 分区容错性:分区表示两个节点之间的通信中断。分区容错性意味着系统在网络分区的情况下继续运行。

“三选二”的表述可能是有用的,但这种简化可能会产生误导。

  1. 选择一个数据库并不容易。仅仅基于CAP定理来证明我们的选择是不够的。例如,公司不会仅仅因为Cassandra是一个AP系统就选择它用于聊天应用。有一系列良好的特性使得Cassandra成为存储聊天消息的理想选择。我们需要更深入地挖掘。

  2. “CAP只禁止了设计空间的一小部分:在存在分区的情况下实现完美的可用性和一致性,这种情况很少见。”引自论文:CAP十二年后:规则如何改变。

  3. 该定理关注的是100%的可用性和一致性。一个更现实的讨论应该是在没有网络分区的情况下,延迟和一致性之间的权衡。更多细节请参见PACELC定理。

CAP定理真的有用吗?

我认为它仍然有用,因为它为我们打开了一系列权衡讨论的思路,但它只是故事的一部分。在选择正确的数据库时,我们需要更深入地挖掘。

Types of Memory and Storage

image.png

Visualizing a SQL query

image.png

SQL语句的执行涉及多个步骤,包括:

  1. 解析SQL语句并检查其有效性;
  2. 将SQL转换为内部表示形式,如关系代数;
  3. 优化内部表示并创建利用索引信息的执行计划;
  4. 执行计划并返回结果。

SQL的执行非常复杂,涉及许多考虑因素,例如:

  1. 索引和缓存的使用;
  2. 表连接的顺序;
  3. 并发控制;
  4. 事务管理。

SQL language

在1986年,SQL(结构化查询语言)成为了一个标准。在接下来的40年里,它成为了关系数据库管理系统的主导语言。阅读最新的标准(ANSI SQL 2016)可能会很耗时。我该如何学习它? image.png

SQL语言有5个组成部分:

  1. DDL:数据定义语言,如CREATE、ALTER、DROP
  2. DQL:数据查询语言,如SELECT
  3. DML:数据操作语言,如INSERT、UPDATE、DELETE
  4. DCL:数据控制语言,如GRANT、REVOKE
  5. TCL:事务控制语言,如COMMIT、ROLLBACK

作为一个后端工程师,你可能需要了解其中的大部分。作为一个数据分析师,你可能需要对DQL有很好的理解。选择与你最相关的主题进行学习。

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!