couchbase introduction - chinese

41
Couchbase- 端端端端 NoSQL 端端端端 曾曾– Couchbase 曾曾曾曾曾曾曾 [email protected]

Upload: vickie-zeng

Post on 04-Aug-2015

45 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Couchbase introduction - Chinese

Couchbase- 端到端的 NoSQL 解决方案

曾臻– Couchbase 解决方案架构师[email protected]

Page 2: Couchbase introduction - Chinese

核心技术产品概要

Page 3: Couchbase introduction - Chinese

©2014 Couchbase Inc.

Couchbase 提供了端到端的数据管理解决方案

3

高可用性的缓存 键值存储 文档数据库 嵌入式的移动数据库

数据同步功能

通用的平台能力,支持广泛的应用和用户案例

Enterprises often start with cache, then broaden usage to other apps and use cases

Page 4: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 4

核心能力

• 开发人员的易用性为中心 支持 JSON

数据的索引和查询 增量的 Map-Reduce 索引数据

更新

• 灵活的水平扩展 同一的节点类型,以及

Shared-nothing 架构 跨数据中心的数据复制 一键式的扩展能力

• 一致性下的高性能 内嵌的基于对象的分布式缓存层 细粒度的锁机制 哈希分区

• 高可用性 无须宕机的管理操作和升级操作 流式数据复制,机架感知能力 强大的集群监控能力( web

console , restful API ,及命令行)

Page 5: Couchbase introduction - Chinese

5©2014 Couchbase Inc.

不同的行业客户及互联网客户CommunicationsTechnology

Travel & Hospitality

Media & Entertainment

E-Commerce & Digital Advertising

Retail & Apparel

Games & GamingFinance & Business Services

Page 6: Couchbase introduction - Chinese

6©2014 Couchbase Inc.

用户案例总结

360 Degree Customer View

Profile managment

Catalog Fraud Detection

Content Management

Internet of Things

Digital Communicatio

n

Real Time Big Data

Mobile Application

s

Personalization

Page 7: Couchbase introduction - Chinese

核心技术概念

©2014 Couchbase, Inc.

Page 8: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 8

键值存储

• Couchbase 是一个键值文档数据库

• 键 - 支持长度最大为 256 字节的 UTF-8 字符串

• 值可以是 :

- 简单数据类型:字符 , 数字 , 日期 , 布尔型 , 以及二进制数据都可以被存储 – 上述数据都是以 Base64 编码的字符形式存储

- 复杂数据类型:字典 / 哈希 , 数组 / 列表 , 以 JSON 格式存储 ( 简单列表可以表达为由分隔符分割的字符串 )

- JSON 可以理解为特殊格式的字符串 - 包含自嵌套的简单以及复杂数据类型

- 可以没有明确要求的 Schema ,动态的更改文档结构,现在更新,同类型的文档可以包含完全不同的属性

Page 9: Couchbase introduction - Chinese

9

Couchbase 支持丰富数据类型的存储

Key-Value 存储 文档 存储

2014-06-23-10:15am : 75F

2014-06-23-11:30am : 77F

2014-06-23-02:00pm : 82F

0001:

{firstname: “Dipti”, lastname: “Borkar”, language: “English”, time_zone: “PST”, zip: 94403 }

键 - UTF-8 字符,最长 256 字节

值 – 可以使 0-20 兆字节 ( 推荐值的大小不超过 1 MB)©2014 Couchbase, Inc.

Page 10: Couchbase introduction - Chinese

10

可以表达复杂的对象和数据结构 非常简单的表达 , 轻量 , 结构紧凑 , 可读性高 通用 API 的返回类型

Facebook, Twitter, 等大型 SNS 都返回 JSON

基于 Javascript

Couchbase 支持原生的存储 JSON

序列化 / 反序列化十分快速

JSON 数据格式的优势

©2014 Couchbase, Inc.

Page 11: Couchbase introduction - Chinese

11

文档的存储和获取

Couchbase 集群

服务器节点

用户 / 应用 数据

存在于

Data Buckets

文档读出 / 写入

组成了

客户端

服务器

动态扩展

基于哈希分区

©2014 Couchbase, Inc.

Page 12: Couchbase introduction - Chinese

12

User Objectstring uid

string firstname

string lastname

int age

array favorite_colors

string email

u::[email protected]{ “uid”: 123456,

“firstname”: “John”,“lastname”: “Smith”,“age”: 22,“favorite_colors”: [“blue”, “black”],“email”: “[email protected]

}

User Objectstring uid

string firstname

string lastname

int age

array favorite_colors

string email

u::[email protected]{ “uid”: 123456,

“firstname”: “John”,“lastname”: “Smith”,“age”: 22,“favorite_colors”: [“blue”, “black”],“email”: “[email protected]

}

insert()/replace()/upsert()

get()

对象到 JSON 的序列化和反序列化

©2014 Couchbase, Inc.

Page 13: Couchbase introduction - Chinese

演示一 数据建模 Data model

©2014 Couchbase, Inc.

Page 14: Couchbase introduction - Chinese

核心架构同一的节点类型

Page 15: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 15

所有服务器上安装同样节点

Hea

rtbe

at

Pro

cess

mon

itor

Glo

bal s

ingl

eton

sup

ervi

sor

Con

figur

atio

n m

anag

er

on each node

Reb

alan

ce o

rche

stra

tor

Nod

e he

alth

mon

itor

one per clusa

vBuc

ket

stat

e an

d re

plic

atio

n m

anag

er

http

RE

ST

man

agem

ent

AP

I/W

eb U

I

HTTP8091

Erlang port mapper4369

Distributed Erlang21100 - 21199

Erlang/OTP

storage interface

Couchbase EP Engine

11210Memcapable 2.0

Moxi

11211Memcapable 1.0

Memcached

Persistence Layer

8092Query API

Qu

ery

En

gin

e

Data Manager Cluster Manager

Page 16: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 16

节点 - 写入操作

33 2Managed Cache

Dis

k Q

ueue

Disk

Replication Queue

App Server

节点间 - 内存到内存的数据复制

Doc

Doc Doc

Page 17: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 17

Managed Cache

Disk

节点 - 读取操作

Managed Cache

Doc 1

Get Doc 1

Doc 1Doc 1

App Server

Dis

k Q

ueue

Replication Queue

节点间 - 内存到内存的数据复制

Page 18: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 18

Disk

Managed Cache

节点 - 缓存删除

Doc 1

Doc 1

Doc 2Doc 3Doc 4Doc 5Doc 6

Doc 2Doc 3Doc 4Doc 5Doc 6App Server

Dis

k Q

ueue

Replication Queue

节点间 - 内存到内存的数据复制

Page 19: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 19

节点 - 缓存失效

33 2

Dis

k Q

ueue

Disk

Replication Queue

App Server

节点间 - 内存到内存的数据复制

Doc 1

Doc 2Doc 3Doc 4Doc 5Doc 6

Doc 2Doc 3Doc 4Doc 5Doc 6

Doc 1

Doc 1Doc 1

Managed Cache

Get Doc 1

Page 20: Couchbase introduction - Chinese

集群层操作

©2014 Couchbase, Inc.

Page 21: Couchbase introduction - Chinese

21

每个 bucket 中都包含活跃的和备份的数据集 每个数据集(活跃 / 备份) 都包含 1024 个分区 (vBuckets) 文档的读取和写入等操作与分区 vBuckets 进行交互

相同的文档 ID ,每次都被哈希到相同的分区 分区 vBucket 可以在节点之间移动 (rebalance) vBucket 和物理服务器之间的对应关系存储在 cluster map 中 每个 virtual bucket 包含整个数据集的 1/1024

自动分区 – Bucket and vBuckets

vB

Data buckets

vB

1 ….. 1024

1024 个逻辑分区 virtual bucket

©2014 Couchbase, Inc.

Page 22: Couchbase introduction - Chinese

©2014 Couchbase Inc.

Cluster Map

Page 23: Couchbase introduction - Chinese

©2014 Couchbase Inc.

Cluster Map

Page 24: Couchbase introduction - Chinese

©2014 Couchbase Inc.

Cluster Map – 新增两个节点

Page 25: Couchbase introduction - Chinese

25

read/write/update

Active

SERVER 1

Active

SERVER 2

Active

SERVER 3

APP SERVER 1

COUCHBASE Client Library

CLUSTER MAP

COUCHBASE Client Library

CLUSTER MAP

APP SERVER 2

Shard 5

Shard 2

Shard 9

Shard

Shard

Shard

Shard 4

Shard 7

Shard 8

Shard

Shard

Shard

Shard 1

Shard 3

Shard 6

Shard

Shard

Shard

Replica Replica Replica

Shard 4

Shard 1

Shard 8

Shard

Shard

Shard

Shard 6

Shard 3

Shard 2

Shard

Shard

Shard

Shard 7

Shard 9

Shard 5

Shard

Shard

Shard

集群层操作

• 数据均匀的分布在每个节点上

• 每个节点即包含活跃数据也包含备份数据 在同一时间,数据只有一个拷贝处于

active 状态

• 客户端 library 提供给应用与数据库交互的接口

• Cluster map 记录了 1024 个vbuket 和节点的映射关系 应用无需操心任何与数据分区和数据寻

址相关的工作

• 应用负责读,写,更新数据

• 多个应用可以同时访问相同的数据

©2014 Couchbase, Inc.

Page 26: Couchbase introduction - Chinese

26

SERVER 4 SERVER 5

Replica

Active

Replica

Active

read/write/update

APP SERVER 1

COUCHBASE Client Library

CLUSTER MAP

COUCHBASE Client Library

CLUSTER MAP

APP SERVER 2

Active

SERVER 1

Shard 9

Shard

Replica

Shard 4

Shard 1

Shard 8

Shard

Shard

Shard

Active

SERVER 2

Shard 8

Shard

Replica

Shard 6

Shard 3

Shard 2

Shard

Shard

Shard

Active

SERVER 3

Shard 6

Shard

Replica

Shard 7

Shard 9

Shard 5

Shard

Shard

Shard

read/write/update

Shard 5

Shard 2

Shard

Shard

Shard 4

Shard 7

Shard

Shard

Shard 1

Shard 3

Shard

Shard

增加节点

• 一键式的扩展性,在集群中增加两个服务器

• 随着节点容量的增加,文档数据自动的在节点间进行重分布 平均分布 最小量的节点间数据移动

• 数据重分布完成后,更新 Cluster map

• 应用的请求平均分布在新的处理能力的集群上

©2014 Couchbase, Inc.

Page 27: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 27

故障恢复

SERVER 4 SERVER 5

Replica

Active

Replica

Active

App Server 1

COUCHBASE Client Library

CLUSTER MAP

COUCHBASE Client Library

CLUSTER MAP

App Server 2

Active

SERVER 1

Shard 5

Shard 2

Shard 9Shard

Shard

Shard

Replica

Shard 4

Shard 1

Shard 8Shard

Shard

Shard

Active

SERVER 2

Shard 4

Shard 7 Shard 8

Shard

Shard Shard

Replica

Shard 6

Shard 3 Shard 2

Shard

Shard Shard

Active

SERVER 3

Shard 1

Shard 3

Shard 6Shard

Shard

Shard

Replica

Shard 7

Shard 9

Shard 5Shard

Shard

Shard

• 应用访问数据分片

• Server3 发生故障,发送到Server 3 的请求失败

• 集群侦测到服务器失效o 将其他节点的备份数据分

区编程活跃数据分区o 更新 cluster map

• 请求被路由到可用的节点

• 自动故障恢复后,需要进行数据的重分布

Shard 1 Shard 3

Shard

Page 28: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 28

跨数据中心复制 (XDCR)

• 持续的从源端集群向目标端集群进行集群间数据复制

• 支持单向或者双向的数据操作

• 任一集群都支持应用的读写操作 (active – active 复制 )

• 复制的吞吐量可以线性扩展

• 易于管理:通过 console , Rest ,或者命令行 CLI

Page 29: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 29

跨数据中心复制 (XDCR)

单向复制

• 热备份 / 灾难恢复• 开发 / 测试 环境的拷贝

• 复制到索引集群• 集成 Solr , ElasticSearch 分布式文本检索引擎

• 定制化集成

Page 30: Couchbase introduction - Chinese

©2014 Couchbase, Inc. 30

跨数据中心复制 (XDCR)

双向复制

• 多个活跃集群• 为全球性应用提供 Data locality• 灾难恢复

Page 31: Couchbase introduction - Chinese

31

33 2

数据写入后的跨数据中心复制

2

Managed Cache

Dis

k Q

ueue

Disk

Replication Queue

App Server

Couchbase Server Node

Doc 1

Doc 1

XDCR Queue

Doc 1Doc 1

(New in 3.0) 内存到内存的跨级群节点数据复制节点间 - 内存到内存的

数据复制

©2014 Couchbase, Inc.

Page 32: Couchbase introduction - Chinese

©2014 Couchbase, Inc.©2014 Couchbase Inc.

数据视图 View

32

• 视图和数据查询– 分布式的索引和查询– Secondary indexes– 基于 index 的灵活查询

• 增量的索引更新– 分布式的实时数据分析– 只有更新的数据进行 view engine

• 全文检索 Full Text Search– 和 ElasticSearch / Solr 的集成– 使用 XDCR 的能力

Page 33: Couchbase introduction - Chinese

33©2014 Couchbase Inc.

33 2Managed Cache

Dis

k Q

ueue

Disk

Replication Queue

应用服务器

Couchbase Server Node

Doc 1

Doc 1

节点间 - 内存到内存的数据复制

View engine Doc 1Doc 1

数据写入后的索引视图构建

Page 34: Couchbase introduction - Chinese

©2014 Couchbase, Inc.©2014 Couchbase Inc.

Active

SERVER 1

Shard 5

Shard 2

Shard

Shard

Replica

Shard 4

Shard 1

Shard

Shard

Shard 1

Active

SERVER 3

Shard 5

Shard 2

Shard

Shard

Replica

Shard 4

Shard 1

Shard

Shard

Shard 1

Active

SERVER 2

Shard 5

Shard 2

Shard

Shard

Replica

Shard 4

Shard 1

Shard

Shard

Shard 1

APP SERVER 1COUCHBASE Client

LibraryCLUSTER

MAP

COUCHBASE Client Library

CLUSTER MAP

APP SERVER 2

Couchbase Server 架构 – 视图

34

• 分布式的索引视图

• 支持海量的数据集

• 并行的索引构建

• 每个节点的数据对应自己的索引视图

• 查询合并结果,返回客户端

Page 35: Couchbase introduction - Chinese

演示二 集群操作 & XDCR 演示 & 视图查询

©2014 Couchbase, Inc.

Page 36: Couchbase introduction - Chinese

SQL for Document (开发者评估版)

下一代 , NoSQL 查询语言 类 SQL : SELECT * FROM WHERE/LIKE/JOIN/GROUP/etc, CREATE INDEX 针对 JSON 的扩展,用以支持嵌套的和层次型的数据结构 支持索引视图,和新的 secondary 索引 Query (DQL), Manipulation (DML), Description (DDL) ODBC/JDBC drivers – 由 simba 提供

整合到 Couchbase 4.0 (目前官网上有开发者评估版下载) : 集成安装 多线程,无状态的查询和索引组件 基于 Couchbase 高性能,高可扩展性的

Page 37: Couchbase introduction - Chinese

Couchbase 中的数据查询

表达式查询语言Java script 视图 & spatial views 使用增加维护的 Map Reduce 计算 对于聚合操作的预构建和计算 适合分析,报表以及大数据等用力场景

SQL for Document SQL-Like 构建 secondary indexes 极其适合即席查询和数据分析查询

Page 38: Couchbase introduction - Chinese

©2014 Couchbase, Inc.

SQL For Document 的拓扑

38

Client SDK

App

Index

CB Node

ODBC / JDBC

App

Query

Manager

Data

Index

CB Node

Query

Manager

Data

Index

CB Node

Query

Manager

Data

Index

CB Node

Query

Manager

Data

Index

CB Node

Query

Manager

Data

Index

CB Node

Query

Manager

Data

Connectivity & ecosystem

Node services & independent scaling

Scale-out query throughput

ODBC / JDBC

BI Tool

Page 39: Couchbase introduction - Chinese

©2014 Couchbase, Inc.

查询过程

39

Index Nodes

Clients

Data Nodes

(1) Request (6) Response

Query Nodes

(2) Plan: Query to execution plan (5) Evaluate: Documents to results

(3) Scan: Attributes to keys (4) Fetch: Keys to documents

Page 40: Couchbase introduction - Chinese

©2014 Couchbase, Inc.

在查询服务内部的流程

40

Index

Client

Data

FetchScanParse Plan Join FilterPre-Aggregate

Offset Limit Project

Data-parallel — Query latency benefits from N cores

Memory-bound

Pluggable architecture — datastore, index, client, …

Request Response

SortAggregate

Page 41: Couchbase introduction - Chinese

演示三 Couchbase SQL for Document

©2014 Couchbase, Inc.