数据简化社区2018年全球数据库总结及18种主流数据库介绍(公号回复“数据库2018”下载典藏版PDF报告)

数据简化社区2018年全球数据库总结及18种主流数据库介绍(公号回复“数据库2018”下载典藏版PDF报告)

秦陇纪 数据简化DataSimp 今天

数据简化DataSimp导读:Google搜索量最大的DB-Engines数据库排名,介绍前几名数据库特点、云AI区块链等数据库服务;展望2018年数据库发展趋势,本文合计40k字详读约需36分钟。最近群里说国内可以重新使用谷歌搜索、谷歌学术了,马上梳理全球搜索量最大数据库排名,梳理成本报告。不必再看度娘歪曲正常搜索结果,枉顾事实和知识,给钱就排前,连医院都敢竞价排名的非正常、只认钱、不负责、无底线、纯私有公司做派的脸色搜寻信息了。十个黑饼合起来拼了一个大饼,貌似做得很大,不过,即使一百个、一万个黑的,能拼出一个白的吗?虽然不是亲儿子,至少谷歌有底线,尊重事实和版权,不会输入“雪白”给你推女人大腿、输入Indentify-H出一堆垃圾信息,TMD什么玩意儿!希望国人懂得科学技术怎么来的、给谁用的、为了什么搞科技和制度,干事业是为了谁。

数据简化社区2018年全球数据库总结及18种主流数据库介绍(40619字)目录

A 2018年全球数据库总结及各数据库特点(26367字)

1. 全球2018年度数据库排名

2.NoSQL数据库常见系统特点

3. SQL数据库特点及主流产品

4. 其他模式数据库产品及其特点

B 2018年云AI区块链等领域数据库发展趋势(13637字)

5. 全球云数据库服务及常见产品

6.AI/NewSQL/时序/区块链/IOT等DB发展

7 数据库技术已明确的发展趋势

8. 全球数据库2018发展趋势展望

参考文献(2531字)Appx(626字).数据简化DataSimp社区简介

 

2018年全球数据库总结及云AI区块链等领域数据库发展趋势

文|秦陇纪,来源:数据简化社区,2018-08-11周六-16周四

本报告分AB两部分(共8章38节),宏观介绍2013年到2018年三季度Google搜索量最大的DB-Engines数据库排名,前几名并18种代表性数据库的常识、特色、动态和优缺点;全球云计算AI时序物联网区块链等新场景数据库服务;展望截止2018年以来的18个数据库发展趋势。

 

A2018年全球数据库总结及各数据库特点(26367)

Google搜索量最大、数据库社区认可度最高的DB-Engines全球数据库排名DB-Engines ranking,是按流行度人气排名,覆盖340多种数据库管理系统database management systems。排名标准包括搜索数据库引擎结果的数量,如:数据库的系统名称、Google趋势、StackOverflow讨论、所提系统的工作提供机会、LinkedIn等专业网络中的个人资料的数量、社交网络中的提及,如推特。该排名每月更新一次,在社区内得到广泛认可。通过对特定数据库特征(如数据库模型database model或许可证类型type of license)进行分组,定期发布的统计数据揭示了战略声明strategicstatements中使用的历史趋势。

DB-EnginesDBMS门户2012年创建,由奥地利咨询公司SolidIT维护。根据DB-Engines排名,授予一年内获得最多人气的数据库系统一个年度奖项,分别是:2013年MongoDB,2014年MongoDB,2015年Oracle甲骨文,2016年Microsoft SQL Server,2017年PostgreSQL(2018年1月2日发布)。

1. 全球2018年度数据库排名

2018年最流行的数据库前十名是:1.Oracle2. MySQL3.Microsoft SQL Server4. PostgreSQL5.MongoDB6.DB27.Redis8.Elasticsearch9.Microsoft Access10.CassandraDB-Engines排名和Statista排名前十名相同,仅Access次序略有不同,也类似于往年。

1.1 20188月份前30数据库引擎排名

图1 DB-Engines 2018-08数据库前30名列表[2]

2018年8月的DB-Engines排名前30名列表如上图。[1] 其排名在数据库系统业界权威性很高。本次用6方面统计数据给出综合排名:

Ø  数据库名称被搜索数量(通过Google、Bing、Yandex搜索引擎统计)

Ø  常规兴趣关注度(通过GoogleTrends频度统计)

Ø  技术讨论频度(通过StackOverflow、DBAStack Exchange问题和兴趣用户数统计)

Ø  提到数据库的招聘职位数(通过Indeed、Simply Hired统计)

Ø  专业网站里提到数据库的档案数(通过LinkedIn、Upwork统计)

Ø  社交信息(通过Twitter提到数据库的推文统计)

DB-Engines全球数据库排名不是测量系统的实际使用或安装数量,而是用相当模糊的概念“流行度popularity”,可能与用户数量相对应,也可能不相对应。此外,系统的质量quality和功能features对排名没有直接影响。[2] DB-Engines排名只反映全球流行程度,不能反映出系统技术特性、产品营收情况,也不代表国内流行度排名(他们统计时Google和Twitter在中国都不能用)。该排名是一种技术外部标准为基础的间接排名,侧面反映系统应用情况为主的。

从超过22,500个来源做统计和研究的统计门户Statista的“技术与电信>软件>2018全球最受欢迎的数据库管理系统”栏目文章2018年2月全球最受欢迎的数据库管理系统排名(Ranking of the most popular database managementsystems worldwide, as of February 2018),如下图。[3]

图2 2018年2月全球最受欢迎的数据库管理系统排名[3]

该Statista统计数据显示了截至2018年2月十大数据库管理系统(DBMSs)受欢迎度排名,前三名最受欢迎数据库管理系统均比后三名DBMS规模约大三倍。根据源标准source's criteria,甲骨文Oracle是最受欢迎的系统,排名分数为1,303。从排名来看OracleMySQLSQL Server三大老牌数据库是遥遥领先,呈三足鼎立局面。PostgreSQL、MongoDB比较稳的站在前五,得分也不相上下,两家一直在争夺老四的位置。曾经的数据库领导者DB2近几年发展乏力、持续下滑,互联网行业及中小企业IT里鲜见DB2身影,金融等领域也受到非常大的挑战,估计第六还要下滑。MongoDB、Redis、Elasticsearch、Cassandra、Neo4j等在各自领域继续取得领导地位。

图3 2013年-2018年十五大主流数据库排名趋势[4]

上图是DB-Engines排名的2013年-2018年十五大主流数据库排名趋势图,总体来说MySQL、SQLServer、PostgreSQL、MongoDB、Redis、Redis、Elasticsearch是市场赢家,在自家地盘都发展得非常不错;Oracle、DB2、Access、Sybase也维持了历史活跃度,整个数据库市场在壮大。[4]

1.2 DB-Engines排名的343种数据库分析

在DB-Engines排名统计的343种数据库中,有173种商业数据库和170种开源数据库,分别占比52.5%和47.5%。[5]其中,排名前五位的商业数据库系统commercialsystems分别是:

1.Oracle(得分1312总排名1)

2.Microsoft SQL Server(得分1073总排名3)

3.DB2(得分182总排名6)

4.Microsoft Access129总排名9)

5.Teradata77总排名12)

排名前五位的开源数据库系统open source systems分别是:

1.MySQL(得分1207总排名2)

2.PostgreSQL(得分417总排名4)

3.MongoDB(得分351总排名5)

4.Redis(得分139总排名7)

5.Elasticsearch(得分138总排名8)

图4 2018年数据库模型在商业授权和开源数据库的流行度递减趋势[5]

此图表是DB-Engines2018年8月按数据库模型细分的商业授权和开源数据库流行度递减趋势,表明开源工具的普及很大程度上取决于他们的数据库模型database model。开源数据库没有完全打败商业数据库的势头,未来会长期激烈竞争,目前商业数据库主要是Oracle、SQL Server在支撑。

图5 按数据库类型的市场百分比[6]

DB-Engines列出343种不同数据库管理系统,根据数据库模型进行分类,例如关系数据库管理系统(Relational DBMS)、键值存储(Key-value stores)、文档存储(Document stores) 、事件存储(Event stores)、图数据库管理系统(Graph DBMS)、时间序列数据库管理系统(Time Series DBMS)、资源描述框架存储(RDF stores)、面向对象的数据库管理系统(Object oriented DBMS)、搜索引擎(Search engines)、宽列存储(Wide column stores)、多值数据库管理系统(Multivalue DBMS)、原生XML数据库管理系统(Native XML DBMS)、内容存储(Content stores)、活动存储(Event Stores)、导航数据库管理系统(Navigational DBMS)等。上面的饼图显示每个类别中的系统数,一些系统属于多个类别。[6]下面的图表显示了每个类别的受欢迎程度。它是根据每个类别的所有单个系统流行度(即排名分数)来计算的。所有排名分数的总和为100%。[7]

图6 按数据库类型的市场百分比[7]

数据库产品竞争关系及客户流向示意图如下。

图7数据库产品竞争关系及客户流向

1.3 全部343种系统DB-Engines排名

下表是DB-Engines排名完整版[8],注意这是8月发布的,排名每月更新一次。

表1 2018年8月DB-Engines排名完整版[8]

343  systems in ranking, August 2018

Rank

DBMS

Database Model

Score

Aug

2018

Jul

2018

Aug

2017

Aug

2018

Jul

2018

Aug

2017

1.

1.

1.

Oracle  

Relational  DBMS

1312.02

+34.24

-55.85

2.

2.

2.

MySQL

Relational  DBMS

1206.81

+10.74

-133.49

3.

3.

3.

Microsoft SQL Server

Relational  DBMS

1072.65

+19.24

-152.82

4.

4.

4.

PostgreSQL  

Relational  DBMS

417.50

+11.69

+47.74

5.

5.

5.

MongoDB  

Document store

350.98

+0.65

+20.48

6.

6.

6.

DB2

Relational  DBMS

181.84

-4.36

-15.62

7.

7.

9.

Redis

Key-value store

138.58

-1.34

+16.68

8.

8.

10.

Elasticsearch  

Search engine

138.12

+1.90

+20.47

9.

9.

7.

Microsoft Access

Relational  DBMS

129.10

-3.48

+2.07

10.

10.

8.

Cassandra  

Wide column store

119.58

-1.48

-7.14

11.

11.

11.

SQLite  

Relational  DBMS

113.73

-1.55

+2.88

12.

12.

12.

Teradata  

Relational  DBMS

77.41

-0.82

-1.83

13.

13.

16.

Splunk

Search engine

70.49

+1.26

+9.03

14.

14.

18.

MariaDB  

Relational  DBMS

68.29

+0.78

+13.60

15.

16.

13.

Solr

Search engine

61.90

+0.38

-5.06

16.

15.

14.

SAP Adaptive Server

Relational  DBMS

60.44

-1.68

-6.48

17.

17.

15.

HBase

Wide column store

58.80

-1.97

-4.72

18.

18.

20.

Hive

Relational  DBMS

57.94

+0.32

+10.64

19.

19.

17.

FileMaker

Relational  DBMS

56.05

-0.33

-3.60

20.

20.

19.

SAP  HANA

Relational  DBMS

51.93

+0.33

+3.96

21.

21.

22.

Amazon DynamoDB

Multi-model

51.66

+2.03

+14.04

22.

22.

21.

Neo4j

Graph  DBMS

40.92

-0.95

+2.92

23.

24.

23.

Couchbase  

Document store

32.96

-0.12

-0.01

24.

23.

24.

Memcached

Key-value store

32.91

-0.96

+2.95

25.

25.

26.

Microsoft Azure SQL Database

Relational  DBMS

26.10

-0.74

+4.19

26.

26.

25.

Informix

Relational  DBMS

25.39

-1.20

-2.04

27.

28.

30.

Firebird

Relational  DBMS

20.29

-0.37

+2.22

28.

27.

27.

Vertica  

Relational  DBMS

20.04

-0.78

-1.77

29.

30.

39.

Microsoft Azure Cosmos DB

Multi-model

19.52

+0.07

+10.10

30.

29.

28.

CouchDB

Document store

18.44

-1.06

-2.90

31.

31.

29.

Netezza

Relational  DBMS

16.34

-0.57

-3.24

32.

32.

32.

Amazon Redshift

Relational  DBMS

15.18

+0.46

+2.35

33.

33.

34.

Google BigQuery

Relational  DBMS

14.41

+1.07

+2.60

34.

34.

31.

Impala

Relational  DBMS

13.50

+0.21

+0.44

35.

35.

37.

Spark  SQL

Relational  DBMS

12.80

+0.08

+2.03

36.

36.

41.

InfluxDB  

Time Series DBMS

11.57

-0.13

+3.47

37.

37.

33.

MarkLogic

Multi-model

11.21

-0.10

-1.29

38.

38.

35.

Greenplum

Relational  DBMS

10.38

-0.42

-1.03

39.

39.

38.

dBASE

Relational  DBMS

10.14

-0.65

-0.04

40.

41.

40.

Hazelcast

Key-value store

8.60

-0.17

-0.14

41.

40.

36.

Oracle Essbase

Relational  DBMS

8.07

-1.06

-3.28

42.

42.

54.

Firebase Realtime Database

Document store

7.51

-0.03

+3.00

43.

43.

 

Datastax Enterprise

Multi-model

7.30

-0.06

 

44.

45.

45.

Sphinx

Search engine

7.03

+0.23

+0.88

45.

46.

44.

Ehcache

Key-value store

6.54

+0.12

-0.39

46.

44.

 

Microsoft Azure SQL Data  Warehouse

Relational  DBMS

6.35

-0.74

 

47.

47.

43.

Interbase

Relational  DBMS

5.92

-0.40

-1.17

48.

49.

59.

Realm

Relational  DBMS

5.73

+0.15

+1.70

49.

48.

42.

Riak  KV

Key-value store

5.30

-0.98

-1.96

50.

51.

49.

H2

Relational  DBMS

5.07

-0.02

+0.05

51.

53.

62.

Amazon  Aurora

Relational  DBMS

4.98

+0.32

+1.42

52.

50.

46.

OrientDB  

Multi-model

4.91

-0.48

-0.76

53.

52.

47.

HyperSQL

Relational  DBMS

4.50

-0.28

-1.00

54.

56.

64.

Microsoft Azure Search

Search engine

4.45

+0.05

+1.16

55.

54.

52.

Ingres

Relational  DBMS

4.39

-0.26

-0.42

56.

58.

53.

SAP SQL Anywhere

Relational  DBMS

4.18

-0.15

-0.46

57.

55.

56.

Aerospike

Key-value store

4.07

-0.34

-0.30

58.

60.

51.

RethinkDB

Document store

4.01

-0.13

-0.87

59.

57.

55.

Derby

Relational  DBMS

3.99

-0.39

-0.50

60.

61.

60.

Jackrabbit

Content store

3.97

-0.03

+0.01

61.

59.

50.

SAP  IQ

Relational  DBMS

3.94

-0.22

-1.03

62.

62.

61.

Accumulo

Wide column store

3.78

-0.06

+0.12

63.

70.

101.

Kdb+  

Multi-model

3.51

+0.29

+1.85

64.

66.

81.

Ignite

Multi-model

3.45

-0.02

+0.86

65.

65.

68.

OpenEdge

Relational  DBMS

3.42

-0.06

+0.33

66.

64.

80.

Algolia

Search engine

3.38

-0.19

+0.77

67.

67.

74.

ArangoDB

Multi-model

3.34

-0.11

+0.42

68.

68.

63.

Google Cloud Datastore

Document store

3.32

-0.05

-0.17

69.

63.

57.

Cloudant

Document store

3.28

-0.37

-1.03

70.

69.

73.

Microsoft Azure Table Storage

Wide column store

3.03

-0.31

+0.07

71.

72.

58.

Adabas

Multivalue DBMS

2.95

-0.11

-1.12

72.

73.

70.

MaxDB

Relational  DBMS

2.67

-0.29

-0.37

73.

76.

76.

Google Search Appliance

Search engine

2.64

-0.04

-0.25

74.

71.

65.

RavenDB  

Document store

2.60

-0.50

-0.67

75.

80.

88.

Graphite

Time Series DBMS

2.60

+0.04

+0.30

76.

74.

67.

Apache  Drill

Multi-model

2.53

-0.27

-0.68

77.

77.

69.

RRDtool

Time Series DBMS

2.47

-0.18

-0.59

78.

78.

66.

MemSQL  

Relational  DBMS

2.47

-0.15

-0.79

79.

82.

93.

Jena

RDF  store

2.45

+0.01

+0.27

80.

81.

71.

PouchDB

Document store

2.34

-0.13

-0.64

81.

75.

72.

UniData,UniVerse

Multivalue DBMS

2.33

-0.39

-0.64

82.

83.

89.

Amazon CloudSearch

Search engine

2.32

-0.06

+0.02

83.

79.

79.

Caché

Multi-model

2.26

-0.35

-0.45

84.

87.

84.

SAP Advantage Database Server

Relational  DBMS

2.26

-0.07

-0.31

85.

91.

 

Google Cloud Firestore

Document store

2.22

+0.09

 

86.

84.

91.

LevelDB

Key-value store

2.22

-0.16

+0.03

87.

90.

87.

4D

Relational  DBMS

2.20

+0.01

-0.10

88.

88.

83.

Infinispan

Key-value store

2.15

-0.08

-0.42

89.

93.

95.

Virtuoso

Multi-model

2.05

+0.06

+0.07

90.

86.

75.

Oracle Berkeley DB

Multi-model

2.04

-0.31

-0.86

91.

85.

77.

Oracle  NoSQL

Key-value store

1.92

-0.44

-0.95

92.

89.

97.

MapD

Relational  DBMS

1.85

-0.36

-0.02

93.

94.

92.

Amazon SimpleDB

Key-value store

1.81

-0.11

-0.37

94.

92.

78.

Oracle Coherence

Key-value store

1.81

-0.31

-0.97

95.

95.

85.

TimesTen  

Relational  DBMS

1.68

-0.24

-0.87

96.

96.

94.

Percona Server for MySQL

Relational  DBMS

1.67

-0.14

-0.39

97.

97.

103.

mSQL

Relational  DBMS

1.65

-0.16

+0.17

98.

98.

90.

CloudKit

Document store

1.58

-0.21

-0.62

99.

103.

163.

Prometheus

Time Series DBMS

1.52

+0.13

+0.92

100.

100.

98.

Datomic

Relational  DBMS

1.51

-0.09

-0.36

101.RocksDB

102.OpenTSDB

103.Teradata  Aster

104.IBM dashDB

105.VoltDB

106.Red Brick

107.IMS

108.ClickHouse

109.Google  Cloud Spanner

110.MonetDB

111.Versant  Object Database

112.Db4o

113.Druid

114.Tibero

115.CockroachDB

116.EXASOL

117.PrestoDB

118.Datameer

119.GridGain

120.EnterpriseDB

121.jBASE

122.ObjectStore

123.Geode

124.Giraph

125.Empress

126.Snowflake

127.Oracle Rdb

128.SQLBase

129.Matisse

130.Mnesia

131.BaseX

132.FoundationDB

133.R:BASE

134.Google  Cloud Bigtable

135.Infobright

136.DataEase

137.XAP

138.Amazon  Neptune

139.NonStop SQL

140.HAWQ

141.Altibase

142.NuoDB

143.ScyllaDB

144.Model 204

145.GT.M

146.ScaleArc

147.Cubrid

148.eXist-db

149.Datacom/DB

150.Actian Vector

151.Kognitio

152.IDMS

153.MapR-DB

154.D3

155.1010data

156.NCache

157.AllegroGraph

158.GraphDB

159.solidDB

160.Tarantool

161.Event Store

162.DBISAM

163.JanusGraph

164.ZODB

165.TiDB

166.Stardog

167.HFSQL

168.InfiniDB

169.GemStone/S

170.webMethods  Tamino

171.WiredTiger

172.OpenInsight

173.WebSphere  eXtreme Scale

174.SciDB

175.KairosDB

176.OpenBase

177.Splice  Machine

178.Sedna

179.NexusDB

180.Xapian

181.CrateDB

182.VistaDB

183.Clustrix

184.LiteDB

185.Northgate  Reality

186.MapDB

187.BigchainDB

188.Postgres-XL

189.AlaSQL

190.Kinetica

191.Tokyo Cabinet

192.SQL.JS

193.Perst

194.Sqrrl

195.Objectivity/DB

196.ObjectDB

197.eXtremeDB

198.Rasdaman

199.Trafodion

200.Jade

201.Tokyo Tyrant

202.4store

203.Riak TS

204.InfiniteGraph

205.SQream DB

206.Project  Voldemort

207.FrontBase

208.Algebraix

209.Blazegraph

210.Raima  Database Manager

211.RDF4J

212.Graph Engine

213.Tajo

214.LokiJS

215.Percona  Server for MongoDB

216.Redland

217.BoltDB

218.ModeShape

219.Starcounter

220.Lovefield

221.Dgraph

222.SearchBlox

223.c-treeACE

224.Comdb2

225.Sequoiadb

226.Mimer SQL

227.Citus

228.PipelineDB

229.LucidDB

230.YugaByte DB

231.TimescaleDB

232.TigerGraph

233.Kyoto Cabinet

234.ElevateDB

235.Hibari

236.OpenQM

237.Axibase

238.Dataupia

239.SnappyData

240.STSdb

241.Actian PSQL

242.FaunaDB

243.Scalaris

244.NEventStore

245.EsgynDB

246.TransLattice

247.Sparksee

248.WebScaleSQL

249.ActorDB

250.VelocityDB

251.HyperGraphDB

252.RedStore

253.InfoGrid

254.Hawkular  Metrics

255.Warp 10

256.FlockDB

257.BrightstarDB

258.Mulgara

259.Transbase

260.RaptorDB

261.ITTIA

262.Eloquera

263.EJDB

264.NosDB

265.XtremeData

266.DensoDB

267.SenseiDB

268.Siaqodb

269.searchxml

270.GridDB

271.SmallSQL

272.WakandaDB

273.Valentina  Server

274.Alibaba  Cloud MaxCompute

275.Alibaba  Cloud HybridDB

276.TinkerGraph

277.Blueflood

278.Alibaba  Cloud Table Store

279.CubicWeb

280.Dydra

281.GraphBase

282.FleetDB

283.Kyoto Tycoon

284.Quasardb

285.AgensGraph

286.TempoIQ

287.ScaleOut  StateServer

288.JethroData

289.GRAKN.AI

290.Bangdb

291.LeanXcale

291.TayzGrid

293.iBoxDB

294.IRONdb

295.Versant  FastObjects

296.BigObject

297.Brytlyt

298.GlobalsDB

299.TerarkDB

300.MammothDB

301.InfinityDB

302.CodernityDB

303.Strabon

304.WhiteDB

305.ToroDB

306.AnzoGraph

307.DBSight

308.LedisDB

309.Atos Standard Common Repository

309.Badger

309.BergDB

309.Cachelot.io

309.CortexDB

309.DaggerDB

309.Djondb

309.Elliptics

309.Exorbyte

309.Helium

309.Heroic

309.HGraphDB

309.HyperLevelDB

309.Indica

309.Jaguar

309.JasDB

309.JustOneDB

309.K-DB

309.Linter

309.Machbase

309.Manticore Search

309.Nanolat

309.Newts

309.OrigoDB

309.Resin Cache

309.Sadas Engine

309.SiriDB

309.SisoDb

309.SiteWhere

309.SparkleDB

309.SwayDB

309.TomP2P

309.Upscaledb

309.Yaacomo

309.Yanza

2. NoSQL数据库常见系统特点

非关系型数据库NoSQL是Notonly SQL缩写,是对不同于传统的关系型数据库的数据库系统的统称,它具有非关系型、分布式、不提供ACID的数据库设计模式等特征。NoSQL数据库易扩展,共同特点是都去掉了关系型数据库的关系型特性。NoSQL涵盖了各种不同数据库技术,开发人员使用一些创建大量新的、快速变化的数据类型的应用程序...包括Memcached、Redis、MongoDB、TokyoTyrant等,这些技术是根据构建现代应用程序的要求而开发的。[8]随着互联网与移动流量呈现出爆发性增长,近年来以Redis、MongoDB、HBase为代表的NoSQL数据库快速发展,NoSQL数据库快速实现业务需求、轻松、低成本、可伸缩的特点,有些人说NoSQL要取代关系型数据库。发展几年后大家冷静了,目前RDBMS仍占据80%的活跃度,仍处于统治地位。

表2 NoSQL数据库的四大分类表格分析

分类

系统实例

典型应用场景

数据模型

优点

缺点

键值(key-value)存储

Redis; 临时Memcached;  永久Tokyo Cabinet/Tyrant, Flare, ROMA,  Voldemort, Oracle BDB

内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等

Key指向Value的键值对,通常用hash  table来实现

查找速度快

数据无结构化,通常只被当作字符串或者二进制数据

列存储(Column stores)

Cassandra, HBase, Riak,  HyperTable

分布式的文件系统

以列簇式存储,将同一列数据存在一起

查找速度快,可扩展性强,更容易进行分布式扩展

功能相对局限

文档型(Document stores)数据库

CouchDB, MongoDb

Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)

Key-Value对应的键值对,Value为结构化数据

数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构

查询性能不高,而且缺乏统一的查询语法

图形(Graph)数据库

Neo4J, InfoGrid, Infinite Graph

社交网络,推荐系统等。专注于构建关系图谱

图结构

利用图结构相关算法。比如最短路径寻址,N度关系查找等

很多时候需要对整个图做计算才能得出需要的信息,且这种结构不太好做分布式的集群方案

该表是常见NoSQL数据库的分类、系统实例、应用场景、数据模型、优缺点。NoSQL分四大分类:

键值(Key-Value)存储数据库

这类数据库主要用到一个哈希表,表中有一个特定的键和一个指针指向特定数据。Key/value模型对IT系统来说,优势在于简单、易部署。但如果DBA只对部分值进行查询或更新时,Key/value就显得效率低下了。举例如:TokyoCabinet/Tyrant, Redis, Voldemort, Oracle BDB。

列存储(Columnstores)数据库

这部分数据库通常用来应对分布式存储的海量数据。键仍然存在,但指向了多个列,这些列由列家族来安排。如:Cassandra,HBase, Riak。

文档型(Documentstores)数据库

文档型数据库的灵感来自于Lotus Notes办公软件,和键值存储类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。文档数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb。国内也有文档型数据库SequoiaDB,已经开源。

图形(Graph)数据库

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J,InfoGrid, Infinite Graph。

2.1 Redis(缓存数据库)

Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)与范围查询,bitmaps,hyperloglogs和 地理空间(geospatial)索引半径查询。Redis内置了复制(replication),LUA脚本(Lua scripting),LRU驱动事件(LRUeviction),事务(transactions)和不同级别的磁盘持久化(persistence),并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(highavailability)。[9]

图8 最新版Redis 4.0.10

Redis提供的缓存服务是其核心竞争力,但Redis也可以把数据库持久化。几年前Memcached是最流行的缓存服务,但随着Redis的发展在很多方面比Memcached更好用,比如Redis支持更多种数据类型,包括hash、set、list等等。Redis也支持数据持久化,另外2015年发布Redis 3.0开始支持集群服务。Redis还支持subscribe/publish命令,可以用于简单的消息发送与订阅,总体而言95%的情况,如果是缓存服务,我们都可以选择Redis。[10]

2016年Redis发布3.2版本,提供GEO地理信息存储支持。Redis原计划下个版本是3.4,后来计划重命令为Redis 4.0,目前的最新版是2017年推出的4.0.10。Redis4.0有许多大的变化,最重要的是模块化特性,官方希望Redis是一个底层基础设施,开发者可以在上面构建更多有意思的东西,比如对神经网络、机器学习数据计算扩展,还有如图数据、二级索引、时序数据、全文索引等等。[11] (备注:antirez是redis创始人的网名,他是最核心开发成员,90%以上的代码是他贡献的。)

官网:https://redis.io/ (国内无法访问,域名后缀io属于国家域名,是BritishIndian Ocean territory,即英属印度洋领地)http://www.redis.cn/ (中国用户组,可访问)

所用语言:ANSI C/C++

特点:运行异常快

使用许可:BSD

协议:类Telnet

有硬盘存储支持的内存数据库,但自2.0版本以后可以将数据交换到硬盘(注意,2.4以后版本不支持该特性)

Master-slave复制:如果同一时刻只有一台服务器处理所有的复制请求,这被称为Master-slave复制,通常应用在需要提供高可用性的服务器集群。

虽然采用简单数据或以键值索引的哈希表,但也支持复杂操作,例如ZREVRANGEBYSCORE。

INCR & co(适合计算极限值或统计数据)

支持sets(同时也支持union/diff/inter)

支持列表(同时也支持队列;阻塞式pop操作)

支持哈希表(带有多个域的对象)

支持排序sets(高得分表,适用于范围查询)

Redis支持事务

支持将数据设置成过期数据(类似快速缓冲区设计)

Pub/Sub允许用户实现消息机制

最佳应用场景:适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。例如:股票价格、数据分析、实时数据搜集、实时通讯。

优点:

1.支持多种数据结构,如string(字符串)、list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)

2.支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。

3.支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。

4.单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。

5.支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。

6.支持简单的事务需求,但业界使用场景很少,并不成熟。

缺点:

1.Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)。

2.支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点。

3.Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用。

2.2 MongoDB(文档型数据库)

MongoDB是文档型数据库,NoSQL领域的领导者之一,是当前最成功的NoSQL数据库。它有不少过人之处:弥补关系型数据库很多问题,比如支持Schema Free,在关系型数据库不支持JSON之前,就是一个典型的难题。比如,对于一个动态属性的表,该如何设计商品的属性、游戏装备属性等Schema表结构。以前,关系型数据库除了预留字段、行转列模式、大字段文本几种方案外,没别的好解决方案。MongoDB在这方面非常擅长,因为它的数据交互及存储都采用类似JSON格式,非常灵活,并且可以对JSON数据创建非常灵活的索引,如子属性、数组都能支持索引。新关系型数据库虽然也支持JSON格式,但是与MongoDB还是有较大的差距。

图9 NodeJS+MongoDB

因为是JSON,MongoDB天然支持js语法交互,吸引了很多NodeJS服务端程序员。也是js程序员的一种方案选择,有人宣称NodeJS+MongoDB组合要代替PHP+MySQL组合了。MongoDB很早就有自己的查询语言,语法是js格式但和SQL很像,与SQL一样强大。

图10 Mongo Query Language and SQL

上图简单对比MongoDB查询语言与SQL。SQL是面向关系型数据库设计的语言,且语法很全面,所以提供一个面向文档型数据库类似SQL的语言非常有价值。MongoDB查询语言洞察DBA需求:不只要高性能,还要提供强大高效的访问接口语言。

MongoDB原生支持分布式数据库、数据自动分片,还支持MapReduce,也内置分布式文件系统GridFS,另外可以挂接多种存储引擎;支持View,decimal最多支持34位小数位;支持collation字符串校验集,校验集会影响字符对比与排序,3.4版以前字符串是按字节严格对比,通过设置collation后可以指定校验方式,比如忽略大小写、汉字按拼音排序(官方文档特意举例拼音排序,说明重视中国用户)等等。MongoDB集群管理与日志复制方面进一步增强:推出自己的数据库云服务MongoDB Atlas,支持AWS上部署,这是一种更好用的云计算服务模式。

图11 MongoDB4.0

2018年6月27日,MongoDB在纽约发布了4.0版本。MongoDB4.0的新MongoDB Kubernetes Operator (Beta)支持配置有状态的分布式数据库集群,协调Kubernetes和MongoDBOps Manager之间的协同性。除了之前的Cloud Foundry集成,对Kubernetes的支持使客户可以自由地利用内部部署,混合和公共云基础架构。MongoDB Atlas通过与Google合作将AtlasFree Tier扩展到Google Cloud Platform,为用户提供更多选择。这允许不断增长的开发人员社区依靠GCP服务使用完全托管的MongoDB构建他们的应用程序,而无需进入成本。AtlasFree Tier提供512MB存储空间,是原型设计和早期开发的理想选择。

此外,该公司还宣布了一系列针对Atlas的复杂新安全功能,例如加密密钥管理,LDAP集成和数据库级审计,以便为安全意识最强的组织提供对其数据的更多控制。MongoDB Atlas现在使受保护的实体及其业务伙伴能够使用安全的Atlas环境来处理,维护和存储受保护的健康信息,这些信息是根据与MongoDB公司签署的业务伙伴协议,适用于符合1996年健康保险流通与责任法案(the Health Insurance Portabilityand Accountability Act of 1996, HIPAA)。

官网:https://www.mongodb.com (正常访问)

所用语言:C++

特点:保留了SQL一些友好的特性(查询,索引)。

使用许可:AGPL(发起者:Apache)

协议:Custom, binary(BSON)

Master/slave复制(支持自动错误恢复,使用sets复制)

内建分片机制

支持javascript表达式查询

可在服务器端执行任意的javascript函数

update-in-place支持比CouchDB更好

在数据存储时采用内存到文件映射

对性能的关注超过对功能的要求

建议最好打开日志功能(参数–journal)

在32位操作系统上,数据库大小限制在约2.5Gb

空数据库大约占192Mb

采用GridFS存储大数据或元数据(不是真正的文件系统)

最佳应用场景:适用于需要动态查询支持;需要使用索引而不是map/reduce功能;需要对大数据库有性能要求;需要使用CouchDB但因为数据改变太频繁而占满内存的应用程序。

例如:你本打算采用MySQL或PostgreSQL,但因为它们本身自带的预定义栏让你望而却步。

优点:

1.更高的写负载,MongoDB拥有更高的插入速度。

2.处理很大的规模的单表,当数据表太大的时候可以很容易的分割表。

3.高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点

(数据中心)故障转移。

4.快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置

获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内

存资源相当丰富的话,这将极大地提高数据库的查询速度。

5.非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而

导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,

整个过程会非常快速。

缺点:

1.不支持事务。

2.MongoDB占用空间过大。

3.MongoDB没有成熟的维护工具。

2.3 Memcached(缓存数据库)

Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon)是用C写的,但客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。memcached是一套分布式的快取系统,之所以不如Redis流行,是因为memcached缺乏认证以及安全管制,应将memcached服务器放置在防火墙后。[14]

许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

官网:http://memcached.org/ (无法访问)

所用语言:许多语言都实现了连接memcached的客户端,其中以Perl、PHP为主。仅仅memcached网站上列出的语言就有·Perl·PHP·Python·Ruby·C#·C/C++·Lua等等。

特点:协议简单,基于libevent的事件处理,内置内存存储方式,不互相通信的分布式。

使用许可:开放源代码软件,以BSD license授权协议发布。

协议:服务器客户端通信不使用复杂XML等格式,而使用简单的基于文本行的协议。

事件处理:libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。关于事件处理这里就不再详细介绍,可以参考Dan Kegel的TheC10K Problem。

存储方式:数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。

通信分布式:memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。进行分布式完全取决于客户端的实现。

优点:

1.Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。

2.支持直接配置为sessionhandle。

缺点:

1只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。

2.无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。

3.无法进行数据同步,不能将MC中的数据迁移到其他MC实例中。

4.Memcached内存分配采用SlabAllocation机制管理内存,value大小分布差异较大时会造成内存利用率降低,并引发低利用率时依然出现踢出等问题。需要用户注重value设计。

2.4 RedisMemcachedMongoDB对比

①性能:三者性能都比较高,总的来讲:Memcached和Redis差不多,要高于MongoDB。

②便利性:memcached数据结构单一。

redis丰富一些,数据操作方面,redis更好一些,较少的网络IO次数。

mongodb支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。

③存储空间:redis在2.0版本后增加了自己的VM特性,突破物理内存的限制;可以对keyvalue设置过期时间(类似memcached)。

memcached可以修改最大可用内存,采用LRU算法。

mongoDB适合大数据量的存储,依赖操作系统VM做内存管理,吃内存也比较厉害,服务不要和别的服务在一起。

④可用性:redis,依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制,因性能和效率问题,所以单点问题比较复杂;不支持自动sharding,需要依赖程序设定一致hash 机制。一种替代方案是,不用redis本身的复制机制,采用自己做主动复制(多份存储),或者改成增量复制的方式(需要自己实现),一致性问题和性能的权衡。

Memcached本身没有数据冗余机制,也没必要;对于故障预防,采用依赖成熟的hash或者环状的算法,解决单点故障引起的抖动问题。

mongoDB支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),autosharding机制,对客户端屏蔽了故障转移和切分机制。

⑤可靠性:redis支持(快照、AOF):依赖快照进行持久化,aof增强了可靠性同时,对性能有影响。

memcached不支持,通常用在做缓存,提升性能。

MongoDB从1.8版本开始采用binlog方式支持持久化的可靠性。

⑥一致性:Memcached在并发场景下,用cas保证一致性。

redis事务支持比较弱,只能保证事务中的每个操作连续执行。

mongoDB不支持事务。

⑦数据分析:mongoDB内置了数据分析的功能(mapreduce),其他两者不支持。

⑧应用场景:redis:数据量较小的更性能操作和运算上。

memcached:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写少,对于数据量比较大,可以采用sharding)。

MongoDB:主要解决海量数据的访问效率问题。

因此,总结NoSQL数据库在以下这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。

2.5 Neo4j(图数据库)

图数据库一直是NoSQL领域的重要分支,Neo4j可以说是图数据库的绝对领导者,虽然这个名字很像通用java组件(如log4j、dom4j)。Neo4j是一个高性能的NoSQL图形数据库,它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全事务特性的Java持久化引擎,可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。因为Neo4j嵌入式、高性能、轻量级等优势,越来越受到关注。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。[15]

图12 neo4j

Neo是一个比较新的开源项目,但它已经在具有1亿多个节点、关系和属性的产品中得到了应用,并且能满足企业的健壮性和性能的需求:完全支持JTA和JTS、2PC分布式ACID事务、可配置的隔离级别和大规模、可测试的事务恢复。Neo4j提供了大规模可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图,可以扩展到多台机器并行运行。Neo已经应用在高请求的24/7环境下超过3年了,是成熟、健壮的,完全达到了部署的门槛。

相对于关系数据库来说,图数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询——在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。Neo4j重点解决了拥有大量连接的传统RDBMS在查询时出现的性能衰退问题。通过围绕图进行数据建模,Neo4j会以相同的速度遍历节点与边,其遍历速度与构成图的数据量没有任何关系。此外,Neo4j还提供了非常快的图算法、推荐系统和OLAP风格的分析,而这一切在目前的RDBMS系统中都是无法实现的。

官网:https://neo4j.com/

定义:面向网络的数据库

图:是指数据原理里的树集合成的网络。

类型:一种非常高效的数据存储结构

语言:Java/C

使用许可:GPL v3 license

特点:1.对象关系的不匹配使得把面向对象的“圆的对象”挤到面向关系的“方的表”中是那么的困难和费劲,而这一切是可以避免的。

2.关系模型静态、刚性、不灵活的本质使得改变schemas以满足不断变化的业务需求是非常困难的。由于同样的原因,当开发小组想应用敏捷软件开发时,数据库经常拖后腿。

3.关系模型很不适合表达半结构化的数据——而业界的分析家和研究者都认为半结构化数据是信息管理中的下一个重头戏。

4.网络是一种非常高效的数据存储结构。人脑是一个巨大的网络,万维网也同样构造成网状,这些都不是巧合。关系模型可以表达面向网络的数据,但是在遍历网络并抽取信息的能力上关系模型是非常弱的。

Neo4j提供了类似SQL的图查询语言Cypher,Cypher语言的描述能力非常强大,甚至已经成为图查询语言的通用标准。一个简单的图数据库Cypher查询语言如下:

图13Cypher

2.6 Cassandra(列式数据库)

图14 cassandra

Cassandra列式数据库最初有列式概念,但现在已经看不到列式的东西,完全是一个标准分布式数据库。Cassandra除了具备表、字段、二级索引这些概念外,还支持触发器、物化视图,增加支持list、set、map、tuple等高级数据类型。Cassandra的接口语言是CQL,CQL查询数据用select,支持insert、update、delete,创建表也是用create table,创建索引也是用create index,语法与SQL基本一模一样,更像是SQL的一种扩展;但功能方面有一些限制,比如不支持多表关联,对where条件也有许多严格的限制等等。Cassandra与HBase起步与实现原理很像,但在国外非常流行,国内基本没有用户,而HBase国内非常流行。

3. SQL数据库特点及主流产品

结构化查询语言(Structured QueryLanguage)简称SQL(发音/ˈes kjuːˈel/"S-Q-L"),是一种用来访问和操作数据库系统的特殊目的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句用于取回和更新数据库中的数据。SQL可与数据库程序协同工作,比如MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase以及其他数据库系统。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

1986年10月,美国国家标准协会ANSI对SQL进行规范后,以此作为关系式数据库管理系统的标准计算机语言(ANSI X3. 135-1986),1987年国际标准组织ISO支持下成为国际标准。除了SQL标准之外,各种通行数据库系统在实践过程中都对SQL规范作了某些编改和扩充,大部分SQL数据库程序都拥有其私有扩展!存在着很多不同版本的SQL语言,实际上不同数据库系统间SQL不能完全通用。但为了与ANSI标准相兼容,它们必须以相似方式共同地支持一些主要的关键词(如SELECT、UPDATE、DELETE、INSERT、WHERE等)。

3.1 Oracle(最挣钱的数据库老大)

Oracle一直是数据库市场占有率最高的产品,长期被MySQL追赶(现在Oracle与MySQL都是Oracle公司的产品,但MySQL营收可忽略不计)。考虑到MariaDB分支也在持续快速发展,如果官方MySQL更新缓慢,估计很多公司就选择MariaDB了,所以甲骨文公司还得争取把用户守住。

图15 最新Oracle12c第二版

目前最新版本是Oracle12c第二版,相比11g设计理念上有全新变化:全面拥抱云计算,多租户是12c的最大特性。按Oracle以前产品发布来看,大版本的第一个版本更多是布道,第二个版本更具有大规模生产使用价值。云计算多租户重要特性:

I/ORate Limits for PDBs(PDB可以按IOPS或Mbps隔离)

Supportfor PDBs with Different Character Sets, Time Zone File Versions, and DatabaseTime Zones in a CDB

ProxyPDB(PDB代理服务,可以用一个链接指向远程的一个PDB)

Service-LevelACLs for TCP Protocol(每个PDB可以指定ACL安全策略)

FlashbackPluggable Database

PDBArchive Files(.pdb Files可导出PDB为离线文件,然后迁移到其它CDB上,用于容器迁移)

PDBRefresh,clone PDB and autorefresh(可用于单PDB的镜像实例灾备、同步、分析)

Oracle12.2增加原生Sharding支持,这与以前的partition及rac不同,sharding可以将数据放在完全不同的主机,属于sharenothing的架构。这个特性是专门为业务非常大的OLTP系统准备的,相当于内置实现了自动分库分表管理功能。另外新增数据生命周期管理功能。数据库有冷热之分,往往近期数据经常使用,早年前数据偶尔使用,好做法是对经常使用的数据采用行式存储、对不经常使用的数据采用压缩存储或列式存储,这样总体成本更优。这样做要付出一定设计与运维成本,可能影响业务体验,所以能做好的人不多。Oracle12.2可以指定数据的生命周期,让数据库自动帮你管理,提高了管理数据自动化能力,就像下面这两条指令:

3.2 MySQL(最流行的开源数据库)

受益于互联网行业快速发展,MySQL市场占有率持续攀升,原因是它开源免费易用,成为互联网公司最受欢迎的数据库。MySQL社区版、企业版最新版本是MySQL 8.0.12和8.0.2x。

图17 MySQL8.0 DMR

MySQL8.0原生支持JSON、fulltext search等,新版全面支持开发者版MySQL8.0 DMR提供的role角色权限。Role权限集合有统一名字的role名,可以给多个账户统一的某个role的权限。权限的修改直接通过修改role来实现,不需要以前那样每个账户逐一grant权限,方便运维和管理。role可以创建、删除、修改并作用到他管理的账户上。MySQL8.0几大特性:支持role,数据字典存储由myisam引擎变为innodb,支持invisible indexes,这对DBA索引调优很有帮助,增加column_stats,相当于Oracle的直方图,Performance schema持续加强,增加了很多error信息采集与展示,支持SET参数持久化保存。

3.3 SQL Server(Windows数据库)

微软有大量数据库顶级人才,SQL Server用户非常多、发展非常迅猛。最新版是SQL Server 2017版,2018年8月微软还没推出SQL Server 2018。

图18 SQLServer2017 180天试用版

SQLServer2016-2017特性:支持JSON、支持R语言做数据分析;

PolyBase——PolyBase支持查询分布式数据集,可以使用Transact SQL语句查询Hadoop或者SQLAzure blob存储。组织跨多个分布式位置传递数据,PolyBase就成了利用SQL Server技术访问这些位置的半结构化数据的便捷解决方案了。

全程加密——支持SQL Server数据加密,只有调用SQL Server应用才能访问加密数据(包括静态数据和动态数据)。该功能支持敏感数据存储在云端管理数据库中,并且永远保持加密。即便是云供应商也看不到数据。

动态数据屏蔽——保护一个表中的敏感信息,如:会员表的注册时间不太机密,但像手机号码这种信息并不希望普通账号可以查看,动态数据屏蔽可以有效的解决这个问题,普通账号看不到完整手机号信息,比如138-1234-5678手机号可能会显示为138-****-****。

Stretch Database——Stretch Database功能提供了把内部部署数据库扩展到Azure SQL数据库的途径,访问频率最高的数据会存储在内部数据库,访问较少的数据离线存储在Azure SQL数据库。

3.4 PostgreSQL(功能最强开源数据库)

PostgreSQL是历史非常悠久的开源数据库,关系型数据库理论提出以来一直非常活跃,功能非常强大与Oracle相当。PostgreSQL是一个功能强大的开源对象关系数据库系统,经过30多年积极开发,在可靠性、功能强大性和性能方面赢得了良好的声誉。PostgreSQL社区提供大量信息可供参考,通过官方文档介绍如何安装和使用PostgreSQL,以熟悉技术发现其工作原理,并找到职业机会。[17]PostgreSQL代码可读性非常好还开源,学术界非常喜欢研究。工业界应用不多,pg国外活跃度比中国高很多,有许多成功的工业界案例。

图19 PostgreSQL

PostgreSQL最新版是2018年8月9日发布的PostgreSQL 10.5 and 11Beta 3版本,支持单条SQL并行访问。该功能曾是商业数据库与开源数据库的重大区别,因为Oracle、SQLServer、DB2都支持单SQL并行计算,但是开源数据库基本不支持。开源数据库PostgreSQL9.6版是第一个支持。另外postgres_fdw在PostgeSQL功能类似Oracle的DBLink,或SQL Server链接服务器概念,是一个非常实用的组件,可以非常方便的访问远程数据库,还可以访问远程非PostgreSQL数据库,这对于一些数据迁移与异构关联计算非常有价值。

3.5 SQLite(最流行的嵌入式数据库)

SQLite嵌入式数据库随着手机、物联网等移动开发的流行而崛起,成为手机嵌入式数据库老大。google搜索iOS数据库或Android数据库开发,全屏都是SQLite介绍。SQLite是完整的关系型数据库,支持标准SQL、函数索引、外键、视图、触发器、ACID,扩展支持自定义函数、JSON、全文索引、GIS等高级特性;功能非常全,但程序包不到500KB能在几百KB内存运行,是当前手机或掌上嵌入式设备存储结构化数据的最好选择。SQLite是开源免费软件,但有支持加密、压缩等高级特性的收费功能,对数据安全要求较高的业务很有用。

图20 SQLite Version 3.24.0

SQLite最新版本是2018年6月4日发布的SQLite Version 3.24.0,开源协议Public Domain(基本是没有任何限制的开源协议)。相比MySQL、MongoDB等开源数据库来说,没有任何使用风险。

3.6OceanBase(国产分布式关系型数据库)

OceanBase是阿里巴巴/蚂蚁金服研发的高性能、分布式关系型数据库,支持完整ACID特性。它最大特点是高度兼容MySQL协议与语法,性能却是原生MySQL版本(半同步)的两倍以上。[18]

图21 云数据库OceanBase

OceanBase主打分布式与高可用特性,所有数据变更都在内存完成,基线数据全部使用SSD存储,拥有更好性能和更低响应时间;并可使用MySQL命令客户端或MySQL JDBC Driver直接访问OceanBase,对应用改造成本非常低。2015年底正式发布OceanBase 1.0,2018年最新版不详(他们org.cn官网、阿里云网页、百度百科、新闻均不提供版本号、LOGO这样的常规信息,只能看到媒体文章)。OceanBase已经是支付宝、网商银行最核心的数据库,承载了支付宝双十一所有交易服务。

4. 其他模式数据库产品及其特点

除了介绍上述12种主流数据库外,继续了解一下近年来云计算、搜索、大数据、AI、区块链等领域模式延展过来的类数据库服务,并入其他模式数据库服务和产品,陆续介绍代表性的6种。

4.1 ElasticSearch(网络搜索服务)

ElasticSearch是一个基于Lucene开发的分布式搜索服务,并不只是一个框架(Lucence需要二次开发),而是可以直接使用的服务器。它提供分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是Java开发,按Apache许可条款开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

建网站或应用程序并添加搜索功能,完成搜索工作的创建非常困难。程序开发人员希望搜索解决方案要运行速度快、有一个零配置和完全免费的搜索模式,能够简单地使用JSON通过HTTP来索引数据;并希望搜索服务器始终可用,能够从一台开始并扩展到数百台,要实时搜索、要简单的多租户,希望建立一个云解决方案。Elasticsearch就是解决这些问题及可能出现的更多其它问题的。

Elasticsearch本是一项搜索服务,但因其实在太强大太好用,以至于有一些业务把它作为数据存储与搜索服务。搜索与数据库本来就非常密切,很早以前的数据搜索都采用数据库内置的like模糊查询或全文检索实现,但随着互联网搜索业务的快速发展,对搜索选项也要求更丰富;另外,早期的搜索并不一定需要数据库完全实时的需求,所以数据库对全文搜索的支持一直不理想,就产生了很多专业搜索引擎产品,Lucence就是最流行的开源搜索引擎框架。近几年随着大数据快速发展,搜索引擎需要有更强的分布式支撑,另外业务竞争需要大量的日志数据采集与分析,实时性要求更高,Elasticsearch在这方面脱颖而出。Elasticsearch对增强了文档模型,有文档型数据库的感觉,甚至有人把它完全当分布式数据存储服务(主流大数据存储真的没有太好的准实时查询功能)。

图22 Elasticsearch 6.3

最新版ElasticSearch是2018年6月13日发布Elasticsearch 6.3,首次展示了用于节省空间的汇总,用于搜索的SQL等等。去年的版本跳跃就是为了与2018年7月24发布的Elastic公司旗下另一产品最新版KibanaVersion 6.3.2等产品版本号统一,解决用户搭建ELK或ElasticStack日志分析架构选择组件版本的困扰。

 

B2018年云AI区块链等领域数据库发展趋势(13637)

数据库服务在搜索、云计算、大数据、AI、区块链等领域都是核心技术之一,信息社会IT时代迈向DT潮流,移动互联网、物联网、云计算、人工智能、区块链的发展产生大量数据,数据存储和组织、数据挖掘和分析、数据管理和决策等等,都离不开基础的数据库技术。本部分共4章22节,秦陇纪带大家继续了解相关领域DB的服务特点、产品对比、发展趋势。

5. 全球云数据库服务及常见产品

云计算融合了多项ICT技术,是传统信息技术演进的产物。其核心技术有大规模分布式计算、虚拟化、分布式数据存储、大规模数据管理、分布式资源管理、并行编程模式、信息安全、云计算平台管理、绿色节能等各项技术。云计算是一种以数据和处理能力为中心的密集型计算模式,其商业模式有托管、后向收费、按需交付等云计算市场。云计算不仅改变了信息提供的方式,也颠覆了传统ICT系统的交付模式。与其说云计算是技术的创新,不如说云计算是思维和商业模式的转变。

云计算领域,两种云计算分布式存储系统Google的GFS和Hadoop开源系统HDFS比较流行。谷歌的非开源GFS(Google File System)技术是云计算平台满足大量用户需求,并行地为大量用户提供服务,使得云计算的数据存储技术具有了高吞吐率和高传输率的特点。Hadoop开源的HDFS(Hadoop Distributed File System)数据存储技术被大部分ICT厂商,包括Yahoo、Intel的“云”计划采用,未来的发展将集中在超大规模的数据存储、数据加密和安全性保证、及继续提高I/O速率等方面。

分布式并行编程模式MapReduce是当前云计算主流并行编程模式之一。MapReduce是Google开发的Java、Python、C++编程模型,主要用于大规模数据集(大于1TB)的并行运算。MapReduce模式将任务自动分成多个子任务,通过Map和Reduce两步实现任务在大规模计算节点中的高度与分配。MapReduce模式的思想是将要执行的问题分解成Map(映射)和Reduce(化简)的方式,先通过Map程序将数据切割成不相关的区块,分配(调度)给大量计算机处理,达到分布式运算的效果,再通过Reduce程序将结果汇整输出。

Google的BT(BigTable)数据管理技术和Hadoop团队开发的开源数据管理模块HBase是业界比较典型的大规模数据管理技术。BT(BigTable)数据管理技术中,BigTable是非关系的数据库,是一个分布式的、持久化存储的多维度排序Map。BigTable建立在GFS, Scheduler, LockService和MapReduce之上,与传统的关系数据库不同,它把所有数据都作为对象来处理,形成一个巨大的表格,用来分布存储大规模结构化数据。BigTable的设计目的是可靠的处理PB级别的数据,并且能够部署到上千台机器上。开源数据管理模块HBase是Apache的Hadoop项目的子项目,定位于分布式、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。作为高可靠性分布式存储系统,HBase在性能和可伸缩方面都有比较好的表现。利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

目前公有云市场AWSAzure、阿里云三家厂商排在前面,简称3A,各有特色。数据库服务一直是云计算厂商非常核心的竞争力,下表是几大厂商提供的数据库服务产品对比。

图23 3A(AWS、Azure、阿里云)数据库服务

5.1 AWS

亚马逊的AWS产品非常全,且客户体量非常大,产品成熟度非常高。AWS Database Service有AWS SnowBall数据迁移系列产品,帮助用户快速迁移PB级数据量到云上;还有AWS SnowMobile用卡车来完成上百PB的数据迁移,比传输网络传输快50倍。

以AWS的亲身经历为例,截至2018年6月29日,AWS在全球帮助超过78000套不同类型的数据库通过AWS DMS数据库迁移工具迁移至云上。8月9日,在不到两个月的时间里,这一数字变成了83000套。(沃纳·威格尔,2018)。由西云数据运营的AWS中国(宁夏)区域成为中国的第二个AWS区域,也是继北京、孟买、首尔、新加坡、悉尼和东京的AWS区域之后AWS在亚太地区的第七个AWS区域。当时,亚马逊在全球完成了17个区域、46个可用区的基础设施布局。现在AWS在全球已经有55个可用区,分布在18个区域和一个本地区域。AWS全球副总裁、大中华区执行董事容永康透露说,今年年底之前,AWS还将启用包括中国香港特别行政区在内的4个服务区域。

AWS目前服务着全球数百万客户,包括发展迅速的初创公司、大型企业和政府机构,提供120多项功能全面的服务,涵盖计算、存储、联网、数据库、分析、应用服务、部署、管理、开发、移动、物联网、人工智能、安全、混合云、虚拟和增强现实、媒体和企业级应用等。

5.2 Azure

微软出品Azure Database Service包括SQLServer之外,同时提供表存储、Redis缓存、数据仓库,并通过第三方支持MySQL服务,给用户提供了丰富的选择。微软自家核心数据库引擎SQL Server在数据管理与迁移工具方面非常强大。SQL Server Stretch Server混合云解决方案,在SQL Server方面支持力度最强。

5.3 阿里云

阿里云发展很快,2015年只有MySQL与SQL Server两个引擎,现在有十几种,如PostgreSQL、SQL Server、MongoDB、Redis、DRDS、ADS(分析型数据库服务)、Greenplum等,丰富的数据库引擎是阿里云的核心竞争力之一。除了支持丰富的数据库引擎外,还有数据传输与数据管理两个数据库服务类的产品,用来管理各种数据源中的数据,替代Navicat、phpMyAdmin等客户端数据库工具。数据在内网传输,更安全高效。数据管理服务还提供了各种数据图表分析、数据变更统计、性能诊断等十几项特色功能。连接上数据库,就算数据库在本地,非阿里云用户也可免费使用数据管理服务。阿里云在国内的性价比最有优势。

5.4 Oracle云服务

Oracle刚开始反对向云计算转型,所以云市场方面起步较晚,市场份额较低。但是Oracle产品线是全宇宙最全的,从IaaS、PaaS、DaaS、SaaS全都覆盖,自家做数据库、OS、CPU、服务器,还有最全的SaaS类软件。Oracle在数据库云服务主要销售Oracle、MySQL数据库及Hadoop大数据服务。AWS这种云计算服务对于传统基础IT公司冲击特别大,特别是IaaS及DaaS方面,现在Microsoft、Oracle、IBM都在痛苦的转型,各自都在结合自己的优势突围。云计算给惠普、DELL、EMC这种偏硬件的企业压力更大。

5.5 Google云服务

Google是最先提出云计算的概念,但是发展得非常不顺利,因为Google提的云计算与当前的流行的概念已经完全不一样了。Google最早主要是提供GAE这个PaaS服务,没有搞起来。最近两年完全转型为IaaS+PaaS,和AWS非常像,新的平台叫GCP(Google CloudPlatform),但是公有云市场已经被AWS领先很多。Google在数据库方面带来了分布式技术的突破,研发了BigTable、Spanner这样领先的分布式数据库技术,但是BigTable与Spanner只是一项内部应用的技术,离市场需要的产品不一样,业界大部份公司还不需要这样复杂的技术。云计算服务不仅要有技术基础,更需要有很强的产品设计能力。另外云计算和互联网一样,是一个基础设施,不能因为用户上了云计算就必须要全部改变他原有的软件架构,就像不能因为用户要上网就必须把电脑全换了一样的道理。Google公有云服务地址:https://cloud.google.com/products/

国内其他云厂商也提供了数据库服务,包括腾讯云、百度云、华为云,但是产品线及成熟度还有待提升,有机会再整理。以上就是本报告涉及到的18种主流数据库引擎的总结。

6. AI/NewSQL/时序/区块链/IOT等DB发展

数据库作为IT技术架构的核心,新技术层出不穷。随着大数据、物联网及人工智能时代的到来,数据库技术DBMS与AI、HTAP、时序、区块链结合,解决海量数据增长带来的各种需求及问题。技术始终是不断发展着的。OpenStack,Progressive Web Apps,Rust,R,认知云,人工智能(AI),物联网等新发展正在把我们传统的认知模式抛弃。

6.1 数据库管理AI辅助技术趋势

AI (人工智能ArtificialIntelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能需要被教育,汇入很多信息才能进化,进而产生一些意想不到的结果。AI影响幅度很大,例如媒体业,现在计算机跟机器人可以写出很好的文章,而且1小时产出好几百篇,成本也低。AI对经济发展会产生剧烈影响,很多知识产业跟白领工作也可能被机器人取代。数据库管理技术向AI方向发展,已有研究项目在做AI与DBMS的结合。

DBMS发展越快功能越多,需要处理多达数百个平台容器环境变量、数据读写存储器、复杂负载控制、缓存量调整等数据库系统配置选项和参数,还无法实现配置资源最优化,对传统DBA的专业性和管理成本要求也很高。基于这些原因,一些DBMS在近年逐步加强自动化管理和AI辅助技术。与AI的结合相继出现,例如Oracle自治数据库的概念,亚马逊和卡内基梅隆大学一起开发的机器学习自动化调整DBMS的OtterTune系统,并公布起设计论文和开源项目,重点解决DBMS长期存在的类似一些问题。据了解,OtterTune可以自动为DBMS的配置选项找到最好的设置方法。

OtterTune通过机器学习算法,利用从先前的DBMS部署调整中学到知识,目标是任何人都容易部署数据库管理系统,减少调整新的DBMS部署所需的时间和资源。为此,OtterTune维护了从以前的调优会话收集的调优数据库,使用此数据构建机器学习(ML)模型,捕获DBMS如何响应不同的配置,使用这些模型来指导新应用程序的实验,推荐改进目标参数的设置(例如,减少延迟或提高吞吐量)。

通过客户服务器的硬件配置及业务场景来自动生成大数据系统的配置文件,类似OtterTune维护DBMS,AI在DBMS的出现会为DBA解放那类重复性、规律性的工作,未来的DBA工作,更加需要真正的创新,而不是调参了。这对推动技术、科学的发展非常有益。

6.2 NoSQLNewSQL融合OLTPOLAPHTAP发展迅速

起源于Google三大基础设施论文(GFS,MapReduce和BigTable)诞生了开源Hadoop系统,互联网公司通常用于对海量非结构化数据和结构化数据的存储及分析,开源社区有持续的贡献,Hadoop生态系统迅速发展,已经成为了OLAP(联机分析处理Online AnalyticalProcessing)方面对海量数据处理的事实标准。但Hadoop生态系统作为离线数据分析系统,无法实时数据分析。在业务数据库之外构建一个新的数据仓库提供OLAP也就是数据分析方面的支撑,需要在传统数据库和Hadoop之间构建一套ETL(抽取转换加载Extract-Transform-Load,也称为数据仓库技术)系统,使得两者之间数据导入导出。如此则数据库和数据仓库的管理更加复杂。

Hadoop作为一个庞大的开源系统,需要很多组件才能满足业务的需求。基于Hadoop构建数据仓库满足OLAP需求有很多不足,用NoSQL数据库可以为很多大数据量业务扩容。例如通过HBase管理近千亿url数据,并且NoSQL数据库通常可以动态扩容并且支持容错,但是NoSQL系统的缺点也非常的明显,例如应用场景相对简单,通常无法兼容传统的sql语句,多表关联以及事物等需求也通常无法满足。对于开发人员还需要重新学习NoSQL的API和使用方式,带来了额外的代价。

基于上述原因,出现了融合OLTP(On-LineTransaction Processing联机事务处理过程,也称为面向交易的处理过程)和OLAP的一种Gartner提出了HTAP数据库概念提法HTAP(Hybrid Transactional Analytical Processing),意味着可以通过一个数据库系统同时满足事务性需求和分析型需求,而最具代表性的就是Google的Spanner+F1论文,产生了一批NewSQL系统

例如CockroachDB和国内PingCAP团队开发的TiDB,以TiDB为例,TiDB采用Raft实现分布式协议,完全兼容MySQL客户端,可以用熟悉的MySQL接口,不需要对数据库进行分库分表,既实现了分布式,又减轻了用户学习成本,对于企业来讲,可以通过构建一套分布式数据库系统,同时满足事务性和分析型需求,减轻系统复杂性的同时也提高了效率。TiDB团队在数据库领域作出了世界级的开源项目,可以说是具备里程碑的意义。HTAP将成为未来的数据库的主流发展趋势。[19]

6.3 时序数据库在物联网、金融交易等领域崛起

物联网传感器,DevOps的监控数据,金融领域的股票交易、汇率等等严格按时间顺序产生了大量的数据,都属于时序数据。基于这些场景产生了时序数据库的概念。时序数据库对时间属性进行特殊索引,实现数据的快速查询以及更高压缩,例如InfluxDB项目。InfluxDB是一个使用Go语言开发的分布式时序、时间和指标数据库,无需外部依赖。特别适合处理和分析资源监控数据。

物联网项目使用InfluxDB用于存储大型中央空调设备产生的数据,与传统DBMS相比,InflluxDB存储空间减少了近70%,存储和查询效率也有大幅度提升,并且通过InfluxDB集成的聚合函数和连续查询功能,可以自动生成数据的日报表、月报表、年报表,极大减轻了开发成本和系统复杂度。

6.4 区块链账本类似某种强分布式数据库

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。其中共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。区块链(Blockchain)技术的DLT(分布式账本DistributedLedger Technology)起源于比特币的一个重要概念,指一种全民参与记账的方式,本质上是一个去中心化的数据库。所有区块链系统背后都有一个本地用来记账的数据库,这些本地账本,合起来就是一个大账本,和常见数据库架构和安全原理对立,但仅存储角度来说,类似某种强分布式数据库。区块链系统能够大幅度降低成本,减少风险和管理成本,提升流动性,增加创新产品和服务的机会。像大数据、云计算、人工智能一样,区块链是这十年中举足轻重的技术。

6.5 生活数据、智慧城市汇集的大数据数据库

生活数据、物联网、智慧城市汇集了大数据,无处不在的连接产生了大量的数据处理和存储需求,各地纷纷建设本地化数据中心,以支撑服务于人与社会的发展。以数据库为基础的多种技术为依托且相互结合,释放大数据的“洪荒之力”,推进社会往公开、公平、高效、充分发展!智慧城市是运用信息和通信技术手段感测、分析、整合城市运行核心系统的各项关键信息,从而对包括民生、环保、公共安全、城市服务、工商业活动在内的各种需求做出智能响应。

有人在1995年讨论所谓“数位汇流”,说有一天电话、电视、音响、电脑与游戏机,将会整合成一个装置。事实上智能手机就是这样的装置,数位载具会汇流,每个装置都可以兼当另一个装置使用。他们产生的生活数据、智慧城市汇集的大数据,就需要存储在各式各样的数据库里面。数位汇流比较像“iCloud”,也就是说所有的装置会存取同一个远端资料库,让你的数位生活可以完全同步,随时、无缝的切换使用情境。

7 数据库技术已明确的发展趋势

数据库技术解决存储、使用和管理数据。最早1961年美国通用电气公司Bachman等人开发IDS(IntegratedData Store)网状DBMS,数据库高速发展57年以来,现有公开发行343种(DB-Engines,2018)数据库系统。DBMS是计算机系统的核心构成,是IT界一直活跃的技术。面对新数据形式,专家们提出了丰富多样的数据模型(层次模型、网状模型、关系模型、面向对象模型、半结构化模型等),众多新的数据库技术(XML数据管理、数据流管理、Web数据集成、数据挖掘等)。从网络/层次数据库到关系型数据库,到面向对像数据库、分布式数据库、时序数据库,再到NoSQL(KV型、文档型、列式数据库、图数据库)、大数据(HBase)、NewSQL,微软(SQLServer)、Oracle(Oracle+MySQL)、IBM(DB2)、SAP(Sybase+HANA)、Google(Spanner)、Facebook(RocksDB)、阿里巴巴(OceanBase)、Amazon(Aurora)等数据库界全球顶级软件厂商都非常重视数据库领域传统和新一代发展趋势并投入巨大研发资源。本章简单总结近十年以来数据库的技术趋势,介绍目前已经明确了的数据库研究领域和厂商推出的数据库技术发展特征、面临的问题和最热门的研究发展现状、未来趋势,大体上有如下十大主要特征。

7.1 数据库性能与易用性仍是主流趋势

IDC报告显示,关系数据库管理系统(RDBMS)软件市场上,Oracle继续领先对手IBM和微软。RDBMS没有关键的技术革新,关系型数据库升级缓慢,各大厂商所都在对产品进行锦上添花式的不断完善。数据库以更少的相对资源消耗、更高的性能运行,变得更加自动化和智能、维护和使用更加简单,始终是数据库技术发展的必经之路。

在性能与易用性方面,Oracle数据库一直走在前列,其霸主地位和高昂价格的背后,是其海量产品研发投入。从Oracle 9i开始,Oracle一直致力于数据库软件自动化,实现了自动PGA管理、自动SGA管理、自动段空间管理(ASSM)、自动存储管理(ASM)等新特性,切实降低了DBA工作量,使数据库管理更加简单。而IBM DB2也加强这方面功能,如IBM的SMART技术(Self-Managing And Resource Tuning自我管理和资源调优)。在DB2 v9中IBM同样推出了一系列自动化特性,包括自动数据库管理功能、自动统计数据收集等功能。详情参看Oracle公司举行的OpenWorld大会。

7.2 搜索是数据库的未来之路

数据库容纳存储几乎所有数据后,面临着如何快速获取数据的问题。用户访问数据库时,怎样减少用户等待,快速返回用户需要的数据是所有数据库都需要解决的问题。数据库到数据仓库、商业智能(BI)、SOA等,必然向高级增强--面向搜索的增强、面向需求的增强-数据分析和挖掘、快速搜索和查询方面进行增强。

7.3 开源数据库已占半壁江山

和Linux操作系统渐入佳境一样,开放源代码的数据库系统也走向了应用主流。根据本报告A部分第1章第2节DB-Engines排名数据,其统计的343种数据库中,有173种商业数据库和170种开源数据库,分别占比52.5%和47.5%,开源数据库已占半壁江山。2018年主要开源数据库产品依然是MySQL、PostgreSQL、Redis和MaxDB。Apache Hadoop、Spark等开源系统在云计算大数据领域占据主导地位。MySQL数据库5.0-8.0版本越来越象SQL Server等大型数据库,逐渐从开源圈子向企业级市场拓展。凭借廉价优势,MySQL市场正在扩大。除了开源数据库厂商成为市场焦点外,甲骨文、Sun 和微软老牌厂商也纷纷拥抱开源。中小企业用户市场拉动下,开源数据库走向应用主流。开源数据库软件以其低成本获得越来越多用户认可,迫使主流厂商推出免费版应对。佛瑞斯特研究显示60%企业的Hadoop集群投入生产,Hadoop使用率正以每年32.9%的速度增长。[22]许多企业将继续扩大他们的Hadoop和NoSQL技术应用,并寻找方法来提高处理大数据的速度。

7.4 层次型XML/关系型RDBMS混合数据格式

IBM公司DB2 9版本中,直接对XML支持,是业内第一个同时支持关系型数据和层次性XML数据的混合数据库。无需重新定义XML数据格式,将其置于数据库大型对象下,IBM DB2 9允许用户无缝管理普通关系数据和纯XML数据。传统关系型数据与层次型数据的混合应用成为新一代数据库产品的一个特点。Oracle和微软也同时宣传其产品可实现高性能XML存储与查询,使现有应用更好的与XML共存。

7.5 SOA架构支持

最初IBM和BEA推动的SOA(面向服务的体系结构Service-Oriented Architecture)理念,已成为IT业内一大发展趋势。随着市场发展,越来越多的公司开始支持SOA,包括Oracle、微软、国内主流数据库厂商。

7.6 商业智能支持

企业内部IT及信息系统的商业数据几何数量级递增,从这些海量数据中挖掘信息、分析决策、转化为商业价值,就是BI的关注点。数据库厂商推新产品,也将BI商业智能作为其数据库产品的亮点。微软SQL Server从2005就集成了完整的商业智能套件,包括数据仓库、数据分析、ETL工具、报表及数据挖掘等,并有针对性的做了一些优化。商业智能也是未来数据库产品发展趋势。

7.7 数据集成和数据仓库迈向内容管理

主数据管理、数据集成、数据仓库在内容展现和战术性分析方面成为一个新的热点。数据库管理除了更加自动化之外,将会提供更多基于Internet环境的管理工具,完成数据Internet化之后的数据库管理Internet化,数据库将与业务语义的数据内容融合。未来随着用户对以上特性认知程度的提高,数据库产品自带的信息呈现特性,将会成为众多中小型项目的不二选择。

7.8 网络数据源的信息集成支持

网络数据源的信息集成系统方法分为:数据仓库方法和Wrapper/Mediator方法。数据仓库方法中,各数据源的数据按照需要的全局模式从各数据源抽取并转换,存储在数据仓库中,用户对数据仓库中的数据进行查询,适用于数据源数目少的单个企业。Wrapper/Mediator方法不将各数据源的数据集中存放,而是通过Wrapper/Mediator结构满足上层集成应用的需求。这种方法的核心是中介模式(MediatedSchema)。信息集成系统通过中介模式将各数据源的数据集成起来,而数据仍存储在局部数据源中,通过各数据源的包装器(wrapper)对数据进行转换使之符合中介模式。用户的查询基于中介模式,不必知道每个数据源的特点,中介器(mediator)将基于中介模式的查询转换为基于各局部数据源的模式查询,它的查询执行引擎再通过各数据源的包装器将结果抽取出来,最后由中介器将结果集成并返回给用户。Wrapper/Mediator 方法解决了数据的更新问题,从而弥补了数据仓库方法的不足。但这种框架结构有3个挑战:如何支持异构数据源之间的互操作性(interoperability);如何模型化源数据内容和用户查询;当数据源的查询能力受限时,如何处理查询和进行优化。

7.9 网格数据管理支持

网格是把整个网络整合成一个虚拟的巨大的超级计算环境,实现计算资源、存储资源、数据资源、信息资源、知识资源和专家资源的全面共享。目的是解决多机构虚拟组织中的资源共享和协同工作问题。按照应用层次不同可分为3种:计算网格(提供高性能计算机系统的共享存取);数据网格(提供数据库和文件系统的共享存取);信息服务网格(支持应用软件和信息资源的共享存取)。

高性能计算的应用需求使计算能力不可能在单一计算机上获得,因此,必须通过构建“网络虚拟超级计算机”或“元计算机”获得超强的计算能力,这种计算方式称为网格计算。它通过网络连接地理上分布的各类计算机(包括机群)、数据库、各类设备和存储设备等,形成对用户相对透明的虚拟的高性能计算环境,应用包括了分布式计算、高吞吐量计算、协同工程和数据查询等诸多功能数据网格保证用户在存取数据时无须知道数据的存储类型(数据库,文档,XML)和位置。涉及的问题包括:如何联合不同的物理数据源,抽取源数据构成逻辑数据源集合;如何制定统一的异构数据访问的接口标准;如何虚拟化分布的数据源等。信息网格是利用现有的网络基础设施、协议规范、Web 和数据库技术,为用户提供一体化的智能信息平台,其目标是创建一种架构在OS和Web之上的基于Internet的新一代信息平台和软件基础设施。

7.10 数据加密技术支持

数据加密与解密方法是商业数据库核心功能之一。保护数据、杜绝非授权访问、防止工业间谍等,都需要安全措施,来保护机密数据不被窃取或篡改。传统上有几种方法来加密数据流。比如80x86的CPU系列有一个xlat指令,用在硬件级置换。目前流行基于公钥的加密算法。

8. 全球数据库2018发展趋势展望

未来全球数据库竞争会更加激烈,MySQL有望超越Oracle成为流行度第一的数据库产品,RDBMS、NoSQL、NewSQL等各数据库互相借鉴,但RDBMS地位仍居首。AI和知识图谱在更多领域的应用,使得图数据库继续增长并开始发力,机器学习等AI技术应用于数据库领域自动化、智能化管理和运维。数据库云服务化继续加强,各厂商竞争激烈,混合云解决方案成重要战场。

8.1全球数据库2018年发展趋势

水平有限,只能在本节略带展望一下全球数据库2018年发展趋势,不敢升级为章。

8.1.1 内存技术

加速大数据处理过程,内存技术是关键。在传统数据库中,数据存储在配备有硬盘驱动器或固态驱动器(SSD)的存储系统中。而现代内存技术将数据存储在RAM中,这样大大提高了数据存储的速度。佛瑞斯特研究的报告中预测,内存数据架构每年将增长29.2%。目前,有很多企业提供内存数据库技术,最著名的有SAP、IBM和Pivotal. [22]

8.1.2 云端数据库托管服务

O’Reilly调查显示,庞大运维人员支持的传统IT公司上云感受到云数据库的便捷后,往往会需要进一步提供存储、数据处理、可视化、分析以及人工智能的托管服务。类似服务相关的开源组件需要专业运维人员,所以选择将这些工具托管到服务提供商,不用考虑详细的数据库管理、运维。其公司内数据专业人士将能关注手头的问题,提供公司在其领域的专业性。但并非所有数据都会迁移到公共云,遗留系统、敏感的数据、安全、合规以及隐私问题将会需要一个混合的架构。这就需要定制或私有云,如工业物联网Predix或AWS的CIA。

8.1.3 微小型数据库技术支持

移动计算时代到来,嵌入式操作系统对微小型数据库系统有更多需求。微小型数据库系统(a small-footprint DBMS)是一种只需很小的内存来支持的数据库系统内核,其技术已从研究领域逐步走向应用领域。微小型数据库系统与操作系统和具体应用集成在一起,运行在各种智能型嵌入设备或移动设备上。微小型数据库系统针对便携式设备其占用内存空间约为2MB,对于掌上设备和其他手持设备占用内存空间只有50KB-500KB左右。内存限制是决定微小型数据库系统特征的重要因素。微小型数据库系统根据占用内存大小又进一步分为:超微DBMS(pico-DBMS)、微小DBMS(micro-DBMS)和嵌入式DBMS三种。逐渐增多的移动数据处理和管理需求,紧密结合各种智能设备的嵌入式移动数据库技术得到学术界、工业界、军事领域和民用部门等方面的重视并不断实用化。

8.1.4移动数据管理支持

掌上型或笔记本电脑、个人数字助理(PDA)、智能手机等移动计算机,是可以自由地移动的计算环境,称之为移动计算(mobile computing)。研究移动计算环境中的数据管理技术,已成为目前分布式数据库研究的一个新的方向,即移动数据库技术。与基于固定网络的传统分布计算环境相比,移动计算环境具有以下特点:移动性、频繁断接性、带宽多样性、网络通信的非对称性、移动计算机的电源能力、可靠性要求较低和可伸缩性等。移动计算所独有的特点,对分布式数据库技术和客户/服务器数据库技术,提出了新的要求和挑战。移动数据库系统支持移动用户在多种网络条件下能够有效地访问所需数据,完成数据查询和事务处理。通过移动数据库的复制/缓存技术或者数据广播技术,移动用户即使在断接的情况下也可以继续访问所需的数据,从而继续自己的工作,这使得移动数据库系统具有高度的可用性。此外,移动数据库系统能够尽可能地提高无线网络中数据访问的效率和性能。而且,它还可以充分利用无线通信网络固有的广播能力,以较低的代价同时支持大规模的移动用户对热点数据的访问,从而实现高度的可伸缩性,这是传统的客户/服务器或分布式数据库系统所难以比拟的。目前,移动数据管理的研究主要集中在以下几个方面:首先是数据同步与发布的管理。其次是移动对象管理技术。

8.1.5传感器数据库技术支持

传感器应用越来越广泛。传感器网络中,传感器数据的数据标记时间戳后发送到服务器,再由服务器对其进行处理。应用在监测和监控的传感器数据随着时间和采集的累积,越来越多。传感器节点上数据存储和处理后,传感器数据库系统需要考虑大量的传感器设备的存在,以及它们的移动和分散性。传统RDBMS性能明显不适应。因此,新的传感器数据库系统需要解决一些新的问题。主要包括:传感器数据的表示和传感器查询的表示、在传感器节点上处理查询分片、分布查询分片、适应网络条件的改变、传感器数据库系统等。

8.1.6 数据科学家进入数据库领域

随着传统和移动互联网、物联网等场景发展,数据库虚拟化、自动化、智能化的需求会更旺盛,竞争也会更激烈。数据科学家和数据分析师,用建模和机器学习等技术,带来更加自动、智能的数据库管理和运维能力,重新赋能DB领域基础能力。

①数据科学家开始使用深度学习

深度学习DB领域的应用,如OtterTune系统自动为DBMS配置选项,使得DB相关数据与工具化AI算法整合在一起,实现一定程度的自动化。数据科学家将在时间序列和事件数据(包括异常检测)、物联网及传感器数据为主的数据库模型上使用深度学习。对数据工程技能的需求将持续上升,许多公司招聘接触生产系统会编程的数据科学家。

②大数据分析师、数据管理专家、大数据算法工程师、数据产品经理具有有丰富经验的数据分析人才将成为稀缺的资源,数据驱动型工作将呈现爆炸式的增长。《华尔街日报》在一份题为《大数据,大影响》的报告宣传,数据已经成为一种新的资产类别,就像货币或黄金一样。Google、Facebook、亚马逊、腾讯、百度、阿里巴巴和360等企业正在运用大数据力量获得商业上更大的成功,并且金融和电信企业也在运用大数据来提升自己的竞争力。

8.2中国数据库2018趋势展望

国内数据库产品,受益于自主可控红利已经在金融、政府等行业得到应用。国内自主研发关系型、非关系型数据库的企业、单位基本上都是发源于上世纪90年代的,而且都是以大学、科研机构为主。检索时间有限,其他没有列出的绝无其他意思。代表性国内厂商有:

1.南大-通用GBASE数据库(GBase 8a等版本):南开大学的背景,2010年左右自主研发的,基于列式存储的,面向数据分析、数据仓库的数据库系统。

2.人大-金仓数据库(Kingbas...金仓:由人民大学王珊教授创办,自主研发。普通的关系型数据库。

3.华中理工-达梦数据库(DM):由华中理工冯玉才教授创办,完全自主研发。以Oracle为参照、追赶对象。

4.神舟通用(神通数据库:神通数据库企业版、神通数据库安全版、神通KSTORE):神舟集团与南大通用合作开发的关系型数据库。更多地用于数据分析领域。

5.OpenBASE、iBASE、华易数据库Huayisoft、SequoiaDB巨杉数据库、太阳塔数据库等等。

6.DataSimpOS:数据简化社区以OS、数据简化、新媒体技术学术为三大目标,学习中涉及到数据库系统、Hadoop平台、MySQL数据库,对DBMS的选型、管理及优化等。秦陇纪90s接触电脑就想做OS。驱动、中间件、UI、数据库、文件系统、内核、通信、字符集、指令集各模块均在简化、整合已有开源架构,做不过来。有兴趣的dev可以合作做某一个子领域,要求就一点:最简、规范。计算机系统最核心的是指令集,有所谓的专家说CPU指令集容易做,但是没有生态。这种人的话就当是放屁熏人!最难就是指令集,结合了软硬件各种控制调度算法的实现。Intel80386那个一千多页手册读了好多年了,很多软硬件实现的机制,还没用看懂,对软硬件知识和电气性能的综合性要求很高。设计制造封装一个28nm的芯片国内完全可以实现,关键是软件系统部分拿不出来。花时间学习研究真正的基础技术资料去吧,很多知识需要掌握。希望占据各种资源的人投入加入。

7.涛思数据(TAOSData)团队:陶建辉领衔做时序数据库产品TDengine,目前开放测试。

国产数据库最大趋势就是向着分布式数据库、开源、安全放心发展,希望更多的国内团队做出属于我们自己的优秀数据库产品,并不断加大研发投入,期待优秀国产数据库早日加入市场竞争。

-END-

 

参考文献(2531字)

1-16.DB-EnginesRanking.343 systems in ranking, August2018.[EB/OL]DB-Engines,https://db-engines.com/en/ranking,2018-08.

2-8.Wikipedia.DB-Enginesranking.[EB/OL]Wikipedia,https://en.wikipedia.org/wiki/DB-Engines_ranking,2018-07-11.

3.Statista 2018.Rankingof the most popular database management systems worldwide, as of February 2018.[EB/OL]Statista,https://www.statista.com/statistics/809750/worldwide-popularity-ranking-database-management-systems/,2018-02.

4.DB-Engines Ranking.Completetrend, starting with January 2013.[EB/OL]DB-Engines,https://db-engines.com/en/ranking_categories,2018-07.

5.DB-Engines Ranking.OpenSource vs. Commercial.[EB/OL]DB-Engines,https://db-engines.com/en/ranking_osvsc,2018-08.

6.DB-Engines Ranking.DBMSpopularity broken down by database model Number of systems per category, August2018.[EB/OL]DB-Engines,https://db-engines.com/en/ranking_categories,2018-07.

7.DB-Engines Ranking.Rankingscores per category in percent, August 2018.[EB/OL]DB-Engines,https://db-engines.com/en/ranking_categories,2018-07.

9.weiyanzi07.常见的NoSQL数据库有哪些?以及他们的特点与区别?.[EB/OL]CSDN知数堂,https://blog.csdn.net/wyz0516071128/article/details/80877984,2018-07-01.

10.redis.cn翻译团队.Redis.[EB/OL]redis中国用户组,http://www.redis.cn/,访问时间:2018-08-13.

11.创建者:smox.Redis.[EB/OL]百度百科,https://baike.baidu.com/item/Redis/6549233,2018-08-09.

12.antirez.The firstrelease candidate of Redis 4.0 is out.[EB/OL]antirez,http://antirez.com/news/110,2016-12-03.

13.MongoDB.MongoDBExpands its Leadership as the Modern, General Purpose Database Platform WithNew Product Announcements.[EB/OL]MongoDB,https://www.mongodb.com/press/mongodb-expands-its-leadership-with-a-number-of-new-product-announcements,2018-06-27.

14.创建者:lyxcf.memcached.[EB/OL]百度百科,https://baike.baidu.com/item/memcached,2018-07-02.

15.neo4j.neo4j.[EB/OL]neo4j,https://neo4j.com/,访问时间:2018-08-13.

17.PostgreSQL.PostgreSQL:The World's Most Advanced open source relational database.[EB/OL]PostgreSQL,https://www.postgresql.org/,访问时间:2018-08-14.

18.OceanBase.Redis.[EB/OL]OceanBase,http://oceanbase.org.cn/,访问时间:2018-08-14.

19.王晓伟goodwxw.2018数据库技术发展趋势.[EB/OL]CSDN知数堂,https://blog.csdn.net/n88Lpo/article/details/80268963l,2018-05-10.

20.中嘉和信.2018年大数据发展的七大趋势.[EB/OL]百家号,https://baijiahao.baidu.com/s?id=1595441186353487980,2018-03-20.

21.lhl545545.数据库技术发展的三个特征_当今主流数据库技术发展状况及趋势分析.[EB/OL]电子发烧友网,http://m.elecfans.com/article/629912.html,2018-02-05.

22.假的鱼转载.2018年大数据十大发展趋势.[EB/OL]CSDN,https://blog.csdn.net/m0_37803704/article/details/80392673,2018-05-21.

x.秦陇纪.数据科学与大数据技术专业概论;人工智能研究现状及教育应用;纯文本数据神经网络训练;大数据简化之技术体系[EB/OL]数据简化DataSimp(微信公众号),http://www.datasimp.org,2017-06-06.

 

数据简化社区2018年全球数据库总结及18种主流数据库介绍 (40619字)

秦陇纪

简介:数据简化社区2018年全球数据库总结及18种主流数据库介绍。(公号回复“数据库2018”,文末“阅读原文”可下载27图45k字28页PDF报告) 蓝色链接“数据简化DataSimp”关注后下方菜单项有文章分类页,欢迎转发、赞赏支持社区。作者:秦陇纪。来源:Google、DB-Engines、数据库网站等、数据简化社区秦陇纪微信群聊公众号,引文出处请看参考文献。主编译者:秦陇纪,数据简化社区、科学Sciences、知识简化新媒体创立者,数据简化OS设计师、C/Java/Python/Prolog程序员,IT教师。每天大量中英文阅读/设计开发调试/文章汇译编简化,时间精力人力有限,欢迎转发/赞赏/加入支持社区。版权声明:科普文章仅供学习研究,公开资料©版权归原作者,请勿用于商业非法目的。秦陇纪2018数据简化DataSimp综合汇译编,投稿合作,或出处有误、侵权、错误或疏漏(包括原文错误)等,请联系DataSimp@126.com沟通、指正、授权、删除等。欢迎转发:“数据简化DataSimp、科学Sciences、知识简化”新媒体聚集专业领域一线研究员;研究技术时也传播知识、专业视角解释和普及科学现象和原理,展现自然社会生活之科学面。秦陇纪发起未覆盖各领域,期待您参与~~ 强烈谴责超市银行、学校医院、政府公司肆意收集、滥用、倒卖公民姓名、身份证号手机号、单位家庭住址、生物信息等隐私数据!

 

Appx(626字).数据简化DataSimp社区简介

信息社会之数据、信息、知识、理论持续累积,远超个人认知学习的时间、精力和能力。应对大数据时代的数据爆炸、信息爆炸、知识爆炸,解决之道重在数据简化(Data Simplification):简化减少知识、媒体、社交数据,使信息、数据、知识越来越简单,符合人与设备的负荷。数据简化2018年会议(DS2018)聚焦数据简化技术(Data Simplification techniques)对各类数据从采集、处理、存储、阅读、分析、逻辑、形式等方ose 做简化,应用于信息及数据系统、知识工程、各类数据库、物理空间表征、生物医学数据,数学统计、自然语言处理、机器学习技术、人工智能等领域。欢迎投稿数据科学技术、简化实例相关论文提交电子版(最好有PDF格式)。填写申请表加入数据简化DataSimp社区成员,应至少一篇数据智能、编程开发IT文章:①高质量原创或翻译美欧数据科技论文;②社区网站义工或完善S圈型黑白静态和三彩色动态社区LOGO图标论文投稿、加入数据简化社区,详情访问www.datasimp.org社区网站,网站维护请投会员邮箱DataSimp@163.com。请关注公众号“数据简化DataSimp”留言,或加微信QinlongGEcai(备注:姓名/单位-职务/学校-专业/手机号),免费加入投稿群科学Sciences学术文献读者微信群等。长按下图“识别图中二维码”关注三个公众号(搜名称也行,关注后底部菜单有文章分类页链接):

数据技术公众号“数据简化DataSimp”:

科普公众号“科学Sciences”:

社会教育知识公众号“知识简化”:

(转载请写出处:©秦陇纪2010-2018汇译编,欢迎技术、传媒伙伴投稿、加入数据简化社区!“数据简化DataSimp科学Sciences知识简化”投稿反馈邮箱DataSimp@126.com。)

普及科学知识,分享到朋友圈

转发/留言/打赏后“阅读原文”下载PDF

阅读原文

微信扫一扫
关注该公众号

评论 2 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

秦陇纪10数据简化DataSimp

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值