在互联网行业,通常需要高并发、高性能、高可用性的数据库系统。在处理大数据时,关系型数据库遭遇了瓶颈,这就促使我们思考从数据模型的根源入手,来解决性能上的问题。根据数据的存储模型和特点,NoSQL数据库分为很多种类,主要分为以下四个类型:键值模型、列式模型、文档模型与图形模型。
键值模型
实例:Dynamo、Redis、Voldemort
应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统
数据模型:key与value间建立的键值映射,通常用哈希表实现
优点:查找迅速
缺点:数据无结构化,通常只被当做字符串或者二进制数据
列式模型
实例:Bigtable、Cassandra、HBase
应用场景:分布式文件系统
数据模型:以列存储,将同一列数据存在一起
优点:查找迅速、可扩展性强,更容易进行分布式扩展
缺点:功能相对有限
文档模型
实例:CouchDB、MongoDB
应用场景:Web应用
数据模型:与键值模型类似,value指向结构化数据
优点:数据要求不严格,不需要预先定义结构
缺点:查询性能不高,缺乏统一查询语法
键值模型
实例:Neo4j
应用场景:社交网络、推荐系统、关系图谱
数据模型:图结构
优点:利用图结构相关算法提高性能
缺点:功能相对有限,不好做分布式集群解决方案