在装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
二、多模型数据库系统(MultiModel DB)
多值数据库一般多数和SQL数据库有些关系,多模型数据库(Multi-Model Database)则和NoSQL的关系更大。NoSQL概念2009年横空出世的时候,我正在和HBase互相厮杀,记得2009年完成了HBase的多Master实现。NoSQL由于没有形成标准API,路子也非常野蛮,最后形成了Graph、KV、Doc、Col等多种模型,分别对应了一些没有标准的API。先让你们高兴几年,估计再等几年,ISO就会跳出来一统天下了。于是就出现了多模型数据库,这个一般是平台厂家提供的,他们希望用一种底层设计(甚至可以是关系模型),对应上层多种实现。是不是很类似Ceph呢!
目前至少有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,但还没有跨地域设计)
五、移动/前端数据库(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 | 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 | 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 | 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 | 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 | 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 | 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.net/?cat=119
相关信息:
https://en.wikipedia.org/wiki/MultiValue
https://en.wikipedia.org/wiki/Multi-model_database
《数据库领域的10个新动向》有2个想法