1. 什么是非关系型数据库
- 什么是关系型数据库
关系型数据库就是需要依赖现实生活的具体模型来创建的数据库, 比如具体的人, 事物, 能表示多个表之间一对一, 一对多, 多对多的关系. 而且支持事务.
常见的Mysql, Oracle都是关心型数据库. - 什么是非关系型数据库
非关系型数据库就是不需要依赖现实生活中的具体模型就可以出数据库及表. 比较灵活便利.
2. 为什么要用非关系型数据库
- 关系型数据库具有数据安全且容易理解的优点, 但是随着互联网的发展,数据存储越来越多, 对于并发的要求也越来越高,项目中单纯使用关系型数据库已经无法满足这些要求, 于是应运而生了非关系型数据库.
- 非关系型数据库具有格式灵活, 成本低, 查询快, 高性能, 高扩展的优点.
- 实际开发中通常将关系型数据库和非关系型数据库结合使用, 不同非关系型数据库具体应用场景不同.
3. 常用的非关系型数据库有哪些
3.1 键值对key-value型
key-value
数据库的主要特点是具有极高的并发读写性能Key-value
数据库是一种以键值对存储数据的一种数据库, 类似Java中的map. 可以将整个数据库理解为一个大的map, 每个键都会对应一个唯一的值.- 主流最常用的代表就是Redis等
3.2 文档型
文档型按照功能划分又分为基于海量数据存储的和基于搜索内容存储的搜索引擎,数据结构可以理解为Json格式的文档类型.
3.2.1 基于海量数据存储
- 这类数据库的主要特点是在海量的数据中可以快速的查询数据
- 文档存储通常使用内部表示法, 可以直接在应用程序中处理, 主要是JSON. JSON文档也可以作为纯文本存储在键值存储或关系数据库系统中.
主流代表为MongoDB等
3.2.2 搜索引擎
- 搜索引擎是专门用于搜索数据内容的NoSQL数据库管理系统。
- 主要是用于对海量数据进行近实时的分析处理,可用于机器学习和数据挖掘
- 主流代表为Elasticsearch, Solr等.
3.3 列式数据库
- 这类数据库的主要特点是具有很强的可拓展性
- 关系型数据库都是以行为单位来存储数据的, 擅长以行为单位的读入处理, 比如特定条件数据的获取. 因此, 关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。
- 这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化,将数据存储在记录中,能够容纳大量动态列。由于列名和记录键不是固定的,并且由于记录可能有数十亿列,因此可扩展性存储可以看作是二维键值存储。
- 主流代表为HBase等.
3.4 图数据库
- 将数据库图形化,数据结构是图结构,
4. 几种非关系型数据库对比
Redis | MongoDB | ElasticSearch | Hbase | Neo4J | |
---|---|---|---|---|---|
数据结构 | 键值对的key-value形式 | Json文档格式 | Json文档格式 | 列簇式存储,将同一列数据存到一起 | 图结构 |
典型应用场景 | 缓存和并发数据库 | 1. 做缓存数据库 2. 海量数据且对允许少许数据丢失, 例如用户评论数据, 点赞数据等 | 海量数据进行搜索应用, 例如网站搜索页面的数据 | 大数据分布式系统,海量数据且数据比较分散 | 社交网络,推荐系统等 |
优点 | 1. 数据存在内存中 2. 线程安全 3. 读写效率高 | 1. 存储海量数据 2. 表结构可变 | 数据量大,基于Lunence倒排索引原理,能实现海量数据分词搜索 | 1.高扩展性 2. 海量数据 | 利用图结构相关算法,符合人的思维 |
缺点 | 1.数据无结构化 2. 存储少量数据 | 读写效率不如Reids | 读写效率不如Redis | 优点也是缺点, 没有太多花哨的功能 | 不好做分布式系统 |
真实开发也是多种数据库结合使用, 如图下图所示:
今天的文章常见的非关系型数据库有哪些分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30661.html