从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

  • 数据库

    • 教程概述
    • 数据的存储
    • 数据库的安装
    • 数据库的启停与连接
    • 数据库的管理
    • SQL 概述
    • 表的管理
    • SELECT 基础
    • 运算符
    • 聚合查询
    • 数据的排序
    • 数据的插入
    • 数据的删除
    • 数据的更新
    • 事务
    • 视图
    • 子查询
    • 函数
    • 谓词
    • CASE 表达式
    • 集合运算
    • 联结查询-JOIN
    • SQL 入门小结
    • 更多数据库
      • 国产自研数据库
      • SQLite
      • NoSQL
      • NewSQL
      • SPL
      • 推荐阅读
    • MySQL 的数据类型
    • 命令行的一些用法
    • 用户与权限管理
    • MySQL 的权限管理
    • mysqldump
    • mysqladmin
    • Liquibase
    • 表注释与字段注释
    • 编码类型
  • 编程工具

  • 装机

  • 计算机基础
  • 数据库
2023-12-02
目录

更多数据库

# 250.更多数据库

简单讲讲除了 MySQL 之外,其他的一些数据库。

‍ ‍

# 国产自研数据库

目前,国内市场主流的数据库,商业数据库有 Oracle,SQL server 以及 DB2,传统 + 开源的有更多。

既然已经有了成熟的产品,为什么还要自研呢?

首先,商业数据库是很贵的。除了购买的时候要付钱,每年还有一大笔版权费(如果是大客户,费用高达上亿)。此外,如果 Oracle 出了问题呢?由于是商业产品,客户是没有源码的,无法自己排查,只能叫大洋彼岸的甲骨文员工前来解决。

那如果是开源的数据库呢?首先,一开始的时候,大部分数据库都没 Oracle 这些商用的好。MySQL 刚出来的时候,完全比不上 Oracle,Oracle 几乎是处于垄断地位。其次,如今 MySQL 也被 Oracle 收购,转型成了半商用数据库。此外,如果开源的数据库有问题,是没后售后解决的,顶多有个社区维护。

此外,在美国还出现过“棱镜门”,将自己的数据依赖于其他人的数据库,终究是不太可靠的,因此,只能自己想办法,例如搞一个数据库。国内不少大公司都曾去 IOE 化( I 是指服务器提供商 IBM,O 是指数据库软件提供商 Oracle,E 则是指存储设备提供商 EMC,三者构成了一个从软件到硬件的企业数据库系统)。

目前,国家方面也有一些政策,要求国内的一些重要企业(例如国企,银行)逐步使用自研的数据库、自研的操作系统等。

国内的自研数据库有腾讯的 TDSQL,阿里的 PolarDB 等。感兴趣的朋友,可以看看这篇文章:乘风破浪的中国数据库 (opens new window)

当然,也不是推荐大家使用国产数据库,用哪个得根据自身情况来考虑。一些小企业没有互联网企业那种专业的研发团队,也没有那么高的并发量和数据量,用 Oracle 这种商业数据库也没问题,除了贵几乎没其他问题,有问题还有售后支持。 ‍

# SQLite

如果问你哪个数据库产品是世界上使用最多的数据库,你认为是 Oracle、MySQL 还是 Microsoft SQL Server?

以上都不是,世界上安装使用最多的数据库是 SQLite。没错,就是这个小巧的嵌入式数据库引擎。所有的手机、电脑、浏览器以及无数的应用程序都内置了 SQLite 数据库,PHP 和 Python 语言也内置的 SQLite 支持,预计正在使用的 SQLite 数据库达到了一万亿(1012)以上。

以上内容来自 CSDN:不剪发的 Tony 老师的博客 (opens new window),感兴趣的话可以参考其专栏。

一般情况下,Oracle、MySQL 等是安装到服务器上的;而用户的电脑,手机等,是没有安装的;总不能让用户使用你的软件之前,自己先安装个数据库、配置数据库吧?

而 SQLite 可以解决这个问题,它是一个很小巧的数据库,可以只用一个文件保存数据库中的数据。 ‍

# NoSQL

推荐这篇科普文章:Sql Or NoSql,看完这一篇你就都懂了 (opens new window)

如果想实际体验一下,可以看看我的 Redis 教程 (opens new window),看完前 4 篇文章基本上就能简单理解 Redis 是什么了。 ‍

# NewSQL

目前,数据库发展至今已经有 3 代了:

  1. SQL,传统关系型数据库,例如 MySQL
  2. noSQL,例如 Redis,MongoDB
  3. NewSQL ‍

# SQL 的问题

互联网在本世纪初开始迅速发展,互联网应用的用户规模、数据量都越来越大,并且要求 7 * 24 小时在线。

传统关系型数据库在这种环境下成为了瓶颈,通常有 2 种解决方法:

  • 升级服务器硬件:虽然提升了性能,但总有天花板。
  • 数据分片,使用分布式集群结构:对单点数据库进行数据分片,存放到由廉价机器组成的分布式的集群里。

可扩展性更好了,但也带来了新的麻烦。

以前在一个库里的数据,现在跨了多个库,应用系统不能自己去多个库中操作,需要使用数据库分片中间件。

分片中间件做简单的数据操作时还好,但涉及到跨库 join、跨库事务时就很头疼了,很多人干脆自己在业务层处理,复杂度高。 ‍

# NoSQL 的优势与不足

后来 NoSQL 出现了,放弃了传统 SQL 的强事务保证和关系模型,重点放在数据库的高可用性和可扩展性。

NoSQL 的主要优势:

  • 高可用性和可扩展性,自动分区,轻松扩展
  • 不保证强一致性,性能大幅提升
  • 没有关系模型的限制,极其灵活

NoSQL 不保证强一致性,对于普通应用没问题,但还是有不少像金融一样的企业级应用有强一致性的需求。

而且 NoSQL 不支持 SQL 语句,兼容性是个大问题,不同的 NoSQL 数据库都有自己的 api 操作数据,比较复杂。 ‍

# NewSQL 特性

NewSQL 提供了与 NoSQL 相同的可扩展性,而且仍基于关系模型,还保留了极其成熟的 SQL 作为查询语言,保证了 ACID 事务特性。

简单来讲,NewSQL 就是在传统关系型数据库上集成了 NoSQL 强大的可扩展性。

传统的 SQL 架构设计基因中是没有分布式的,而 NewSQL 生于云时代,天生就是分布式架构。

NoSQL 的主要特性:

  • SQL 支持,支持复杂查询和大数据分析。
  • 支持 ACID 事务,支持隔离级别。
  • 弹性伸缩,扩容缩容对于业务层完全透明。
  • 高可用,自动容灾。
SQL NoSQL NewSQL
关系模型 Yes No Yes
SQL 语句 Yes No Yes
ACID Yes No Yes
水平扩展 No Yes Yes
大数据 No Yes Yes
无结构化 No Yes No

‍

# 主流 NewSQL 项目

  • VoltDB (opens new window):一个内存数据库,提供了 NoSQL 数据库的可伸缩性,和传统关系数据库系统的 ACID 一致性
  • SingleStore (opens new window)(前身 MemSQL):由前 Facebook 工程师创办,号称世界上最快的分布式关系型数据库,兼容 MySQL 但快 30 倍,能实现每秒 150 万次事务。原理是仅用内存并将 SQL 预编译为 C++。
  • TiDB (opens new window):是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性
  • OceanBase (opens new window):蚂蚁集团的自研数据库产品,性能强大,高度兼容 Oracle 和 MySQL 的原生分布式数据库
  • ...... ‍

# SPL

关于 SPL 的介绍,这里转载下阮一峰老师的博客:科技爱好者周刊(第 273 期):任正非的三篇最新谈话 - 阮一峰的网络日志 (opens new window)

SQL 的大名,大家一定听说过,这是必备的数据库技能。但是你未必知道,它有一个最大痛点:不善于计算。只要涉及计算,SQL 语句要么不好写,要么性能差。

有一个面试问题:找出某只股票连续上涨的最长天数,SQL 应该怎么写?

​​

上面就是答案,涉及多张中间表,不是精通 SQL 的高级工程师,根本写不出来。

SQL 不善于计算的原因很简单,它作为查询语言而发明,名字就叫"结构化查询"(structured query),数学基础是关系模型,一开始就没有考虑要做复杂计算。

近年来,数据处理和计算的需求越来越大,于是 OLAP(联机分析处理)和 OLTP(联机事务处理)这样的新技术就诞生了。它们基于数据库,属于"数据库 + 计算层",如果遇到海量数据,处理效率往往不高。

但是,还有另一种思路:能不能改造数据库底层,让它善于计算呢? 这就是 SPL 语言 (opens new window)的由来,它把 SQL 的 Q(query 查询)换成了 P(process 数据处理),数学基础从关系模型变成了离散数学,把 "数据存储 + 数据计算"做在了一起。

SPL 属于新概念,网上有一个中文论坛"乾学院" (opens new window),里面全是 SPL 相关知识,大家可以看看。

国内目前只有一家公司,在研发和推广 SPL 技术,创始人据说是来自清华大学计算机系的奥林匹克数学竞赛的金牌得主。

他们已经做出了自己的 SPL 实现,并向社会开源了,叫做 esProc SPL (opens new window),GitHub 已经有 2300+ star。这个产品有很多优点,我帮他们宣传一下,把 SPL 传播出去。

# 推荐阅读

除了 MySQL,这些数据库你都认识么? (opens new window)

Sql Or NoSql,看完这一篇你就都懂了 (opens new window)

为什么很多公司都开始去 Oracle 而使用 MySQL? - 知乎 (opens new window)

为什么传统行业几乎都用 Oracle,而互联网行业几乎都不用 Oracle 呢? - 赛车手的回答 - 知乎 (opens new window)

为什么传统行业几乎都用 Oracle,而互联网行业几乎都不用 Oracle 呢? - 陈龙的回答 - 知乎 (opens new window)

乘风破浪的中国数据库 (opens new window)

贺 TDSQL 喜提 286 万 QPS!本文回顾了它的十年锻造之路 - 知乎 (opens new window)

云数据库,谁才是真正领导者? (opens new window)

开源 2 年、打磨 13 年的开源数据库项目,性能炸裂! (opens new window)

https://db.cs.cmu.edu/papers/2016/pavlo-newsql-sigmodrec2016.pdf (纯英文)

上次更新: 2025/5/5 17:15:09
SQL 入门小结
MySQL 的数据类型

← SQL 入门小结 MySQL 的数据类型→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式