NoSQL数据库发展迅猛,据说现在已经有上百种NoSQL数据库了,下面来了解下常见的一些NoSQL数据库
先来看张表,了解下典型的NoSQL数据库的分类
临时性键值存储永久性键值存储面向文档的数据库面向列的数据库
常用的NoSQL数据库
Memcached
挥发性(临时性)的键值存储
一般作为关系型数据库的缓存来使用
具有非常快的处理速度
由于存在数据丢失的可能,所以一般用来处理不需要持久保存的数据
用于需要使用expires时(需要定期清除数据)
使用一致性散列(Consistent Hashing)算法来分散数据
Tokyo Tyrant
持久性的键值存储
用来处理需要持久保存,高速处理的数据
具有非常快的处理速度
用于不需要定期清除的数据
使用一致性散列(Consistent Hashing)算法来分散数据
Redis
兼具Memcached和Tokyo Tyrant优势的键值存储
擅长处理数组类型的数据
具有非常快的处理速度
可以高速处理时间序列的数据,易于处理集合运算
拥有很多可以进行原子操作的方法
使用一致性散列(Consistent Hashing)算法来分散数据
MongoDB
面向无需定义表结构的文档数据
具有非常快的处理速度
通过BSON的形式可以保存和查询任何类型的数据
无法进行JOIN处理,但是可以通过嵌入(embed)来实现同样的功能
使用sharding(范围分割)算法来分散数据
上面多次提到了一致性散列,那到底什么是一致性散列呢?请参考这里 ,我就不赘述了
不过,当server数量很少时,很可能他们在圆周上的分布不是特别均匀,
导致cache不能均匀分布到所有的server上。
这时候,就该请出虚拟节点了
为每个物理节点(服务器)在圆上分配100~200个点,
这样就能抑制分布不均匀,最大限度地减小服务器增减时的缓存重新分布,
用户数据映射在虚拟节点上,就表示用户数据真正存储位置是在该虚拟节点代表的实际物理服务器上。
想了解或者学习的小伙伴可以关注我 想获取大数据相关资料的可以加我qq群863529330