基于内存的nosql分布式数据库技术研究项目 选型与测评分析

21
LOGO 基基基基基 NoSQL 基基基基基基基基基基基基 选选选选选选选 基基基基基基基基基 基基基 基基

Upload: dorian-garrison

Post on 30-Dec-2015

109 views

Category:

Documents


9 download

DESCRIPTION

基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析. 中科大移动云计算系统实验室 孟宁. 项目目标. 本项目需要研究一种新的快速存储与访问机制,改善内存使用的现状,同时要保证软件架构上不做大的改动,性能没有明显下降。 具体到本阶段的目标 在保留当前函数调用的基础上,用NoSQL数据库替换现有SQL数据库 普通数据库改造成NoSQL数据库需要有15倍[ 如果该指标无法达到,必须通过理论分析给出指标无法达到的原因;]的效率提升. 数据库调研. 数据库选型. SQLite作为基准数据库 Tokyo Cabinet/Tokyo Tyrant - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

基于内存的 NoSQL 分布式数据库技术研究项目

选型与测评分析中科大移动云计算系统实验室

孟宁

Page 2: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 2

项目目标

本项目需要研究一种新的快速存储与访问机制,改善内存使用的现状,同时要保证软件架构上不做大的改动,性能没有明显下降。

具体到本阶段的目标 在保留当前函数调用的基础上,用 NoSQL 数据库替换现有 SQ

L 数据库 普通数据库改造成 NoSQL 数据库需要有 15 倍 [ 如果该指标无

法达到,必须通过理论分析给出指标无法达到的原因; ] 的效率提升

Page 3: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 3

数据库调研

Page 4: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 4

数据库选型

SQLite 作为基准数据库 Tokyo Cabinet/Tokyo Tyrant

Hash Database - O(1) time complexity fixed-length Database ( array of fixed-lengt

h elements ) - O(1) time complexity Client/Server mode

Hamsterdb Hamsterdb 相比性能远远超过 BerkeleyDB

Redis Redis 是相比同为 C/S 架构的 Memcachedb 性能更好

Page 5: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 5

测试用例设计

读性能测试 随机读表 (table_id) 中某一行 (row_id) 的性能 重复读表 (table_id) 中某一行 (row_id) 的性能 顺序读取表 k 中若干行 (row_range) 的性能 级联查找的效率( Level 3,Factor 10)

写性能测试 随机写(更新)表 (table_id) 中某一行 (row_id) 的性能 重复写(更新)表 (table_id) 中某一行 (row_id) 的性能 顺序写 ( 更新 ) 表 k 中若干行 (row_range) 的性能

不同读写比例的性能测试 读写混合性能测试(从 100 万 :1 到 1:1 的读写)

资源占有测试 内存资源占有测试 CPU 资源占有测试

Page 6: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 6

测试数据库的规模

要求:数据库的规模是 1000 张表,每个表最大 20000 个记录,每条记录最大 1000 个字节,每个表的关键字小于10 个,但整个数据库的大小却只有 50M 左右。

因此,按照当前华为应用中控制器数据量为 50MB 左右的量级来进行设计,以一个较大的上界- 200MB 左右来初始化数据库。共 100 张表,每表 5000 行,每行依旧保持400 字节规模。较小的数据规模有利于更加准确的测试在当前场景(非极端场景)下哪种数据库更适合。

Page 7: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 7

测试系统所在的软硬件环境

Linux 单机, CPU是一块 2核 X86芯片,每个核有两个超线程。 Fedora13, x86_64, GCC 4.45。 6G内存。

SQLite(version 3.7.13) Tokyo Cabinet (version 1.4.27) / Tokyo Tyrant

(version 1.1.41) Hamsterdb Embedded Storage (version 2.0.3) Redis ( redis-v2.4.13 、 antirez-hiredis-v0.10.

1-30)

Page 8: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 8

测试流程TokyoCabinet(tc&tcf) Testing

HamsterDB Testing

TokyoTyrant C/S Testing

Redis C/S Testing

SQLi teDB Testing

pick up the resul t data*.time as inputgenerate photo*.png as output

backup *.time *.data *.pnggenerate test-data-`date

+%y_%m_%d̀ .tar.gz

Databases Memory Testing

source build.env

make clean

make

make test

Page 9: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 9

主要测试软件架构设计

Page 10: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 10

基准数据库 SQLite 的优化

SQLite 的查询性能在 1w/s 左右,通过优化之后查询性能达 25w/s 左右。

具体优化措施: 取消持久化。在运行 SQLite 时,指定在内存中创建数据库

简单及常用的读、写、更新 SQL语句在创建表时就预先构造和编译,优化掉了 SQL语句的处理和编译时间

Page 11: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 11

基本测试结果对比

Page 12: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 12

随机读性能的测试对比

1.结果显示 tc 性能要比优化后的 SQLite 快 10 倍多,其中 tcf(Array)略快于 tc(Hash)2.C/S 模式的读性能仅有优化后的 SQLite 的 1/6 左右,但对于我们下一步做分布式是个参考

Page 13: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 13

顺序读的性能对比

Page 14: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 14

随机写(更新)性能对比

Page 15: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 15

顺序写(更新)性能对比

Page 16: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 16

反复查找同一条记录的性能对比

Page 17: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 17

反复更新同一条记录的性能对比

Page 18: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 18

不同读写比例的性能数据对比

Page 19: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 19

内存资源占有率对比

Page 20: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

LOGO

Page 20

结论及下一阶段建议

结论: Tokyo Cabinet 的性能最优完全达到我们的要求 由于我们的应用场景与一般分布式存储的应用场景在架构上有很大不

同、读性能要求又特别高、单节点上读取的数据集比较集中等特点,目前没有发现适用于我们的应用场景的分布式方案,但分布式的思想可以借鉴。

下一步工作的建议: 1、适合以 TC 为基础来实现共享内存方式的改造 2、以 TC 为存储引擎独立设计分布式解决方案

Page 21: 基于内存的NoSQL分布式数据库技术研究项目 选型与测评分析

感谢各位

孟宁中科大移动云计算系统实验室

[email protected]