论文部分内容阅读
传统的关系型数据库在数据量和用户数爆炸式增长的现在遇到了性能瓶颈,这主要归结于关系模型中数据间复杂的关联和耦合,导致数据库难以扩展,无法充分利用分布化提升性能。Key-Value数据库放弃了关系型数据库中的关系模型,通过去除数据之间的耦合使数据库更为适应现代的高性能服务架构,从而达到高可扩展性、高性能。但是由于当前数据中心的限制和Key-Value集群本身庞大的服务器数量,Key-Value集群的部署成本过高,相对计算效率较低,这大大限制了Key-Value集群的应用范围,因此提升集群的计算效率和部署密度对于工业界有着重要的意义。本文研究了Key-Value数据库的核心特性、应用模式以及当前的计算环境,提出解决集群计算效率和部署密度问题的关键在于对异构平台的支持。通过使用计算效率更高的平台替换当前的常用平台,可以大大减少计算的能耗和热耗散并提升部署密度。但支持异构平台的特性也对所使用技术的选择、系统架构的设计和开发的技巧提出了更高要求,如:现有软件栈对新架构支持度不够,需要在研究中进行大量的开发;异构集群内性能差异较大,需要良好的负载均衡方案保证集群的稳定运行。本系统使用Linux操作系统和Erlang运行时作为服务的基础设施,定制了适于运行于ARM架构上的Linux系统,充分利用了其开源、跨平台、高稳定性、高成熟度等优势,构建了稳定的数据库运行基础;深入的研究了Erlang的函数式编程方法、进程模型、消息传递机制和容错机制等语言特性,以此为基础解决了针对分布式集群的通信、容错等难点问题;针对异构系统性能差异大的特点,系统应用了分层体系、一致性哈希等思想进行总体架构设计,保证了服务的可扩展性。最终本研究实现了基于x86和ARM异构平台的分布式Key-Value数据库系统。相对于关系型数据库,此Key-Value数据库可以轻松的进行线性扩展,获得理想的性能增长;相对于已有的Key-Value数据库,本文提出的数据库集群设计方案可扩展性更高,并可充分利用现有和未来异构的机器资源,更好的适应数据中心环境,提供极高的性能/能耗比,进行高密度的部署。