分布式Key-Value数据的开发可行性分析

前段时间和同事讨论key-Value DB的用途的问题,说是非常的有用。下周打算实现一个原型。今天把前几天写的文档总结一下。希望大家提些建议和意见。
功能:
    相对于关系数据库功能更少,只提供有限的Key-Value查询功能,以及一些可管理功能。相对于关系数据库可以提供更加强劲的性能,提供更好的可管理性(大部分自管理),可伸缩性。
    目标:
           简单的Key-Value操作
           管理功能
           自管理特性
           高性能
           数据高安全
 
应用范围:
    大数据量、高访问量的网站
    对数据安全要求高的软件
 
项目工程:
    因为总体功能比较少,各个组成部分可以使用现有的技术,开发工作量应该不会很大。1-2个人就可以完成。
    数据存储层可以用berkeydb 或 Mysql
    数据通讯可以用Http协议 或 tcp
   
功能设计
    每一个数据存 N 份 Copy
    Client 向一个节点写数据,同时复制给其他copy节点
 
    客户端API        get(groupName,key)
        getMulti(groupName,keys)
        set(groupName,key,value)
        setMulit(groupName,keyValuePairs)
        listKey(groupName,startPos,count)
        listKey(groupName,startKey,count)
 
     管理功能
        查看各节点运行情况
        添加节点
        移除节点
 
     性能管理
        查看各客户端(ip)的使用量数据 (命中内存的次数、未命中内存的次数、写的次数)
        查看各个账号的使用量数据  (命中内存的次数、未命中内存的次数、写的次数)
        限制某客户端(ip)的使用
        限制某账号的使用

相关推荐