什么是NoSQL?
NoSQL指的是不同于传统的关系型数据库的其他数据库系统的统称。
为什么需要NoSQL?
- 关系型数据库存储的是行记录,不能存储数据结构
- 关系型数据库的schema不方便扩展
- 关系型数据库在大数据场景下IO太高
- 关系型数据库的全文搜索性能差(like性能差)
NoSQL可以作为关系型数据库的补充,弥补关系型数据库在某些场景下性能和扩展性的不足。
常见的NoSQL数据库
K-V存储
解决关系型数据库不能存储数据结构的问题,以Redis为代表。
文档数据库
解决关系型数据库schema不方便扩展的问题,以MongoDB为代表。
文档数据库最大的特点就是no-schema,可以存储和读取任意的数据,目前大多数文档数据库以JSON格式存储数据。
列式数据库
解决关系型数据库大数据场景下的IO问题,以HBase为代表。
按照列来存储数据,一般应用在离线的大数据分析和统计场景中。
全文搜索引擎
解决关系型数据库的全文搜索问题,以Elasticsearch为代表。
全文搜索引擎基于倒排索引,倒排索引适用于根据关键词来查询文档数据。
如何将关系型数据转换为文档数据?目前常用的转换方式是将关系型数据按照对象的形式转换为JSON文档,然后将JSON文档输入全文搜索引擎进行索引。