什么是非关系数据库?非关系数据库如何关联呀?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是非关系数据库?非关系数据库如何关联呀?相关的知识,希望对你有一定的参考价值。

这个与物理学无关,是数据库的一种类型。

关系数据库 - relational database,是一种通过建立索引来储存数据类型和他们之间的关联的技术。随着互联网的发展,有很多数据访问类型不再需要这种大型的关联逻辑,而是需要储存和读取大量的数据。比如Facebook,人人之类的网站,他们的数据类型如果用关系数据库来表示,则又慢又占地方。

所以最近几年兴起的非关系数据库(NOSQL - No Only SQL),包括键值查询表数据库,图数据库等,就是针对这种不需要关联,不需要多个表JOIN,但是需要储存和读些大量数据的情况而设计的。比如Graph Database,图数据库,储存的是一个Graph上的Node和Edge。这样比如查询你和我之间有多少个共同好友,或者像Linked-In那种查询两个用户之间隔着几个人的查询,只需要做一个Graph Walk就可以。

非关系数据库的并没有关联的概念,它的前提条件就是数据不需要关联。当然,你可以通过Id和索引来读取多个表中的数据,然后手动将他们关联在一起。总的来说,非关系数据库没有为这个情况做任何优化,也不适用于需要大量关联的数据。
参考技术A 一楼很完善

MongoDB系列之什么是非关系型数据库

1、什么是NoSQL?

NoSQL,指的是非关系型的数据库。NoSQL是Not Only SQL的缩写,是对不同于传统的关系型数据库管理系统的统称。非关系型数据库不同于传统的关系型数据库,非关系型数据库对数据的存储不需要特定的模式,适用于大规模的数据存储。

2、SQL VS NoSQL

关系型数据库NoSQL数据库
关系型数据库管理系统RDBMS非关系型分布式数据库系统
不支持分布式默认支持分布式,内置分布式解决方案
结构化查询语言NoSQL 数据库具有用于非结构化数据的动态模式
适合复杂关联查询不适合复杂关联查询
遵循ACID属性遵循CAP()遵循 CAP(一致性、可用性、分区容错性)
可以通过加CPU 或 SSD 等内容来增加单个服务器的负载可以通过分片或在 NoSQL 数据库中添加更多服务器
示例: MySQL、PostgreSQL、Oracle、SQL Server 等示例: MongoDB、GraphQL、HBase、Neo4j、Cassandra 等

3、NoSQL数据库分类

类型 | 典型代表| 特点
—|—
列存储 | HBase、Cassandra、Hypertable|按照列存储数据的,方便存储结构化和半结构化的数据,方便做数据压缩
文档存储 | MongoDB、CounchDB | 存储采用一种类似于json的数据结构。存储内容是文档型的,这样就容易对某些字段加索引,实现类似于关系型数据库的功能
Key-value 存储 Tokyo、Cabinet/Tyrant、Berkelery DB、Memcache、Redis|可以通过 key 快速查询到其value。
图存储 Neo4J| FlockDB|图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便
对象存储 | Db4o、Versant|通过类似面向对象语言的语法操作数据库,通过对象的方式存储数据。
XML数据库 | Berkeley DB XML、BaseX|高效的存储XML 数据,并存储 XML 的内部查询语法,比如XQuery,Xpath。

图例来自:https://www.pdai.tech/md/db/nosql-mongo/mongo-x-basic.html

以上是关于什么是非关系数据库?非关系数据库如何关联呀?的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB系列之什么是非关系型数据库

MongoDB系列之什么是非关系型数据库

对象关系之聚合关系

MongoDB

mongodb应用

mongoDB入门