一、关系型数据库:
特点:结构化数据(模式预定义),支持事物ACID,结构简单清晰。分布式关系型数据库NewSQL,DistributedSQL。
二、NoSQL数据库:
特点:半结构化数据(模式自描述,如Json,XML等)。分布式支持较好,CAP取舍,BASE。不同场景选用不同的数据库,每种数据库设计实现都完全不同,针对不同场景。比如:
- Redis:作为缓存,数据结构服务器,可以实现分布式锁,消息队列。数据结构支持String,Hash,List,Set,SortedSet等,作为缓存使用所以不常用复杂查询。支持各类序列化器。案例:购物车(Hash),实时排行榜(SortedSet),定时更新排行榜(List)等。
- MongoDB:最像关系型数据库的非关系型数据库,包含有各种查询方式。Collection和Document的方式来管理数据,支持索引(B-tree),数据操作(JS,Bson)
- ElasticSearch:倒排索引。基于Lucene,支持全文搜索(text)和顺序扫描(keyword),支持多种分词器和序列化器。数据操作(Http,Restful)。利用Index,Mapping和Document来管理数据。案例:站内搜索。
- Hbase:列式存储,基于Hadoop HDFS,行键,列族。Hive采用HDFS或HBase为数据存储;mapreduce/spark为计算框架。
- Zookeeper:配置数据库,Paxos选举算法,树形存储结构。分布式系统常用的配置服务,命名服务,同步服务。
- InfluxDB:时序数据库,案例:k线图,交易重演。
三、文档:
特点:非结构化数据(无模式):比如日志Log文件,多媒体文件等,特点数据量大。需要利用机器学习,数据清洗提取有价值信息,转换为结构化或半结构化数据使用。