关系型数据库和非关系型数据库区别总结
通篇白话文,想到哪写到哪。介意勿看,自己笔记而已,有错敬请指出。
从学校到工作,我接触过Oralce、Mysql、redis等数据库,当然经常接触的也就是这仨,起初不明白这些数据库之间有啥区别(当然Mysql和Oracle的区别我还是知道的),别人怎么用,自己就怎么用,但是出问题根本就不知道为啥会出问题,从哪个方面去解决,因此我下定决心,痛定思痛的准备深挖一下这些数据库。那么下面是我个人对数据库的一些理解及总结: 首先了解下什么是数据库?当然我上面说的数据处理应该也不算错哈,那么详细的理解就是:数据库是存储数据的仓库(没毛病吧),官方解释为:
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
太TM的官方了,不过这个也不算太官方哈,毕竟还能看得懂。 了解了什么是数据库,那也应该知道数据库是干啥用的。那么下面就详细的介绍数据库: 一、分类及区别 我经常听同事们谈论什么关系型数据库啊 非关系型数据库啊,起初我内心的想法就是不都TM的是数据库吗,还分啥呢,知道咋用不就妥了。现在是脸红啊。毕竟作为一个开发来说,只会用但不懂那是有点Low的。好了废话不多说,上面咱说了数据库分为关系型数据库和非关系型数据库,那么啥叫关系型啥叫非关系型呢? 关系型数据库: 采用二维表格模型来组织处理数据的数据库。通俗的来说就是咱经常用的Oracle、Mysql、sqlServer等。数据存储在硬盘。 非关系型数据库: 数据存储在内存。
指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。NoSQL数据库技术与CAP理论、一致性哈希算法有密切关系。所谓CAP理论,简单来说就是一个分布式系统不可能满足可用性、一致性与分区容错性这三个要求,一次性满足两种要求是该系统的上限。而一致性哈希算法则指的是NoSQL数据库在应用过程中,为满足工作需求而在通常情况下产生的一种数据算法,该算法能有效解决工作方面的诸多问题但也存在弊端,即工作完成质量会随着节点的变化而产生波动,当节点过多时,相关工作结果就无法那么准确。这一问题使整个系统的工作效率受到影响,导致整个数据库系统的数据乱码与出错率大大提高,甚至会出现数据节点的内容迁移,产生错误的代码信息。但尽管如此,NoSQL数据库技术还是具有非常明显的应用优势,如数据库结构相对简单,在大数据量下的读写性能好;能满足随时存储自定义数据格式需求,非常适用于大数据处理工作。NoSQL数据库利用key-value可以大量的获取大量的非结构化数据,并且数据的获取效率很高,但用它查询结构化数据效果就比较差。 目前NoSQL数据库仍然没有一个统一的标准,它现在有四种大的分类: (1)键值对存储(key-value):代表软件Redis,它的优点能够进行数据的快速查询,而缺点是需要存储数据之间的关系。 (2)列存储:代表软件Hbase,它的优点是对数据能快速查询,数据存储的扩展性强。而缺点是数据库的功能有局限性。 (3)文档数据库存储:代表软件MongoDB,它的优点是对数据结构要求不特别的严格。而缺点是查询性的性能不好,同时缺少一种统一查询语言。 (4)图形数据库存储:代表软件InfoGrid,它的优点可以方便的利用图结构相关算法进行计算。而缺点是要想得到结果必须进行整个图的计算,而且遇到不适合的数据模型时,图形数据库很难使用
下一篇:
Mysql不同服务器跨库查询解决方案