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