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