EMS典型应用

Report
支持高性能模糊检索的内存数据库EMS
百度 商务搜索部
罗立刚
2011-7-05
内容
2
1
EMS简介
2
EMS架构和工作原理
3
EMS性能测试
4
EMS典型应用
5
5
EMS下一步工作
5
EMS的定义
EMS: Extreme Mirror System
EMS针对物理内存而优化的应用层内存镜像数据库,
具有以下特点:
–支持从异构数据源实时同步数据
–支持个性化的数据镜像
–支持定制化的索引结构
–支持SQL-LIKE的更新和查询
–极高的响应速度
3
EMS产生的背景
高速聚集的海量信息
互联网的快速发展
信息服务
遇到瓶颈
需要新型数据
库管理系统
快速增长的用户群
数据库系统处理能力不足
快速处理海量信息
极高的并发访问能力
满足大量并发访问
极强的业务定制能力
信息管理系统
4
磁盘数据库管理系统
内存数据库管理系统
传统数据库查找数据的方式
Application
Determine Disk Address of Desired Record
SQL
IPC
Query Optimizer &
Executor
Table# Page#
Send buffer to
application (via IPC)
Buffer Tool
Hash
Function
Linked Lists
Into Buffers
Copy Row to
Private Buffer
Linked Lists
Into Buffers
Data
Data
Page
Page
5
Assuming the
Page is Already in
Memory…
Locate Page
Pointer Via
Hashing and
Linear Search
内存数据库查找数据的方式
Application
SQL
Copies data to
application buffers
Data Store
6
Determine Memory Address of Desired Record
Query Optimizer &
Executor
Memory-Resident Database
The full database
is preloaded from
disk to memory
Memory Address
内容
7
1
EMS简介
22
EMS架构和工作原理
3
EMS性能测试
4
EMS典型应用
5
5
EMS下一步工作
5
EMS 系统架构
公共数据源
mysql 1
armor
mysql 2
……
replicate
上游同步管理
数据处理
业务逻辑so
监控管理
下游同步管理
update
本地数据镜像
请求解析
数据和表管理
索引管理
业务系统
8
ZCache
Memcache
BROKER
高版本MySQL向低版本复制
跨数据库系统的复制
支持多主库向单台Slave的复制
支持数据触发,用户可对数据增量进行预处理,代替
数据库触发器
9
STORAGE
 命令服务:创建表、删除表、dump表、
load表、查看表信息、更新表状态(启
动、停止更新、检索服务等),支持动
态加载可向storage发送命令请求的白名
单ip列表。
 更新服务:插入表记录、删除表记录、更新表记录,支持
动态加载可向storage发送更新请求的白名单列表。
 检索服务:对某列、某几列的精确、范围、模糊查找,及对
结果的order by、limit等。
 监控服务:动态监控遵循《动态监控协议规范 [AMPv1]》,
监控系统运行状况。
10
BROKER工作原理
binlog 同步
socket
检查系统状态
(是否停止了同步,
或修改了同步点)
read
接收 binlog
inrelay-log
写入
in-relay-log
write
binlog 同步线程
select
socket
mysql 上游
读取一条
binlog
select *
解析 binlog
表、字段筛选
将结果转换为
insert 增量
上
游
同
步
data reset 回调函数
提交中间数据
binlog 解析线程
outrelay-log
检查系统状态
(是否停止了同步,
或修改了同步点)
mcpack
write
mcpack
read
数据格式转换、
执行 .so 中的用户业
务逻辑处理
读取一个 mcpack
将处理后的 mcpack
写入 out-relay-log
下
游
更
新
转换为下游的格式
对下游执行更新操作
下游更新线程
11
数
据
处
理
update socket
ems-storage 下游
STORAGE工作原理
外部请求
解析模块(解析请求、合法性判断、组装响应包等)
更新、
查找
创建、
删除表
TableManager
(创建、删除表、更改
表状态等)
Table
(Dump、load、更新、查询api逻辑实现等)
MetaData:
Field_1
Mem table:
BlockManager
Field_2
Field_3
Field_4
Util 工具类
辅助存储类
field_value,result_t等
辅助结构
……
hash_functor
其他……
cmp_functor
调用、返回
Field
(列名称、列类型、默认值、
所在记录偏移量、索引信
息、读取/填充接口等)
索引部分
BlockManager
Block实例
Blocklist
T T T
存储、管理记录
offset(等同记录
指针)
索引接口
Block
element
element
element
一般索引
模糊索引
……
Block实例
12
T T T
管理、存储记录
freelist
element
element
element
……
基础索引接口
Btree
Value存储类型接口
Phashmap
SingleValue
List
SortedList
Ext_vector
系统限制
基于MYSQL5.1 行复制协议
同步的更新指令是幂等操作
storage不支持联表查询
storage不支持事务
13
内容
14
1
EMS简介
22
EMS架构和工作原理
3
EMS性能测试
4
EMS典型应用
5
5
EMS下一步工作
5
性能测试条件
 所有测试均基于如下表结构进行:
CREATE TABLE `wordinfo` (
`adid` int(10) unsigned NOT NULL,
`unitid` int(10) unsigned NOT NULL,
`planid` int(10) unsigned NOT NULL,
`userid` int(10) unsigned NOT NULL,
`keyword` char(40) character set gbk collate gbk_bin NOT NULL)’
 Storage主程序测试:
内存:64G
CPU: 8核 Intel(R) Xeon(R) CPU 2.40GHz
 针对 adid + userid +keyword 列建立hashmap索引
15
性能测试结果
broker每秒处理增量4w行
Like操作是mysql的1000倍
场景
插入
检索
逐条插入
1200/s
winfoid=X(254154638/254154974)
9000/s
Userid=1163904
and keyword like “鲜花”
4600/s
keyword like “尼龙”
16
性能数据
170/s
性能测试详表
功能点
load
dump
insert
update
remove
Select
17
场景
加载wordinfo导出表2亿+记录
Dump 2亿+记录
从wordinfo表导 出数据 选取前 100w
行,逐行插入。插入前storage已load
大约2亿+ 记录
性能指标
14.2w行/s 内存:
50w 行/s
RTT / 长连接 单线程
10线程
RTT=0
6400/s
21000/s
RTT=0.5ms
1250/s
6000/s
从wordinfo表导 出数据 选取前 100w RTT / 长连 单线程
行,逐行更新planid与unitid字段。更 接
RTT=0
6300/s
新前storage已load 大约2亿+ 记录
RTT=0.5ms 1460/s
10线程
从wordinfo表导 出数据 选取前 100w RTT/长连接 单线程
行,逐行删除入。删除入前storage
RTT=0
3000/s
已load 大约2亿+ 记录
RTT=0.5ms 1300/s
10线程
随机选取usesrid 与 keyword,进行如 RTT / 短连接
下语义查询:
Select * from wordinfo where userid=X RTT=0
and keyword like W
RTT=0.5ms
24000/s
13800/s
3500/s
5000/s
多线程
1000+/s 返 回
100+记录
1000+/s 返 回
100+记录
内容
18
1
EMS简介
22
EMS架构和工作原理
3
EMS性能测试
4
EMS典型应用
5
5
EMS下一步工作
5
EMS典型应用
 联表映射
 应用场景:用户中心“通用用户列表”
–按同一主键多表合并,将不同数据库中的表复制到同一数据库中,
实现跨库联表
UserAll
user1
userid
userid
user2
name
userid
user3
groupid
provid
userid
…
cityid
clk
tradeid
show
…
sum
…
name
groupid
provid
cityid
tradeid
clk
show
sum
19
EMS典型应用
 异构的数据表复制,提供个性化的数据镜像
 应用场景:
–凤巢系统,关键词推荐,百度说吧,CRM等
ADINFO
FCDB
adid
adid
userid
adddes
keyword
Mysql_0
Mysql_1
armor
adurl
…
…
BROKER
ADINFO_mirro
adid
userid
keyword
addes
20
STORAGE
Userid: 一般索引
Keyword:hashmap索引
内容
21
1
EMS简介
2
EMS架构和工作原理
3
EMS性能测试
4
EMS典型应用
5
5
EMS下一步工作
5
EMS下一步工作
 集群的支持
 ACID的支持
 持久化支持
22
Q&A
THANKS
23

similar documents