当前位置: 首页 > 编程日记 > 正文

国产数据库年终大盘点

作者 | 马超

编辑 | 胡巍巍

出品 | CSDN(ID:CSDNnews)

去“IOE”这个概念,最早由王坚院士在刚刚加入阿里时提出,其目标是将IBM 的小型机、Oracle数据库、EMC存储设备从阿里的IT体系中去除,代之以自主研发的系统。

而随着我国IT技术栈的不断演进,去“IOE”已经由一个企业的目标,变成了整个行业的目标,也就是我国必须使信息系统数据,运行在自研系统之上,以防止数据丢失造成的一系列严重后果。

作为一名长期在金融机构工作的IT人,提起对外核心技术依赖时,就不由得想起银行业的心脏——支付系统(CNAPS),原本都是世界银行的援建产物,直到2013年底我们才用自研的二代支付系统将其取代。

回想“IOE”这些年,我国的确在一些很多IT领域取得了长足的进步,比如目前我国移动支付水平就实现了对欧美国家的反超,足以独步世界。

近日,金山办公正式登陆科创版,也标志着雷军梦圆国产Office的“英雄之路”。可以看到这种应用级别的自主掌控,对于我国IT业来说已不是难事。

而且随着国产云计算服务水平的不断发展,国外厂商的小型机和存储,已经不多见,不过IOE中的O也就是Oracle、DB2等国外厂商的数据库,还依旧在我国市场大行其道。

这也反映出,近年来我国IT的一个现象,那就是硬件集成与应用等领域强,但是基础设施突破少。

虽然国产数据库,相比前几年大火的O2O、共享经济等概念,并没有获得资本的大力追捧,但是我们欣喜地看到,还是有很多IT人在坚持此道。接下来就带大家一起来盘点一下国产数据库的发展现状。

支付宝的核心:OceanBase

OceanBase 是蚂蚁金服自研的金融级分布式关系数据库,号称每一行代码都是自主编写的。

在十年前,阿里的IT人,决定自主研发一款分布式金融级数据库,历经磨练后OceanBase已经能在普通硬件上,实现金融级高可用,并在业内首创“三地五中心”城市级故障自动无损容灾新标准,同时具备在线水平扩展能力,并且勇夺TPC的冠军。

相关阅读:

☞OceanBase 的前世今生

☞揭秘 OceanBase 勇夺 TPC 榜首的王者攻略!

☞200 行代码解读国产数据库阿里 OceanBase 的速度源头!| CSDN 博文精选

深植于场景需求混布数据库:Hubble

Hubble是天云数据研发的HTAP数据库。所谓HTAP其实就是混合了TP和AP两种模式的数据库。

坦率讲,笔者在刚开始听到一种产品,既能提供TP服务、又能提供AP服务时,感到非常惊讶。

因为,OLAP(On-Line Analytical Processing)是指联机分析技术,打个比方,OLAP就像是私人飞机服务,不计较成本但是要求响应速度,主要用于用户联机交易的处理响应。

而OLTP(on-line transaction processing),则是指联机事务处理,OLTP的最大诉求就是低成本的处理海量数据,有点像海上运输,虽然处理数据量大但是速度慢,适合于客户历史帐单查询、客户画像分析等大数据方面的应用。

以前AP应用的流程比较固定,就像一个仪表盘,只有一两个数仓的管理员在看,但现在那些原本投在大屏的可视化项目,已经全部被推送到了移动端,这也就是TP+AP的个性化数字仓库的需求。

比如一个营业厅应用有六万多人,同时在线需要至少五百个并发/秒,理财经理要在某一时刻,看到大客户的结息、净值等一系列的数据服务,且都是个性化的。

这也就意味着,目前在应用领域,有强烈的需求把AP推到TP的场景里,这两者有机结合,对于大多数人来说,还只是个想法。

不过这两个看似矛盾的目标,竟然真的被天云数据,结合到一起了。其关键技术有以下几个方面:

一是在KV数据,再加一层KV索引、以适应高并发的TP需求。

二是通过将全局事务向本地事务锁进行转换,来保证系统的分布式计算一致性。 

三是通过资源控制模块,完成TP与AP的结合使用。

SQL引擎与NoSQL存储的结合:巨杉数据库

SequoiaDB 巨杉数据库,是一款金融级分布式关系型数据库,也是一款开源产品(Github地址:https://github.com/SequoiaDB/SequoiaDB)。笔者认为SequoiaDB最大的贡献在于将标准SQL、事务与NoSQL的分布式存储相结合。

巨杉数据库使用JSON为标准存储格式,既可以描述关系型结构,能最大限度保留现有的应用资产;也可以描述非关系型结构。

这些使巨杉,可以把非结构化的文件和结构化的描述项一起存储,而不是索引+文件存储,从而实现适当降低范式维度和JOIN操作的复杂度。

而且,在分布式存储的基础上,其还添加了分布式SQL引擎,借此可以提供高并发、低延时和批量计算SQL能力以及ACID和事务支持。

其整体架构如下:

巨杉数据库在金融领域应用案例很多,相信他们SQL引擎与NoSQL存储的理念还会支撑他们越走越远。

产品线齐全的数据库:GBase和达梦

武汉达梦和天津南大通用,绝对算得上是国内数据库厂商中产品线最齐全的两家了。据笔者不完全统计,南大通用打造了GBase 8a、8t、8m、8s、8d、UP、InfiniData一体机等多款数据库软硬件产品,而达梦也不遑多让他们产品线包括了达梦7、8、ETL、TDD、HS、MPP等等。下面挑重点向大家介绍。

GBase 8a:就是我们日常所熟知的用于大数据分析的系统库。

GBase 8a能够实现大数据存储管理和高效分析,据测试,它能在PB级数据规模下,实现数据查询的秒级响应;实现千亿级文本条目全文检索的秒级响应;并且提供全过程可视化的数据查询分析及展现工具。

GBase 8t:一款对标Oracle的数据库。据称,其OLTP事务处理性能,已达到Oracle数据库的水平,能够在90%以上的场景中替代Oracle。

GBase 8t的关键技术有如下几方面:

一、事务机制

完全支持传统主流事务数据库的事务机制锁技术,有效支撑高度并发的事务密集型应用场景。

二、存储技术

GBase 8t产品的存储有物理的和逻辑的两种结构。物理结构中包含数据卷(Chunk)、数据段(Extent)和数据页(Page);逻辑结构包含数据空间(DbSpace)和表空间(TableSpace)。

三、索引技术

GBase 8t产品提供了索引技术来提升数据查询操作的性能。GBase 8t产品支持的索引包括B-Tree索引、R-Tree索引、函数索引和用户自定义索引。

四、高可用技术

GBase 8t产品提供了高可用集群技术,使用这些技术可以满足数据复制、共享存储、同城备份、远程容灾和两地三中心的整体灾备解决方案的要求。

当前,Gbase和达梦的产品均已经在金融、电信、电力等多个行业得到应用与验证了,使用场景非常广泛可谓我国国产数据库的双子星座了。

物联网时代的数据库TDengine、CTSDB

随着互联网的高速发展、大数据的迅速膨胀和物联网的飞速崛起,我们发现生活和工作中的大部分数据渐渐和时间产生了关联。

比如,微信运动的实时步数、股票每天的收盘价格、共享单车的设备状态等等。为了存储这些与时间相关的数据使用传统数据库其实问题很多。

比如,传统关系型数据库,在存储海量的时序数据场景下,存在的问题:

1.存储成本大:对于时序数据压缩不佳,需占用大量机器资源;

2.维护成本高:单机系统,需要在上层人工的分库分表,维护成本高;

3.写入吞吐低:单机写入吞吐低,很难满足时序数据千万级的写入压力;

而Hadoop等NoSQL数据库也有问题:

1.数据延迟高:离线批处理系统,数据从产生到可分析,耗时数小时、甚至天级;

2.查询性能差:不能很好的利用索引,依赖MapReduce任务,查询耗时一般在分钟级。

让你以在物联网时代需要与之特点相应的数据库产品来提供服务,目前我国在时序数据库方面主要有TDengine、CTSDB两款产品。

这里主要带大家了解一下腾讯时序数据库CTSDB:CTSDB(Cloud Time Series Database)是一种分布式、高性能、多分片、自均衡的时序数据库,针对时序数据的高并发写入、存在明显的冷热数据、IoT用户场景等做了大量优化,同时也支持各行业的日志解析和存储,其架构如下图所示。

在CTSDB和磁盘之间有一层FileSystem Cache的系统缓存,以使得能够更快地处理搜索请求。

作为腾讯唯一的时序数据库,CTSDB支撑了腾讯内部20多个核心业务(微信彩票、财付通、云监控、云数据库、云负载等)。

其中,云监控系统的记录了腾讯内部各种软硬件系统的实时状态,CTSDB承载了它所有的数据存储,在每秒千万级数据点的写入压力、每天20TB+数据量的写入场景下稳定运行,足以证明CTSDB可以稳定支撑物联网的海量数据场景。

互通有无,共同成长

除了上述这些数据库之外,我国还有不少基于MySQL、PosgreSQL等开源数据库内核研发的产品。

比如腾讯基于MySQL的TDSQL、华为基于PosgreSQL的GaussDB、中兴同样基于MySQL的GoldenDB,他们也都得到了相当广泛的应用.

尤其是承载着微众银行和威富通等多个重量级金融应用的TDSQL,凭借远超开源版MySQL的性能,真正做到了青出于蓝而胜于蓝。

可以说,我国自研数据库在各个方面,都已取得极大进步,这里也呼吁,国内数据库厂商能尽量将社区版本开源,与业界互通有无,共同成长。

(*本文为AI科技大本营转载文章,转载请联系原作者)

推荐阅读

  • 数学学渣必备!拍照上传,分步求解,微软解题神器拯救你

  • 华为诺亚方舟开源预训练模型“哪吒”,4项任务均达到SOTA

  • 蚂蚁金服提新概率图模型GLN,正确率提升8.2%,具备可解释性 | NeurIPS 2019

  • 赠书 | 熵的实际应用,赌场和金融圈最著名的一个数学公式

  • 那些打着AI万金油旗号的产品欺骗大众,如何识别?

  • 扛住100亿次请求——如何做一个“有把握”的春晚红包系统

  • 「刷新 CTO」微软与 CSDN 的 CTO 转型思想汇

  • 想开发智能合约?先 get 下这个适合所有人的模型驱动法(文末有福利)

  • 你点的每个“在看”,我都认真当成了AI

相关文章:

解密FFmpeg播放track mode控制

上一篇文章(http://www.cnblogs.com/yangdanny/p/4421130.html)我们解决了在FFmpeg下如何处理H264和AAC的扩展数据,根据解出的NALU长度恢复了H264的起始码和AAC的ADTS头,这样一般来说播放是没有问题。本篇文章来谈谈如何实现基于FFmpeg的track mode控制&…

UIButton防止按钮和手势的暴力点击

首先理解下几个概念 1、IMP:它是指向一个方法具体实现的指针,每一个方法都有一个对应的IMP,当你发起一个消息之后,最终它会执行的那段代码,就是由IMP这个函数指针指向了这个方法实现的 2、SEL:方法名称的描…

使用Windows7上的VS Code打开远程机Ubuntu上的文件操作步骤

之前在https://blog.csdn.net/fengbingchun/article/details/118991855 中介绍过在Windows10通过VS Code打开Ubuntu 16.04上的文件或文件夹的操作步骤。Windows7上的操作与Windows10有所不同,这里记录下。 Visual Studio Code Remote - SSH扩展允许你在任何远程机器…

微众银行殷磊:AI+卫星,从上帝视角洞察资产管理|BDTC 2019

出品 | AI科技大本营(ID:rgznai100)12月5日-7日,2019中国大数据技术大会(BDTC)于北京隆重举办,大会已成功举办十二届,是大数据领域极具影响力的行业盛会。本届大会汇聚了学术界、企业界上千位知…

【二分答案】【最短路】bzoj1614 [Usaco2007 Jan]Telephone Lines架设电话线

对于二分出的答案x而言&#xff0c;验证答案等价于将所有边权>x的边赋成1&#xff0c;否则赋成0&#xff0c;然后判断从1到n的最短路是否<K。 #include<cstdio> #include<cstring> #include<queue> using namespace std; #define N 1001 #define M 100…

Python3中装饰器@typing.overload的使用

typing.py的源码在&#xff1a;https://github.com/python/cpython/blob/main/Lib/typing.py 。此模块为类型提示(Type Hints)提供运行时支持。这里介绍下typing.overload的使用&#xff0c;从python 3.5版本开始将Typing作为标准库引入。 python3中增加了Function Annotation(…

19年NAACL纪实:自然语言处理的实用性见解 | CSDN博文精选

作者 | Nikita Zhiltsov翻译 | 王威力校对 | 李海明本文为你概述处理不同NLP问题时的具有卓越性能的方法、技术和框架等。计算语言&#xff1a;人类语言技术学会北美分会2019年年会&#xff08;North American Chapter of the Association for Computational Linguistics: Huma…

高并发场景下数据库的常见问题及解决方案

一、分库分表 &#xff08;1&#xff09;为什么要分库分表 随着系统访问量的增加&#xff0c;QPS越来越高&#xff0c;数据库磁盘容量不断增加&#xff0c;一般数据库服务器的QPS在800-1200的时候性能最佳&#xff0c;当超过2000的时候sql就会变得很慢并且很容易被请求打死&a…

典型用户 persona

persona 典型用户 1、姓名&#xff1a;王涛 2、年龄&#xff1a;22 3、收入&#xff1a;基本无收入 4、代表用户在市场上的比例和重要性&#xff1a;王涛为铁道学生。本软件的用户主要是学生和老师&#xff0c;尤其是广大的铁大学子&#xff0c;所以此典型用户的重要性不言而喻…

PyTorch中nn.Module类简介

torch.nn.Module类是所有神经网络模块(modules)的基类&#xff0c;它的实现在torch/nn/modules/module.py中。你的模型也应该继承这个类&#xff0c;主要重载__init__、forward和extra_repr函数。Modules还可以包含其它Modules&#xff0c;从而可以将它们嵌套在树结构中。 只要…

什么是三层交换机、网关、DNS、子网掩码、MAC地址

一、什么是vlan? 二、单臂路由与三层交换机 三、什么是网关 一、什么是网关 二、如何来理解网关 三、网关的ip地址 四、网关是如何实现通信&#xff1f; 五、什么是默认网关&#xff1f; 四、什么是DNS 五、MAC地址 六、子网掩码 很多朋友多次问到什么是网关、dns、子网掩码&…

20行代码发一篇NeurIPS:梯度共享已经不安全了

整理 | 夕颜&#xff0c;Jane出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;【导读】12 月 8 日-14 日&#xff0c;NeurIPS 2019 在加拿大温哥华举行&#xff0c;和往常一样&#xff0c;今年大会吸引了数万名专家参会&#xff0c;并展示了计算机领域的最新进展。其中…

关于页面打印window.print()的样式问题

当我们打印网页的时候。有时候会发现。打印出来的。跟网页上看到的样式的差别有点大。这其中可能有的问题是。样式问题。 当调用打印(window.print())方法时。打印机会在网页的样式中查找 media print{}的样式&#xff0c;并适应到要打印的网页中。 所以 如果要打印的页面符合看…

Python3中参数*args和**kwargs介绍

在Python中&#xff0c;我们可以使用两种特殊符号将可变数量的参数传递给函数&#xff1a;*args和**kwargs。你可以使用任何单词代替args和kwargs&#xff0c;但通常做法是使用args和kwargs。 *args允许函数接受任意数量的位置参数(positional arguments)。 **kwargs收集所有未…

4大主流CPU处理器技术架构,不知道就out了!

作者 | 王艺威责编 | 阿秃RISC&#xff08;精简指令集计算机&#xff09;是一种执行较少类型计算机指令的微处理器&#xff0c;起源于80年代的MIPS主机&#xff08;即RISC机&#xff09;&#xff0c;RISC机中采用的微处理器统称RISC处理器。这样一来&#xff0c;它能够以更快的…

grunt-connect-proxy解决开发时跨域问题

最近的项目中前后端是完全分离开发的&#xff0c;前端用grunt管理项目。这样就会导致一个问题&#xff1a;开发时前端调用后台的接口时因为不在一个服务器&#xff0c;所以会出现跨域问题。但是也不能用JSONP或CROS方式实现真正的跨域&#xff0c;因为项目发布时其实是在同一个…

混合推荐系统就是多个推荐系统“大杂烩”吗?

作者丨gongyouliu编辑丨zandy【导读】在本篇文章中&#xff0c;我们会介绍混合推荐系统(Hybrid Recommender Systems)&#xff0c;就是利用多种推荐算法配合起来做推荐&#xff0c;期望避免单个推荐算法存在的问题&#xff0c;最终获得比单个算法更好的推荐效果。本篇文章我们从…

Python3中collections.OrderedDict介绍

Python3中的collections模块实现了特定目标的容器&#xff0c;以提供Python标准内建容器dict、list、set和tuple的替代选择&#xff0c;包括namedtuple、deque、ChainMap、Counter、OrderedDict、defaultdict、UserDict、UserList、UserString。这里介绍下OrderedDict&#xff…

汗!雅虎中国个人空间

今天发现雅虎中国有了个人空间&#xff0c;偷偷试了下&#xff0c;让人失望到极点&#xff0c;几乎没有什么特点&#xff0c;和MSN很相似&#xff0c;空间相册放着好好的Flickr不用&#xff0c;偏偏弄了个很垃圾的相册&#xff0c;还有整合能力也不行。都不知道del.icio.us和Fl…

关于v$process与v$session中process的理解

v$session有个process字段&#xff0c;V$PROCESS有个SPID字段&#xff0c;这两个字段是不是一个意思呢&#xff1f;是不是都代表会话的操作系统进程呢&#xff1f;官方文档上的解释&#xff1a;SPID VARCHAR2(12) Operating system process identifierPROCESS VARCHAR2…

Python3中lambda表达式介绍

Python3中的lambda表达式或lambda函数是匿名函数(anonymous function)&#xff0c;意味着该函数没有名称。def关键字用于在Python3中创建一个普通函数&#xff0c;类似地&#xff0c;lambda关键字用于在Python3中创建匿名函数。 Python3 lambda函数语法&#xff1a; lambda pa…

6大理由,告诉你为什么这个大会你不能错过! | 文末有福利

作者 | Carol出品 | 区块链大本营&#xff08;blockchain_camp&#xff09;* 文末可参与活动赢赠票&#xff01;如果说有一个什么领域&#xff0c;能让中科院、华为、腾讯、京东、360、微众银行的大咖汇聚在一起&#xff0c;那一定是——区块链。悄咪咪地给大家剧透一下&#x…

魔与道的反复较量 反垃圾邮件技术

反垃圾邮件武器库不同的反垃圾邮件产品采用的技术有所不同&#xff0c;但总体来说&#xff0c;不外乎以下几种技术&#xff0c;其中&#xff0c;针对垃圾邮件的核心技术有贝叶斯智能分析、垃圾邮件评分、垃圾邮件指纹识别。转载于:https://blog.51cto.com/aonlin/17074

在Centos 7下编译openwrt+njit-client

首先要有一个centos7 step1:更新系统的源&#xff1a; yum install update 但是发现官方的源好像被墙了&#xff0c;于是自己又去换源&#xff0c;找163的源换。具体的操作最后的链接。 可是换完源之后发现163的源只支持到centos6、、、、、、但是就泪崩了。于是又把源换了回来…

Python3中内置函数callable介绍

Python3中的内置函数callable接受一个对象参数&#xff0c;如果此对象参数看起来可调用&#xff0c;则callable函数返回True&#xff0c;否则返回False。如果返回True&#xff0c;则调用仍有可能失败&#xff1b;但如果返回False&#xff0c;则调用对象将永远不会成功。 类是可…

户外广告新创意

近来&#xff0c;各大城市纷纷加大了对户外广告的监管力度&#xff0c;部分城市甚至停止审批户外广告牌。这让户外广告运营者和广告发布商甚为头疼。 长期以来&#xff0c;户外广告牌扮演着截然相反的“双重角色”&#xff0c;在户外广告运营者和广告发布商眼中&#xff0c;“寸…

百度重新定义「智能屏」,瞄准10后

加入「公开课」交流群&#xff0c;获取更多学习资料、课程及热招岗位等信息记者 | 阿司匹林作为中国智能音箱主力推手中的一员&#xff0c;百度从 2017 年已经开始布局。根据数据机构Strategy Analytics发布智能音箱市场报告&#xff0c;2019年第三季度&#xff0c;百度旗下人工…

jQuery最简单的表单提交方式

第一步&#xff1a;绑定事件 常用的与ajax相关的事件参考如下&#xff1a; &#xff11;、$(selector).click(function) &#xff12;、$(selector).change(function) &#xff13;、$(selector).keyup(function) &#xff14;、$(selector).submit(function) 提交表单前&#…

Python3中typing模块介绍

typing.py的源码在&#xff1a;https://github.com/python/cpython/blob/main/Lib/typing.py。此模块为类型提示(Type Hints)提供运行时支持(This module provides runtime support for type hints)。从python 3.5版本开始将Typing作为标准库引入。 python3中增加了Function An…

显示所有文件和文件夹无论如何 无法被设置

问题&#xff1a;XP系统选显示所有文件和文件夹确定后没有任何反应再次打开文件夹选项里面仍是不显示隐藏的文件和文件夹 答案&#xff1a;在记事本粘贴下面文字&#xff0c;另存为所有文件&#xff0c; .reg 格式。成功的话图标变为绿色碎方块。在双击它。 Windows Registry E…