数据库领域的10个新动向

在装FoundationDB的时候,感觉数据库的名字后缀有些意思,做了一个大胆的假设:一般叫xxxSQL的是SQL数据库,而一般叫xxxDB、xxxBase、xxxStore的都是NoSQL数据库。到DBEngine穷尽了数据库列表(不含个性化的商标,如GreenPlum、Vertica等)加以求证,发现规律并不那么成立。在研究这些名字的时候,注意到DBEngine并不完整,少了一些国内厂家和新产品(含开源软件),后面一并列入我知道的一些产品和开源软件,同时DBEngine中还记录了一些已经Close的无用数据库项目。

更为重要的是,发现在自己在一线拼杀的这几年间,数据库领域,特别是技术领域,发生了一些新的变化,总结为10条,记录在这里。今天正好是集团技术工作会,谨以此文向技术工作会献礼:-)

历年写了一大批数据库和大数据的文章,但是还没有全部迁移到新的博客平台,大家可以关注这个链接:分类:大数据和数据库,我会持续更新

 

一、多值数据库系统(MultiValue DB)

在关系模型之外,一直存在着一个多值数据模型(MultiValue),最早是TRW 1965年为美国军方开发的Dick Pick系统,这个系统允许一行的某个列中保存多个数据,而查询语言可以对这个多值列进行操作。这种数据库的出现扰乱了传统关系数据库,因此有人说多值数据库是下一代数据库,也有人说是前一代数据库。直到NoSQL概念横空出世,大家发现,多值数据库其实是一种NoSQL数据库,想想HBase里面的列族概念,想想文档数据库里面的多级属性,都是非常类似的。由于没有标准支持,多值数据库支持或者不支持SQL 的都有。MV数据库原则上不算新型的数据库,但是产品应用场景慢慢增加了,也有一些新产品出现。多值数据库非常适合于存储和访问1:N的关系。

目前主要的多值数据库是:jBase、U2、OpenInsight、OpenQM、Reality、Cache、Pick OS、MVNO、Zeobase、SciDB、Adabas、Model204、D3、OpenInsight、RasdaMan

image

 

二、多模型数据库系统(MultiModel DB)

多值数据库一般多数和SQL数据库有些关系,多模型数据库(Multi-Model Database)则和NoSQL的关系更大。NoSQL概念2009年横空出世的时候,我正在和HBase互相厮杀,记得2009年完成了HBase的多Master实现。NoSQL由于没有形成标准API,路子也非常野蛮,最后形成了Graph、KV、Doc、Col等多种模型,分别对应了一些没有标准的API。先让你们高兴几年,估计再等几年,ISO就会跳出来一统天下了。于是就出现了多模型数据库,这个一般是平台厂家提供的,他们希望用一种底层设计(甚至可以是关系模型),对应上层多种实现。是不是很类似Ceph呢!

image

目前至少有33种多模型数据库,包括:AmazonDynamoDB,MicrosoftAzureCosmosDB,MarkLogic,DatastaxEnterprise,OrientDB,ArangoDB,Ignite,Kdb+,ApacheDrill,OracleBerkeleyDB,Caché,Virtuoso,AmazonNeptune,AllegroGraph,MapR-DB,Stardog,CrateDB,GraphDB,GraphEngine,Sqrrl,AlaSQL,eXtremeDB,c-treeACE,Blazegraph,VelocityDB,AgensGraph,GRAKN.AI,GlobalsDB,AtosStandardCommonRepository,CortexDB,LeanXcale,OrigoDB,searchxml。真的只能说,你开心就好了。

 

三、云数据库(Cloud DB)

随着公有云的兴起,云上的数据库也从简单的DB over VM or Container演变成更为原生的Cloud DB,这其中以AWS、Google、Azure、Alibaba、IBM相对比较领先,一般这类云化数据库都提供了多租户、快速部署、利用硬件保障性能等技术(参见2011年的一篇文章:XaaS的背后:哪些IT能力适合作为集中的云计算服务?,其中指出RDS不适合Over VM,这个局面直到Aurora出现才有变化),AWS的Aurora、Alibaba的PoleDB还将数据库复制在存储层辅助实现,从而进一步提升效率。

其中,IBM的dashDB以前没有引起我的关注,最近看了一下,感觉IBM还是很有技术底蕴的,但是商业模式太慢了

 

四、全球云数据库系统(Global Cloud DB)

云化数据库中,有一种特殊的数据库,适用于全球多数据中心统一部署的数据库,其中的开创者就是Google Spanner。在Google发布Spanner之后,开源社区也出现了几个模仿者,两个能看到的是CockroachDB和NuoDB,这种数据库的特点是,支持数据在全球范围内同步,这需要和底层的云计算平台相匹配,比如AWS的Region和Zone的概念。这种数据库可以部署在公有云中,设置好数据在不同Region或者Zone的同步策略,这样,数据库应用就不需要知道底层数据库的分布情况,当成本地数据库那样使用数据即可,这种方式利用云平台的分布式特点,提升了数据可靠性。同时,目前各国政府对数据有管辖权设置,这种数据库也可以实现这种能力。

CrDB基于Facebook的RocksDB,封装了PostgreSQL的协议,除了JSON等一些特性之外(2018年支持),CrDB兼容PG的SQL语法,记得CrDB 1.0是开源的,最近一看,2.0闭源了。

目前有几种全球云数据库:Spanner、CosmosDB、CockroachDB、NuoDB、TiDB(自称是Spanner Clone,但还没有跨地域设计

image

 

五、移动/前端数据库(Mobile DB)

在应用为王、物联网高速发展的时代,数据库的开发者开始关注更为小型的数据库,用于JS或者移动开发,这个倒是给原先做小型嵌入式数据库(不仅嵌入式设备,还有和应用一起打包交付的“嵌入式”)的厂家提供了机会。

除了传统的SQLite、BerkeleyDB、HSQLDB等老牌嵌入式DB之外,目前有的例子很多:LevelDB、HFSQL、MimerSQL、FireBase、LiteDB、iBoxDB、JasDB、AlaSQL、SQLBase、ExtremeDB等一大批。此外,还有2款IoT数据库,包括HarperDB、GridDB,有空也要看看,何为IoT数据库呢?

 

六、商业化SQL Over Hadoop(Commercial SoH)

Hadoop的可伸缩性优势结合SQL之后出现了SQL Over Hadoop(SoH)大潮,直到现在也没有减弱,形成了大量的开源系统,包括Hive/Tez、SparkSQL、Impala、PrestoDB、HAWQ等。原先没有关注到商业化的SoH,发现除了国内中移软件的HugeTable、星环Inceptor之外,还真有其他几种,包括JethroData、MammothDB、EsgynDB、HAWQ++,好像南大通用的UP也与此有些关系

 

七、GPU数据库(GPU DB)

少数分析型数据库开始使用GPU等专用硬件,此前有Netezza、XtremeDB,现在则出现了SQream DB、MapD等系统。这种利用硬件加速的思路,可以在性能上超越Actian的VectorWise和IBM的BLU技术,但是要想把所有的SQL都用GPU优化,也是一项工程浩大的工作,但是可以从部分领域先行切入,比如移动内部的某几项业务:-)

 

八、RDF数据库(RDF DB)

AI在NLP领域的发展导致出现更多的RDF数据库,多数都是KV或者图数据库改造的,目前一共有12种的样子,包括Jena,Algebraix,Redland,RDF4J,RedStore,Mulgara,BrightstarDB,4store,CubicWeb,Dydra,Strabon,SparkleDB,有兴趣的同志下载研究。

 

九、时序数据库(Time Series DB)

大规模云计算和大数据系统的发展,给时序数据库(TSDB)创造了大好时机,这种数据库可以保存海量的监控数据,对于一个1000台物理机的集群来说,很容易就形成1-2万台虚拟机,如果每10秒采集一次监控数据,每条监控数据包含10个指标,则每秒就要达到1-2万QPS,这个规模不是普通数据库可以扛得住的。

目前至少有20种TSDB,包括InfluxDB,RRDtool,Graphite,OpenTSDB,Druid,Prometheus,KairosDB,RiakTS,HawkularMetrics,Blueflood,Machbase,SiriDB,Axibase,TimescaleDB,TempoIQ,Warp10,Heroic,IRONdb,Newts,SiteWhere,Yanza等,最近有团队开始关注Graphite这个数据库,后面要研究一下,没准Outperform All the Rest!!

 

十、国内数据库团队的崛起

除了传统的人大金仓(KingBase)、达梦、南大通用(GBase)、华为等数据库团队之外,阿里巴巴(Cloud DB)、浪潮(K-DB)、巨杉(Sequoiadb)、PingCap(TiDB)、中国移动苏州研发中心(BC-RDB)、星环(TransWarp)也都自主研发、代码收购或者在开源软件的基础上,推出了自己的数据库,其中浪潮、阿里巴巴、巨杉、Pingcap等数据库系统已经被DBEngine收录,虽然排名还比较靠后,但是这已经是一个巨大的进步了。其中浪潮的K-DB来自韩国的Tibero数据库源代码。此外,据我所知,一些集成商,包括亚信、思特奇也都有自己的定制化数据库。

 

不过,国内数据库团队普遍有个贪多求全的问题,一个厂家会出品大量的数据库、大数据产品,这个一方面说明开源软件多,另外一方面说明国内数据库市场竞争比较混乱。

 

 

表1:名字有SQL的关系数据库

# 数据库 厂家 特征
1 MySQL Oracle
2 PostgreSQL PostgreSQL
3 MemSQL MemSQL Mem
4 SQLite Emb
5 Azure SQL database MS Cloud
6 Big Query Google Cloud
7 Spark SQL Apache SoH
8 MS SQL Server MS
9 Azure SQL Data Warehouse MS Cloud
10 SAP SQL Anywhere SAP
11 HyperSQL HyperSQL Emb/Mem
12 mSQL Hughes Emb
13 SQLBase OpenText Emb
14 NoStop SQL HPE
15 HFSQL PC Soft Mob
16 Mimer SQL Mimer Mob
17 AlaSQL AlaSQL JS
18 Actian PSQL Actian Emb
19 WebScaleSQL Ali/FB/Google Distrib
20 SmallSQL SmallSQL Desktop
21 DaggerDB DaggerDB .NET

 

表2:名字例外的SQL数据库(xxxDB、xxxData、xxxBase)

# 数据库 厂家 特征
1 Teradata Teradata MPP
2 MariaDB MariaDB/MySQL
3 EssBase Oracle/Hyperion OLAP
4 InterBase Embarcadero
5 K-DB Inspur K1/Tibero
6 MonetDB MonetDB Col
7 EnterpriseDB EnterpriseDB/PG
8 dashDB IBM Cloud/Mem
9 CockroachDB Cockroach Labs/Rocks Scale
10 PrestoDB Facebook SoH
11 1010Data 1010Data Col
12 Altibase Altibase Mem
13 NuoDB NuoDB Scale
14 solidDB UniCOM/IBM Mem
15 InfiniDB Col
16 OpenBase OpenBase
17 TiDB PingCap NewSQL
18 ExtremeDB McObject Emb/Mem
19 FrontBase Frontbase
20 SQream DB SQream Col/GPU
21 ElevateDB Elevate Emb
22 LucidDB LUCIDDB Col
23 NexusDB Nexus/Embarcadero
24 VistaDB VistaDB Emb
25 SciDB Paradigm4 MV
26 CrateDB Crate RT
27 XtremeData XtremeData OLAP
28 EsgynDB Esgyn/HP SoH
29 ActorDB ActorDB Distrib
30 PipeLineDB Pipeline/PG Stream
31 Ali Cloud HybridDB Ali/GreenPlum MPP
32 JustOneDB JustOne MPP
33 JethroData JethroData SoH
34 MammothDB MariaDB SoH
35 DBInsight DBInsight SE
36 Sequoiadb Sequoiadb MM
37 GBase 系列 GBase
38 DM7 达梦 / PG
39 KingBase 系列 人大金仓
40 BC-RDB 系列 中移软件

 

表3:各种NoSQL数据库(xxxDB、xxxBase、xxxData)

# 数据库 厂家 特征
1 FoundationDB Apple MM
2 BerkeleyDB Oracle KV/Emb
3 MongoDB MongoDB Doc
4 LevelDB Google LV
5 DynamoDB AWS Cloud
6 CouchBase Couchbase KV/Mem
7 CouchDB Apache Doc
8 Azure Cosmos DB System MS Cloud
9 InfluxDB InfluxData tsdb
10 dBase dBase kv
11 Firebase Google Mob
12 OrientDB OrientDB MM
13 RethinkDB Linux Foundation Doc
14 Oracle NoSQL Oracle KV
15 HBase Apache KV
16 PouchDB Apache JS
17 SimpleDB AWS Cloud
18 OpenTSDB Yahoo/HBase tsdb
19 RocksDB Facebook KV
20 VoltDB VoltDB(存储过程) Mem
21 BaseX BaseX XML
22 R:Base RBase KV
23 ZODB ZODB Obj
24 ObjectDB ObjectDB Obj
25 BoltDB Ben Johnson Emb
26 ObjectivityDB Objectivity Obj
27 LiteDB LiteDB Mob
28 ScyllaDB Scylla/Cassandra KV
29 MapDB Apache Emb
30 KairosDB KairosDB tsdb
31 GraphDB OntoText RDF
32 HyperGraphDB HyperGraphDB RDF
33 BigChainDB BigChainDB
34 STSdb STS .NET
35 FlockDB Twitter Gra
36 BrightStarDB BrightStarDB RDF
37 SiaqoDB SiaqoDB Obj
38 RedStore Aelius RDF
39 FaunaDB Fauna Doc
40 4Store 4Store RDF
41 EJDB Softmotions Doc
42 GridDB Toshiba IoT
43 RaptorDB Raptor Doc
44 VelocityDB Mats Persson Obj
45 MachBase MachBase tsdb
46 WakandaDB Wakanda SAS Obj
47 DensoDB DensoDB Doc
48 NosDB NosDB Obj
49 BangDB IQLECT Emb
50 SiriDB Transceptor tsdb
51 QuasarDB QuasarDB tsdb
52 FleetDB FleetDB Doc
53 TimeScaleDB TimeScale/PG tsdb
54 UpscaleDB UpscaleDB(>LvlDB) KV
55 SenseiDB SenseiDB Doc
56 LedisDB LedisDB
57 InfinityDB Boiler Bay Java Emb
58 Graphbase Graphbase Gra
59 GlobalsDB GlobalsDB Doc/Gra
60 WhiteDB WhiteDB Mem
61 HGraphDB HGraph/HBase Gra
62 CodernityDB Codernity KV
63 iBoxDB iBox Doc/Mob
64 HarperDB HarperDB/NodeJs Doc/Iot
65 SisoDB SisoDB Doc
66 Ali Cloud Table Store Ali KV
67 BergDB BergDB KV
68 CortexDB Cortex KV
69 DjonDB DjonDB Doc
70 HyperLevelDB Hyperdex/LvlDB KV
71 JasDB JasDB KV/Mob
72 OrigoDB Robert Friberg Doc/Mem
73 SparkleDB Syssurge RDF/Mem
74 SwayDB Simer Plaha KV/Mem
75 TerarkDB TeraK/RocksDB KV/Zip
76 ToroDB 8Kdata/Mongo+PG KV
jBase Zumasys MV

 

相关文章分类:

http://www.brofive.org/?cat=119

 

相关信息:

https://en.wikipedia.org/wiki/MultiValue

https://en.wikipedia.org/wiki/Multi-model_database

https://db-engines.com/en/ranking

https://en.wikipedia.org/wiki/List_of_in-memory_databases

数据库领域的10个新动向》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注