(一)举个栗子
(1)关系型数据库通过外键关联来建立表与表之间的关系,
(2)非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定,比如 有一个学生的数据:
姓名:张三,性别:男,学号:12345,班级:二年级一班
还有一个班级的数据:
班级:二年级一班,班主任:李四
关系型数据库中,我们创建学生表和班级表来存这两条数据,并且学生表中的班级存储的是班级表中的主键。
非关系型数据库中,我们创建两个对象,一个是学生对象,一个是班级对象,用java来表示就是:
通过设置Student类的classid等于Grade类的id来建立这种关系;
关系型数据库中,查询一条数据结果是一个对象;非关系型数据库中,我们查询一条数据,结果出来一个数组。
(二)当今十大主流的关系型数据库
Oracle,Microsoft SQL Server,MySQL,PostgreSQL,DB2,
Microsoft Access, SQLite,Teradata,MariaDB(MySQL的一个分支),SAP
(三)当今非关系型数据库
非关系型数据库都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以下几类:
(1) 面向高性能并发读写的key-value数据库:
key-value
数据库的主要特点是具有极高的并发读写性能
Key-value
数据库是一种以键值对存储数据的一种数据库,类似Java
中的map
。可以将整个数据库理解为一个大的map
,每个键都会对应一个唯一的值。
主流代表为Redis, Amazon DynamoDB, Memcached,
Microsoft Azure Cosmos DB和Hazelcast
(2) 面向海量数据访问的面向文档数据库:
这类数据库的主要特点是在海量的数据中可以快速的查询数据
文档存储通常使用内部表示法,可以直接在应用程序中处理,主要是JSON
。JSON
文档也可以作为纯文本存储在键值存储或关系数据库系统中。
主流代表为MongoDB,Amazon DynamoDB,Couchbase,
Microsoft Azure Cosmos DB和CouchDB
(3)面向搜索数据内容的搜索引擎:
搜索引擎是专门用于搜索数据内容的NoSQL数据库管理系统。
主要是用于对海量数据进行近实时的处理和分析处理,可用于机器学习和数据挖掘
主流代表为Elasticsearch,Splunk,Solr,MarkLogic和Sphinx
(4)面向可扩展性的分布式数据库:
这类数据库的主要特点是具有很强的可拓展性
普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。
这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化,将数据存储在记录中,能够容纳大量动态列。由于列名和记录键不是固定的,并且由于记录可能有数十亿列,因此可扩展性存储可以看作是二维键值存储。
主流代表为Cassandra,HBase,Microsoft Azure Cosmos DB,
Datastax Enterprise和Accumulo
优点
1.用户可以根据需要去添加自己需要的字段,为了获取用户的不同信息,不像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。
2.适用于SNS(Social Networking Services)中,例如facebook,微博。系统的升级,功能的增加,往往意味着数据结构巨大变动,这一点关系型数据库难以应付,需要新的结构化数据存储。由于不可能用一种数据结构化存储应付所有的新的需求,因此,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。
不足:
只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,关系型数据库显的更为合适。不适合持久存储海量数据
(四)区别
参考:
https://blog.csdn.net/lijock/article/details/81950660
https://www.jianshu.com/p/fd7b422d5f93