当前key-value的数据库分布式数据库应用非常广泛。在互联网的企业或者大的服务提供商,很多数据都采用key-value的形式存储,包括图片,索引,网页评论,博客等。
key-value的分布式数据库的特点是访问稳定一致,不会受到随着数据量增大性能严重下降的困扰,传统的关系数据库无法消除这个困扰。key-value的数据库一个key对应一条记录,其指标就是这个数据库能容纳的最大key数量,value的最大值,平均值等。数据存储大小对性能是否有影响等,总的存储量多大,磁盘利用率多大等,访问速度在其次。只要控制在一次访问在10ms以内,就行了。实际上成熟的数据库一般都是有读写cache的。因此,好的数据库的访问性能不是瓶颈。比较数据库的优缺点主要是容量,安全性,容灾性能,分布性能和磁盘利用率。
分布式数据库的设计要点:
1.路由机制
既然是分布式,那么数据的存储肯定是分布式在不同的机器,或者不同的机房,甚至不懂的IDC。路由机制的可靠好完善是数据安全性的保证。也是分布第一要解决的问题。路由机制保证容灾、迁移的正常进行。
2.数据库的cache机制
数据库必须是读写cache的,否则就没有价值可言,一个初期的数据库可能直接用机器来堆出访问量支撑,可能不需要cache。但是随着数据库的大规模使用,如果不做cache成本根本无法承受,就包括腾讯、百度、淘宝这些巨头都无法承受没有cache的数据库的使用。这些巨头的访问量都是上亿级别的。没有那个数据库能在没有cache的情况下支撑那么大的访问量,那得多少机器呀!
写cache是后台服务器设计中最复杂的内容之一。写cache复杂之处不是其cache算法以及cahche节点的编程,而是在于其容灾和数据恢复,以及写多份数据的相互更新的安全性。设计写cache必须考虑每个可能异常以及最极端的情况下的数据恢复,记住一个要点就是,每个过程都有可能被中断。
3.数据库的磁盘组织,多份数据的校验和相互更新安全性
磁盘往往会损坏,出现坏道坏磁头等现象,多份数据能在磁盘损坏的情况下保证数据的正常读写,但是多份数据带来了写cache的逻辑复杂性。数据库的容灾一般是靠active和standby模式来进行灾备。多份数据的校验和相互更新也是逻辑层的最复杂逻辑之一。