View
45
Download
0
Category
Preview:
Citation preview
Couchbase- 端到端的 NoSQL 解决方案
曾臻– Couchbase 解决方案架构师vickie@couchbase.com
核心技术产品概要
©2014 Couchbase Inc.
Couchbase 提供了端到端的数据管理解决方案
3
高可用性的缓存 键值存储 文档数据库 嵌入式的移动数据库
数据同步功能
通用的平台能力,支持广泛的应用和用户案例
Enterprises often start with cache, then broaden usage to other apps and use cases
©2014 Couchbase, Inc. 4
核心能力
• 开发人员的易用性为中心 支持 JSON
数据的索引和查询 增量的 Map-Reduce 索引数据
更新
• 灵活的水平扩展 同一的节点类型,以及
Shared-nothing 架构 跨数据中心的数据复制 一键式的扩展能力
• 一致性下的高性能 内嵌的基于对象的分布式缓存层 细粒度的锁机制 哈希分区
• 高可用性 无须宕机的管理操作和升级操作 流式数据复制,机架感知能力 强大的集群监控能力( web
console , restful API ,及命令行)
5©2014 Couchbase Inc.
不同的行业客户及互联网客户CommunicationsTechnology
Travel & Hospitality
Media & Entertainment
E-Commerce & Digital Advertising
Retail & Apparel
Games & GamingFinance & Business Services
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
核心技术概念
©2014 Couchbase, Inc.
©2014 Couchbase, Inc. 8
键值存储
• Couchbase 是一个键值文档数据库
• 键 - 支持长度最大为 256 字节的 UTF-8 字符串
• 值可以是 :
- 简单数据类型:字符 , 数字 , 日期 , 布尔型 , 以及二进制数据都可以被存储 – 上述数据都是以 Base64 编码的字符形式存储
- 复杂数据类型:字典 / 哈希 , 数组 / 列表 , 以 JSON 格式存储 ( 简单列表可以表达为由分隔符分割的字符串 )
- JSON 可以理解为特殊格式的字符串 - 包含自嵌套的简单以及复杂数据类型
- 可以没有明确要求的 Schema ,动态的更改文档结构,现在更新,同类型的文档可以包含完全不同的属性
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.
10
可以表达复杂的对象和数据结构 非常简单的表达 , 轻量 , 结构紧凑 , 可读性高 通用 API 的返回类型
Facebook, Twitter, 等大型 SNS 都返回 JSON
基于 Javascript
Couchbase 支持原生的存储 JSON
序列化 / 反序列化十分快速
JSON 数据格式的优势
©2014 Couchbase, Inc.
11
文档的存储和获取
Couchbase 集群
服务器节点
用户 / 应用 数据
存在于
Data Buckets
文档读出 / 写入
组成了
客户端
服务器
动态扩展
基于哈希分区
©2014 Couchbase, Inc.
12
User Objectstring uid
string firstname
string lastname
int age
array favorite_colors
string email
u::john@couchbase.com{ “uid”: 123456,
“firstname”: “John”,“lastname”: “Smith”,“age”: 22,“favorite_colors”: [“blue”, “black”],“email”: “john@couchbase.com”
}
User Objectstring uid
string firstname
string lastname
int age
array favorite_colors
string email
u::john@couchbase.com{ “uid”: 123456,
“firstname”: “John”,“lastname”: “Smith”,“age”: 22,“favorite_colors”: [“blue”, “black”],“email”: “john@couchbase.com”
}
insert()/replace()/upsert()
get()
对象到 JSON 的序列化和反序列化
©2014 Couchbase, Inc.
演示一 数据建模 Data model
©2014 Couchbase, Inc.
核心架构同一的节点类型
©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
©2014 Couchbase, Inc. 16
节点 - 写入操作
33 2Managed Cache
Dis
k Q
ueue
Disk
Replication Queue
App Server
节点间 - 内存到内存的数据复制
Doc
Doc Doc
©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
节点间 - 内存到内存的数据复制
©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
节点间 - 内存到内存的数据复制
©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
集群层操作
©2014 Couchbase, Inc.
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.
©2014 Couchbase Inc.
Cluster Map
©2014 Couchbase Inc.
Cluster Map
©2014 Couchbase Inc.
Cluster Map – 新增两个节点
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.
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.
©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
©2014 Couchbase, Inc. 28
跨数据中心复制 (XDCR)
• 持续的从源端集群向目标端集群进行集群间数据复制
• 支持单向或者双向的数据操作
• 任一集群都支持应用的读写操作 (active – active 复制 )
• 复制的吞吐量可以线性扩展
• 易于管理:通过 console , Rest ,或者命令行 CLI
©2014 Couchbase, Inc. 29
跨数据中心复制 (XDCR)
单向复制
• 热备份 / 灾难恢复• 开发 / 测试 环境的拷贝
• 复制到索引集群• 集成 Solr , ElasticSearch 分布式文本检索引擎
• 定制化集成
©2014 Couchbase, Inc. 30
跨数据中心复制 (XDCR)
双向复制
• 多个活跃集群• 为全球性应用提供 Data locality• 灾难恢复
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.
©2014 Couchbase, Inc.©2014 Couchbase Inc.
数据视图 View
32
• 视图和数据查询– 分布式的索引和查询– Secondary indexes– 基于 index 的灵活查询
• 增量的索引更新– 分布式的实时数据分析– 只有更新的数据进行 view engine
• 全文检索 Full Text Search– 和 ElasticSearch / Solr 的集成– 使用 XDCR 的能力
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
数据写入后的索引视图构建
©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
• 分布式的索引视图
• 支持海量的数据集
• 并行的索引构建
• 每个节点的数据对应自己的索引视图
• 查询合并结果,返回客户端
演示二 集群操作 & XDCR 演示 & 视图查询
©2014 Couchbase, Inc.
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 高性能,高可扩展性的
Couchbase 中的数据查询
表达式查询语言Java script 视图 & spatial views 使用增加维护的 Map Reduce 计算 对于聚合操作的预构建和计算 适合分析,报表以及大数据等用力场景
SQL for Document SQL-Like 构建 secondary indexes 极其适合即席查询和数据分析查询
©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
©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
©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
演示三 Couchbase SQL for Document
©2014 Couchbase, Inc.
Recommended