关系型数据库的缺点
1.行结构(行式数据库),无法存储数据结构(比如链表)
2.Schema扩展不方便(要通过语句修改类型后才能插入对应类型数据)
3.IO问题,由于是行式数据库,就算获取某一列数据也会读取一行
4.全文搜索弱,只能使用like检索
常见NoSql
由于上述缺点,就诞生了解决对应Nosql存储
1.存数据结构我有K-V存储:Redis…
2.Schema扩展不方便,那我有文档数据库:MongoDB…
3.只获取某一列,我有列式数据库:HBase
4.你全文搜索弱,我有全文搜索引擎Elasticsearch
K-V存储
典型代表Redis
提供了丰富的数据结构:string,hash,list,set,sorted set,bitmap,hyperfloglog等
文档型数据库
代表:MongoDb
文档型数据库一般使用JSON或者BSON格式,格式是自描述的,无需使用前定义字段。
列式数据库
代表HBase
关系型数据库和列式数据库比较,其优点:
1.同时读取多个列高效
2.能对一行中的多个列进行写操作
3.更新写一次磁盘即可
列式数据库的优点在于:
1.当对某一列读取高效(只将这一列数据载入内存)
2.提供比关系型数据库更高的数据压缩比
3.由于其存储空间不连续,更新是随机写
列式数据库一般用在离线的大数据分析和统计场景
全文检索引擎
代表:Elasticsearch
原理:倒排索引(建立分词到文档的索引)
正排索引:
ID | 名称 | 内容 |
---|---|---|
1 | 编程语言 | PHP,JAVA,C++ |
2 | 最好的编程语言 | PHP |
倒排索引:
分词 | 文档ID |
---|---|
PHP | 1,2 |
JAVA | 1 |
C++ | 1 |
最后再根据文档ID(正排索引)找到对应的内容