基于内存的NoSQL分布式数据库技术研究项目项目总结
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LOGO
根据系统对读性能的极端要求,专门设计了指针数组方式的环形空间, 以hash值为下表的指针指向数据节点信息,保证分布式策略以O(1) 复杂度执行。
Page 14
服务器并发处理
epoll线程负责监听所有套接字描述符 任务线程读写任务处理 线程间采用事件(信号量)+消息队列方式通信
LOGO
一、选型与测评分析 二、板内改造与测评分析
板内共享内存、板内分布式、缓存方式的设计与实现,及其测评分析
三、ConfigDB分布式数据库的设计与实现
Page 2
一、选型与测评分析
数据库调研 数据库选型 测评方案设计 测评系统的设计与实现 测试结果的对比分析
LOGO
Page 3
数据库调研
Page 16
感谢各位
孟宁 中科大移动云计算系统实验室
mengning@ustc.edu.cn
完全自主设计了一套Data-Grid模式的分布式数据库系统(约4000行C代 码),其中实现了一种基于一致性Hash的分布式节点管理策略,使其达 到了O(1)节点查找性能;另外还实现了基于epoll和多线程方式的服务 器并发处理策略。
Leabharlann Baidu 项目结论
本项目按计划探索了在各种条件下的数据库读性能的极限及其影响因素, 顺利完成了研究任务。
LOGO
Page 4
主要测试软件架构设计
LOGO
Page 5
基本测试结果对比
LOGO
Page 6
二、板内改造与测评分析
共享内存方式 板内分布式方式 缓存方式 测评与对比
LOGO
Page 7
共享内存方式实现方案和测试方案
LOGO
采用mmap方式实现共享内存方案,将板内所有进程 通过mmap方式共享同一个数据库,每个单板的进程 数目达到32个;主要进行了基本读写性能测试。
Page 8
板内分布式实现方案和测试方案
LOGO
采用分布式算法将板内所有进程构成一张全局表,每个 单板的进程数目可以达到N个(最大32个),每个进程内存 中存有1/N部分数据;重点测试各种读性能。
分布式算法采用一致性哈希算法将数据随机分布到各节 点上,当业务进程访问某个数据时,根据数据的Key计算 出该数据存储在具体哪个节点,直接到该节点读取数据 即可。
Page 15
总结
LOGO
项目的主要产出
完全自主设计了一套针对KV NoSQL数据库的自动化测评软件系统(约 5000行C/ShellScript等代码),良好的分层软件架构保证了良好的扩展 性,针对目前的测试模型可以全自动生成柱状对比图。
对板内共享内存的局限、板内分布式和缓存技术做了大量测评分析,产 出了一组有参考价值的数据。其中探索了缓存淘汰技术的适用性和局限 性。
Page 9
进程缓存方式
LOGO
采用缓存机制将通过C/S方式读到的数据缓存到 本地进程,当缓存占满时随机淘汰部分数据。
利用缓存机制我们对不同的缓存空间大小 (100%-10%)和读取的数据范围进行测试 (10%-100%),同时每次测试我们先进行了初 始化,也就是缓存数据的过程,然后进行实际测 试。
LOGO
基于内存的NoSQL分布式数据库技术研究项目
项目总结
中科大移动云计算系统实验室 孟宁
项目目标
LOGO
本项目需要研究一种新的快速存储与访问机制,改善内存 使用的现状,同时要保证软件架构上不做大的改动,性能 没有明显下降。
具体目标
在保留当前函数调用的基础上,用NoSQL数据库替换现有SQL 数据库
Page 11
三、ConfigDB分布式数据库的设计与实现
LOGO
进程间的互斥机制(信号量、共享内存) 缓存性能及淘汰机制研究 服务器并发处理(epoll、pthread、队列、信号) 一致性Hash分布式策略
Page 12
ConfigDB系统整体架构
LOGO
Page 13
一致性Hash分布式策略
Page 10
各种策略的综合对比
LOGO
•"影响因子"影响随机读性能的关键影响因素; •“综合存储”是指整个系统存储数据所耗内存; •“进程内存”是指平均到单个进程所耗内存; •“最快随机读”是指在极端情况下的随机读性能,比如分布式只有一个节点的情况、 缓存大小与数据大小相同等; •“最慢随机读”也是指在极端情况下的随机读性能,比如分布式的节点无限多, 本地缓存无限小命中率接近0%等。
1)初始化数据库,插入所需的测试数据,把数据库内存映像保存 为文件;
2)测试进程将数据库文件使用mmap方式映射到本进程地址空间;
3)利用shell脚本分别同时执行1个、2个、4个、6个、8个、10个、 12个、14个、16个和32个进程,在执行时还使用了taskset -c将进 程与CPU绑定。