29
SequoiaDB开源数据库介绍 王涛

SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

  • Upload
    vokhanh

  • View
    302

  • Download
    6

Embed Size (px)

Citation preview

Page 1: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

SequoiaDB开源数据库介绍

王涛

Page 2: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

Agenda

Overview1

Usecase3

Highlighted Features2

Page 3: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

颠覆式创新

Page 4: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

颠覆式创新

Page 5: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务
Page 6: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

我们开源啦!

Page 7: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

Then: Scale Up Now: Scale Out

Scale Up / Scale Out

Page 8: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

Document-oriented Database

RDBMS SequoiaDB

Page 9: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务
Page 10: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

应用程序

从数据节点

主数据节点

从数据节点

App Server App Server App Server

协调节点 协调节点 协调节点

编目节点

SequoiaDB Architecture

编目节点

编目节点

从数据节点

主数据节点

从数据节点

从数据节点

主数据节点

从数据节点

通过动态增加复制组 数量达到水平扩张的目的

Page 11: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

Agenda

Overview1

Usecase3

Highlighted Features2

Page 12: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

高可用性

协调节点

数据节点(P)

数据节点(S)

数据节点(S)

{ hello: “world” }

{ hello: “world” }

{ hello: “world” }{ hello: “world” }

选举

数据节点(P)

Page 13: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

• 支持事务的提交和回滚

• 集群使用二段提交模式

• 当前版本支持UR隔离级别

• 集合级别可指定强一致性或最终一致性级别

事务支持

Page 14: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

事务支持

db.cs.cl.insert({ key0: 0 })

db.transBegin()

db.cs.cl.insert({ key0: 1 })db.cs.cl.insert({ key0: 2 })db.cs.cl.update({ key0: 1 },

{ key1: 1 })

db.transRollback()

db.cs.cl.insert({ key1: 0 })db.transBegin()db.cs.cl.insert({ key1: 1 })db.cs.cl.insert({ key1: 2 })db.cs.cl.insert({ key1: 3 })db.transCommit()

{ key1: 0 }

{ key0: 0 }

{ key0: 1 }

{ key1: 1 }

{ key0: 2 }

{ key1: 2 }

{ key1: 3 }

{ key1: 1, key0: 1 }

Page 15: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

分布式事务机制• 二段提交

• 协调节点首先发起预提交

• 当所有数据节点响应成功后,进行统一提交

Coordinator

Worker Worker Worker

大家都ready了木

有?

俺okay了

我也ready了

木有问题,可以鸟

那咱们一起提交

搞定

搞定 搞定

Page 16: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

G1 G2 G3 G4 G5 G6

水平扩展

0-1364

1365-2730

2731-4095

0-682

683-1365

1366-2048

2048-2731

2732-3414

3415-4096

db.cs.cl.split(“G1”,”G4”,50)db.cs.cl.split(“G2”,”G5”,50)db.cs.cl.split(“G3”,”G6”,50)

Page 17: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

垂直扩展

My0101

20140201

20140101

MyHistory

db.cs.createCL(“My0101”)db.cs.MyHistory.attachCL(

“cs.My0101”,{UpBound:{date:”20140201”},LowBound:{date:”20140101”}}

)

My0201

20140301

20140201

My0301

20140401

20140301

My0401

20140501

20140401

My0501

20140601

20140501

db.cs.createCL(“My0201”)db.cs.MyHistory.attachCL(

“cs.My0201”,{UpBound:{date:”20140301”},LowBound:{date:”20140201”}}

)

db.cs.createCL(“My0301”)db.cs.MyHistory.attachCL(

“cs.My0301”,{UpBound:{date:”20140401”},LowBound:{date:”20140301”}}

)

Page 18: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

异地灾备

编目数据

数据数据

数据

数据数据

数据中心A(主)

编目数据

数据数据

数据

数据数据

数据中心B(从)

读写

只读

Page 19: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

• 命令行操作界面

– Javascript语法

• 全图形化界面部署

• 状态监控

• 数据操作

操作界面

Page 20: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

Agenda

Overview1

Usecase3

Highlighted Features2

Page 21: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

1.历史全量数据的利用

21

Page 22: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

现有的挑战• 数据量越来越大

– 各个业务系统的历史归档存在不同软件、硬件、版本的平台中

– 数据增量加速,现有系统不堪重负,数据维护越来越困难

• 半结构化数据越来越多

– 各个业务系统经过多年运行,交易明细数据版本繁多,数据结构不统一

– 不同的数据源不同的数据结构:结构化数据、半结构化数据、非结构化数据

• 业务实时性要求越来越强– 业务的查询实时性要求越来越高, 低成本的存储介质无法满足

实时性要求

– 主要归档在冷存储上,部分在线,任何对早期历史数据的查询都需要漫长的过程

• 各渠道业务系统为客户提供明细账历史查询和实时的回单打印

• 运营管理部对全量历史影像/票据进行“事后监督”

银行需求

• 交易流水全量数据2.9T(09年至今,近50亿条记录),目前每月增量2亿条

• 历史影像平台全量150T,以前放在光盘库无法在线查询

全量数据

能不能使用一个平台存储所有历史全量数据,同时满足现有SQL应用的复杂检索和快速查询?

Page 23: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

管理海量历史数据的挑战

1.业务表结构的历史变化问题

– 同一个业务系统每年的数据表结构都会变化,历史库要包容变化的数据

,统一进行查询、检索和分析

2.对于DBA来说历史数据要分类管理

– 时间序是最直观的管理方式

– 热点数据保证高性能,总体保持低成本

3. 简化调用方式,但是不同使用者需要不同的数据利用方式

– 数据的使用方式需要同时支持SQL, MapReduce(排序、wordcount等)、Spark

(内存数据加工)、Hive(简单分析)等主要手段

Page 24: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

解决业务表结构的历史变化问题灵活的数据模型JSON和时间序模型

• 为什么历史库需要使用半结构化存储

– 同一个业务系统每年的数据表结构都会变化,历史库要包容变化的数据,统一进行查询、检索和分析

– 很多业务系统的非结构化数据(文件类型)是与其描述数据分开存储的,在历史库中再分开的话也很难查找。

– 架构上看,历史归档系统最好不要与前端业务系统耦合过于紧密

– 业务系统的所有变更不需要立刻实时通知归档系统

– 历史数据需要时间序管理,方便DBA进行分优先级分配资源

Page 25: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

历史全量数据的用途1:用户流水实时查询

ECIF

柜面、网银、手机银行等渠道

DB2

SQL增删改

• 直销银行推动了用线上实时方式实现传统柜面的回单打印交易

• 读写分离,以X86低成本方式水平扩展来应对不断加速增长的数据存储和实时查询需求

• 全量数据同时供应查询和分析,分析时作为ODS的贴源层。

问题和目标

• 高扩展性和稳定性

• 50亿记录的实时查询性能<3s• 数据分析的接口

• 平滑过渡,不影响原有数据处理流程,对现有应用影响尽量

需求

• T+1 批量将DB2数据全量及增量导入Sequoia DB

• SDB对外提供SQL接口,可继续使用现有查询应用

实现方式批量同步

SQL查询

交易流水数据 六年的历史流水数据

网银/手机柜面

Page 26: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

历史全量数据的用途2:交易/交互历史的随机查询和分析

网银/渠道

信用卡

核心

……

实时或批处理任务

随机营销分析

客户接触历史

客户画像

历史数据的应用类型

优势

• 临时增加分析维度• 实时查询和分析• 保留数据细节• 支持非结构化存储• 降低开发成本

客户交易历史

客户交互历史

客服

信贷

Ad-hoc统计

Ad-hoc报表

历史数据来源

固定统计

固定报表

Page 27: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

历史全量数据的统一利用管理

历史全量数据管理平台

历史全量数据库

实时查询服务 批量检索服务随机定义查询 数据清洗

网银

理财

信贷

国际

基金

历史数据

当前数据

历史数据

当前数据

历史数据

当前数据

历史数据

当前数据

历史数据

当前数据

实时用户画像

反洗钱

审计/后督

SQL

微信/手机

批量导入

反欺诈

数据仓库和分析型应用

ODS/DSA – 面向主题、当前

DW – 面向主题、历史和汇总

DMDM

M/R

历史数据

当前数据

Hive ETL1 2 3 4

Page 28: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

历史数据平台的参考架构

数据服务

内部应用接口 随机查询数据质量开放数据接口 固定报表 随机统计分析

数据转换、数据整合

结构化、非结构化数据的统一存储 / 历史数据时间序管理

调度管理

数据采集、获取和导入数据

服务

技术

平台

数据

服务

功能

服务 批量分析

数据服务实时查询数据服务

历史数据查询服务

固定报表数据服务

数据质量查询服务

元数据查询服务

其它数据服务

交易流水接口服务

源系

统终

端应

| 数据库 | 文本文件 | XML文件 | 应用程序日志| 视频 | 音频 | 图片 | 票据扫描 |

数据安全管理

元数据管理

数据质量校验

Page 29: SequoiaDB(巨杉数据库) - 企业级NoSQL 技术简介 · PDF file• 支持事务 的提交和回滚 ... 分布式事务

提问