系统设计之数据库

为您的项目选择正确的数据库是一项复杂的任务。许多数据库选项都适合不同的用例,很快就会导致决策疲劳。

我们希望这份备忘单提供高级指导,以找到符合您项目需求的正确服务并避免潜在的陷阱。

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

一、国外数据库产品

 二、国内数据库产品

三、数据库提供支持的 8 种数据结构

答案会根据您的用例而有所不同。数据可以在内存或磁盘上建立索引。同样,数据格式也各不相同,例如数字、字符串、地理坐标等。系统可能是写入密集型的,也可能是读取密集型的。所有这些因素都会影响您对数据库索引格式的选择。

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

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

四、SQL 语言组件

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

下图显示了该过程。请注意,不同数据库的架构有所不同,该图演示了一些常见的设计。

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

  1. SQL 语句被发送到命令解析器,在其中进行语法和语义分析,然后生成查询树。
  2. 查询树被发送到优化器。优化器创建执行计划。
  3. 将执行计划发送给执行者。执行器从执行中检索数据。
  4. 访问方法提供执行所需的数据获取逻辑,从存储引擎检索数据。
  5. 访问方法决定 SQL 语句是否是只读的。如果查询是只读的(SELECT 语句),则会将其传递到缓冲区管理器以进行进一步处理。缓冲区管理器在缓存或数据文件中查找数据。
  6.  如果语句是 UPDATE 或 INSERT,则将其传递到事务管理器以进行进一步处理。
  7.  在事务期间,数据处于锁定模式。这是由锁管理器保证的。它还确保了事务的 ACID 属性。

五、SQL查询可视化

SQL语句由数据库系统分几个步骤执行,包括:

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

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

  • 索引和缓存的使用
  • 表连接的顺序
  • 并发控制
  • 事物管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/207559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试卷王的自述,我难道真的很卷?

前言 前段时间去面试了一个公司,成功拿到了offer,薪资也从12k涨到了18k,对于工作都还没两年的我来说,还是比较满意的,毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王,感觉自己年轻&#xff…

北邮22级信通院数电:Verilog-FPGA(12)第十二周实验(2)彩虹呼吸灯(bug已解决 更新至3.0)

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1一些更新和讲解 1.2改正后的…

解密HubSpot CMS Hub:构建引人入胜的企业网站!

在数字化时代,网站是企业与客户互动的重要窗口。为了在竞争激烈的市场中脱颖而出,企业需要一个现代化、用户友好且高度可定制的网站。而HubSpot CMS Hub作为一款领先的内容管理系统,为企业提供了独特的优势,让网站建设变得更加轻松…

Private Set Intersection from Pseudorandom CorrelationGenerators 最快PSI!导览解读

目录 一、概述 二、相关介绍 三、性能对比 四、技术细节 1.KKRT 2.Pseudorandom Correlation Generators 3.A New sVOLE-Based BaRK-OPRF 4.BaRK-OPRF 五、总结 参考文献 一、概述 这篇文章的主要脉络和核心思想是探讨如何利用伪随机相关生成器(PCG&#…

【AI】以大厂PaaS为例,看人工智能技术方案服务能力的方向(2/2)

目录 三、解决方案 3.1 人脸身份验证 3.2 图像审核(暴恐、色情等) 3.3 人脸会场签到 3.4 机器人视觉 3.5 视频审核 3.6 电商图文详情生成 3.7 智能客服 接上回: 【AI】以大厂PaaS为例,看人工智能技术方案服务能力的方向&…

麒麟系统进入救援模式或者是crtl D界面排查方法

如出现以下图片的情况可能需要修复磁盘: V10GFB-desktop: 开机后发现一致卡在此界面: 按esc键后有以下报错信息说明在/etc/fstab里面编写的外挂磁盘的命令有问题 解决方法如下:进入单用户模式对/etc/fstab进行修改: …

智能优化算法应用:基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.侏儒猫鼬算法4.实验参数设定5.算法结果6.参考…

天津大数据培训机构品牌 数据分析师的发展方向

大数据专业还是有一定难度的,毕竟大数据开发技术所包含的编程技术知识是比较杂且多的如果是计算机专业的学生或者自身有一定基础的人学,相对来说会比较容易,但对于零基础小伙伴学习来说,想要学习大数据,难度还是很高的…

3D Web可视化平台助力Aras开发PLM系统:提供数据访问、可视化和发布功能

HOOPS中文网慧都科技是HOOPS全套产品中国地区指定授权经销商,提供3D软件开发工具HOOPS售卖、试用、中文试用指导服务、中文技术支持。http://techsoft3d.evget.com/ Aras是一个面向数字化工业应用的开放性平台,帮助世界领先的复杂互联产品制造商转变其产…

大三上实训内容

项目一:爬取天气预报数据 【内容】 在中国天气网(http://www.weather.com.cn)中输入城市的名称,例如输入信阳,进入http://www.weather.com.cn/weather1d/101180601.shtml#input 的网页显示信阳的天气预报,其中101180601是信阳的…

HttpComponents: 概述

文章目录 1. 概述2. 生态位 1. 概述 早期的Java想要实现HTTP客户端需要借助URL/URLConnection或者自己手动从Socket开始编码,需要处理大量HTTP协议的具体细节,不但繁琐还容易出错。 Apache Commons HttpClient的诞生就是为了解决这个问题,它…

高德地图画渐变线

高德地图画渐变线,思路是将线和颜色均分为多个小线段和小颜色,实现渐变,类似于下图。 如果需要多段线,自己循环拼一下就可以了,方法返回多个小线段组成的polyline数组。 /** 高德地图画渐变线* author: liyun* params…

【WPS】Excel表格数据透视表

数据少量还好,如果输数多起来就麻烦了,最近需要汇报一个情况。 描述 譬如:开发(80.00%->91.16%):共计43项(本周新增1项),本周新增已完成2项,共已完成36项…

RHEL8_Linux访问NFS存储及自动挂载

本章主要介绍NFS客户端的使用 创建FNS服务器并通过NFS共享一个目录在客户端上访问NFS共享的目录自动挂载的配置和使用 1.访问NFS存储 前面介绍了本地存储,本章就来介绍如何使用网络上的存储设备。NFS即网络文件系统,所实现的是 Linux 和 Linux 之间的共…

新手搭建知识付费平台必备攻略:如何以低成本实现高转化?

我有才知识付费平台 一、引言 随着知识经济的崛起,越来越多的知识提供者希望搭建自己的知识付费平台。然而,对于新手来说,如何以低成本、高效率地实现这一目标,同时满足自身需求并提高客户转化率,是一大挑战。本文将…

SPA, SEO, SSR总结

SPA单页面Web应用 SPA(Single page web application) 单页面Web应用 Web不再是一张张页面,而是一个整体的应用,一个由路由系统,数据系统,页面(组件)系统等等,组成的应用程序, 让用户不需要每次与服务器进行页面刷新来获得新的内容, 从而提供了更快,跟流畅的用户体验, 在SPA中…

参与创作①周年啦~

写在前面 今天看了消息才知道,原来开始创作已经一年了。此篇无干货,纯白话,纯记录。 机缘 参与CSDN创作已经一年有余,犹记得第一篇博文是为了整理好所学内容,方便自己复习。没想到后面也陆陆续续发了些其他内容&…

12.8作业

1.头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QMovie>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nul…

spring-boot-starter-validation是什么Validation参数校验使用概要

spring-boot-starter-validation是什么&Validation参数校验使用概要 来源Valid和Validated的用法(区别)引入依赖Valid和Validated的用法 在日常的项目开发中&#xff0c;为了防止非法参数对业务造成的影响&#xff0c;需要对接口的参数做合法性校验&#xff0c;例如在创建用…

系统设计-微服务架构

典型的微服务架构图 下图展示了一个典型的微服务架构。 负载均衡器&#xff1a;它将传入流量分配到多个后端服务。CDN&#xff08;内容交付网络&#xff09;&#xff1a;CDN 是一组地理上分布的服务器&#xff0c;用于保存静态内容以实现更快的交付。客户端首先在 CDN 中查找内…