0

0

传统数据库没落,OLTP新型数据库发展火热

php中文网

php中文网

发布时间:2016-06-07 15:59:35

|

1419人浏览过

|

来源于php中文网

原创

参考资料: (1) 《OLTP Through the Looking Glass, and What We Found There》 (2) 《The End of an Architectural Era》,VLDB 2007 越来越多的程序员开始做移动App的开发,真正做底层系统开发的程序员还是少数。看到国内数据库系统发展的资料不是很多,我

参考资料:

(1) 《OLTP Through the Looking Glass, and What We Found There》

(2) 《The End of an Architectural Era》,VLDB 2007

越来越多的程序员开始做移动App的开发,真正做底层系统开发的程序员还是少数。看到国内数据库系统发展的资料不是很多,我也把自己对当前数据库系统发展的认识写成博文, 和大家分享,希望可以互相学习。

数据库系统的近期发展和分类

随着操作系统发展趋于稳定(不包括移动端OS),越来越的的研究集中在数据库系统的发展上,没有多少人说要重新做一个操作系统,更多的人是在现有的OS上做各式各样的应用。但是过去的10年,是数据库井喷式发展的阶段,各式各样的产品迸发出来,例如文件存储数据库(如MongoDB),列存储数据库(如Vertica), 各种NewSQL数据库(如VoltDB)。之所有有如此的发展,归结于数据量不断快速膨胀,传统数据库在大数据上的处理性能不能满足需求等。人们趋于去开发针对不同应用类型的数据库,来满足对特定数据处理的需求,在操作系统上开发数据库系统应用很像是在开发移动App一样,出现了蓬勃似得发展。由于当下Big Data依旧是非常火热的话题,在未来的一段时间内,提供底层数据管理服务的数据库,仍旧会是计算机发展比较快的领域之一。

许多人会把数据库系统和其他某些概念混淆在一起,其实数据库作为一个大的系统,就对目前市场上产品来讲,可以分好多类:

1. 关系型数据库管理系统(Relational DBMS),例如:Oracle,SQL Server, MySQL, PostgreSQL

2. 键-值 存储,例如:Redis,Memcached, DynamoDB

3. 文件存储,例如:MongoDB,CouchDB,Couchbase

4. 大数据存储系统, 例如:Cassandra,HBase,Google's Bigtable

5. 基于Hadoop的数据分析系统,例如:Hive,Spark,Impala(第四类和第五类,多多少少有些交叉。)

6. 文本查询系统, 例如:Solr, Elasticsearch.

除了上面的常见类型,还有其他很多小分支,如图形数据库,对象数据库等,这里不作为讨论的重点。 本文主要探讨第一类传统关系型数据库系统(RDBMS)。

不同类型的数据库,适用于不同的需求,他们之间有相似也有不同。作为第一类传统关系型数据系统,与其他类型数据库最明显的区别有几点:A)支持所有SQL语句,B)支持事务(Transaction)的ACID属性。 第二类和第三类就不具备的特点A和B,第四类和第五类大多不支持A和B。即使其他类别支持A或B,也是和RDBMS所支持的A,B有很大不同。对于A而言,其他类别数据库也只是支持某些SQL的子集,而不是整个SQL标准,或者说是较老的SQL标准,比如SQL92+。对于B而言,不是在Row级别支持所有事务的ACID属性,那些eventually consistency什么的,都是商业宣传词汇,其实就是no consistency。

DESTOON B2B网站管理系统
DESTOON B2B网站管理系统

DESTOON B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。

下载

这里并不是说其他类别的数据库不好,只是我们进入了一个数据库多元化的时期,不同的数据库都有自己的特点和擅长的地方,不可一概而论。比如对于Consistency来言,银行的业务就需要strong consistency,确保资金出入正确,而微博这种应用可以舍弃一些consistency来换取系统高吞吐量,用户不是非常关心能否即使(比如时间延误小于2秒)看到朋友的微博状态。

传统关系型数据库系统系统根据应用还可以大致分为两类:OLTP(Online Transaction Processing)和OLAP(Online analytical processing),其中OLTP处理并发,多线程管理等事务,OLAP用于大量数据分析,是BI(Business Intelligence)的一部分。第一类的关系型数据库系统大都包含了OLTP和OLAP的功能,属于通用型的数据库。下文也着重讨论OLTP类型的数据库。

传统关系型数据库性能分析及瓶颈

近些年有关传统数据库性能的分析,已经有很多很多。我个人比较看好惠普HP和麻省理工大学MIT联合研究出的一片文献《OLTP Through the Looking Glass, and What We Found There》。简单的讲,他们的对当代数据库进行了解刨式地分析,得出结论:传统关系通用型数据库,只有10%左右的时间是处理有效数据,剩下90%的时间都浪费在其他辅助工作上:Buffer manager,Latching,Locking,logging,Btree keys等。

\

上图这是他们跑TPC-C benchmark得出不同数据库部分的性能图标,左侧为指令的百分比,右侧为CPU cycle(即CPU执行时间)的百分比。白色部分为真正有用的数据处理,剩下的都是传统数据库不可或缺的部分,但是消耗了大量的资源。由上图所示,缓存管理和锁,门闩和日志都是传统关系型数据库实际较大的开销。

传统数据库的性能缺陷一直没有提到大家的日程上,主要还是因为在过去数据量太小的缘故。随着近10年因特网的发展,尤其是近5年移动端应用爆炸式的涌现,数据量也在井喷式的增长。在当代,谁能处理好大数据,谁能挖掘Big data的商业价值,谁就能赚到钱。不少科技公司的竞争,就是数据处理能力的竞争。这也是为什么近10年涌现出很多NoSQL的数据库和NewSQL的数据库。NoSQL发展的早些,现有很多知名的系统,例如Google的Big Table,Amazon的DynamoDB,Apache的HBase,Cassandra等。NewSQL系统出现的晚于NoSQL大概5,6年吧,现在流行的有VoltDB,NuoDB,Clustrix等。他们的共同点都是解决大数据的处理性能问题,不同点是NewSQL系统,旨在解决NoSQL不支持标准SQL语言和事务Transaction不全支持ACID属性的特点。换句话说,NewSQL的功能要比NoSQL更加全面,更加兼容传统数据。

好多人想问,为什么市面上流行的数据库竟然如此差,设计成这个样子?难道大家都错了吗?其实这个问题很简单,传统数据库开发得很早,最早可追述到上世纪七八十年代,距今至少也有30个年头了。这种数据库系统实际架构和模式,是由当时整体计算机硬件水平和理论水平而决定的。近些年硬件发展速度相当迅猛,无论是从Disk/RAM的大小到价格,还是CPU的性能和多核(Multi-core)技术等,比起30年前,都有飞跃式的发展。尽管摩尔定律这两年半导体技术发展的增长速度已经放缓,但是还在不断进步。再者就是因为,30年前数据库的应用很单一很简单,经过这么多年的发展,我们的实际的数据处理需求也在不断多样化,传统数据库也随之不断地增加不同的功能,使之越来越庞大。

新型OLTP数据库的架构

为了去除传统数据库的性能瓶颈,MIT大学的研究者,根据当前的硬件水平,完全重新设计了数据库,而不在之前的传统数据库上进行微笑更改。

当代新型数据库也来越注重分布式scale out,而传统数据库则还在提高单台机器的处理能力scale up。对于普通用户来讲,不可能像大型企业一样资金雄厚,购买价格昂贵的大型机和数据库软件。如果要对数据进行备份,做到High Avaliability的话,就需要至少再购买并运行一个副本。

新型OLTP数据库解决方案

数据库系统的更改目的 新型OLTP数据库技术
去除logging开销 使用新型logging
去除locking,latching等开销 数据分区 + 单线程执行
去除buffer manager开销 使用内存,取代磁盘读写

根据相关学者研究的结果看,去除这些重大开销后,OLTP关系型数据库Transaction的吞吐量提高了至少20倍

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

6

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

6

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

8

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

14

2026.02.27

Golang 高级特性与最佳实践:提升代码艺术
Golang 高级特性与最佳实践:提升代码艺术

本专题深入剖析 Golang 的高级特性与工程级最佳实践,涵盖并发模型、内存管理、接口设计与错误处理策略。通过真实场景与代码对比,引导从“可运行”走向“高质量”,帮助构建高性能、可扩展、易维护的优雅 Go 代码体系。

17

2026.02.27

Golang 测试与调试专题:确保代码可靠性
Golang 测试与调试专题:确保代码可靠性

本专题聚焦 Golang 的测试与调试体系,系统讲解单元测试、表驱动测试、基准测试与覆盖率分析方法,并深入剖析调试工具与常见问题定位思路。通过实践示例,引导建立可验证、可回归的工程习惯,从而持续提升代码可靠性与可维护性。

2

2026.02.27

漫蛙app官网链接入口
漫蛙app官网链接入口

漫蛙App官网提供多条稳定入口,包括 https://manwa.me、https

130

2026.02.27

deepseek在线提问
deepseek在线提问

本合集汇总了DeepSeek在线提问技巧与免登录使用入口,助你快速上手AI对话、写作、分析等功能。阅读专题下面的文章了解更多详细内容。

8

2026.02.27

AO3官网直接进入
AO3官网直接进入

AO3官网最新入口合集,汇总2026年可用官方及镜像链接,助你快速稳定访问Archive of Our Own平台。阅读专题下面的文章了解更多详细内容。

208

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 6.4万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.9万人学习

Git 教程
Git 教程

共21课时 | 3.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号