NoSQL 非关系型数据库


NoSQL

1. NoSQL 介绍

  • NoSQL(Not-Only SQL),泛指非关系型的数据库,它可以作为关系型数据库的良好补充。
  • 关系型数据库与非关系型数据库的比较:
    在这里插入图片描述
  • 互联网产品的特点:高并发、高可用、高性能、海量数据。传统的关系型数据库出现了性能和扩展的瓶颈,所以非关系型数据库应时而生,解决了互联网产品的三高和海量数据的问题。
  • NoSQL 和关系型的数据库是互补关系,在各自的应用场景中都有自己的特点,一般情况下我们使用关系型数据库持久化数据(处理复杂的业务场景),对一些热点数据通过 NoSQL 来作为缓存提高效率。
    请添加图片描述

2. NoSQL 的主流产品

分类 特点 代表产品
键值存储(Key-Value-stores) 数据一般存在内存中,读写速度快(10w/s),适合作为缓存服务 Redis
文档型数据库(Document-stores) 数据结构要求不严格,适合存储结构不确定或者价值较低的数据 MongDB
列存储数据库(BigTable-implementations) 查找速度快,更容易进行分布式扩展,适合作为文件存储服务 Hbase
图形数据库(Graph Database) 使用“图结构”进行存储,适合做社交网络计算等等 Neo4j

3. 图形数据库

a. 图形数据库介绍

  • 在 NoSQL 四种分类中,图数据库从最近十年的表现来看已经成为关注度最高,也是发展趋势最明显的数据库类型。下图就是 db-engines.com 对图形数据库发展趋势的分析结果:
    在这里插入图片描述

b. 二度人脉的概念

  • 如果把你的微信好友作为一度人脉的话,那么你微信好友的好友就属于你的二度人脉,而你微信好友的好友的好友就是你的三度人脉,画个图简单看一下:
    在这里插入图片描述
  • 通常情况下我们所指的二度人脉基本都是一个泛指,泛指除了一度人脉之外的所有关联的人脉关系,如:三度、四度、五度甚至六度人脉等。那么应该如何实现推荐二度人脉这个功能呢?
  • 运用关系型数据库,可以很轻松的实现一个推荐二度人脉的数据库表设计和代码实现。数据库首先有一个用户表 user,用于表示用户的基本信息,然后一个有一个好友表 user_friends,用于表示好友之间的关系。查找你的一度人脉就是直接根据你的用户 ID 到 user_friends 表中查找好友的 ID;查找你的二度人脉是先根据你的用户 ID 去 user_friends 表中先查出来你的一度人脉,然后得到所有一度人脉的用户 ID,然后根据这些所有一度人脉的用户 ID 再去 user_friends 中查找他的好友。那么如果查找三度、四度、五度人脉该怎么办?

c. 图形数据库原理

  • 图数据库源起欧拉和图理论,也可称为面向/基于图的数据库,对应的英文是 Graph Database。图数据库的基本含义是以“图”这种数据结构存储和查询数据,而不是存储图片的数据库。它的数据模型主要是以节点和关系(边)来体现,也可处理键值对。它的优点是快速解决复杂的关系问题。
  • 图可以说是顶点和边的集合,或者说更简单一点儿,图就是一些节点和关联这些节点的联系(relationship)的集合。
  • 在图计算中,基本的数据结构表达就是:
G=(V, E) 
V=vertex(节点) 
E=edge(边)
  • 图数据库名字的由来其实与其在底层的存储方式有关,Neo4j 底层会以图的方式把用户定义的节点以及关系存储起来,通过这种方式,可以高效的实现从某个节点开始,通过节点与节点间关系,找出两个节点间的联系。
    在这里插入图片描述
  • 说到节点和关系,就必须引出一个非常重要的概念,属性图模型(Property Graph Model)。如下所示:
    在这里插入图片描述
  1. 一个图中会记录节点和关系
  2. 关系可以用来关联两个节点
  3. 节点和关系都可以拥有自己的属性
  4. 可以赋予节点多个标签(类别)
  • 举例说明:
    在这里插入图片描述

d. 图数据库 Neo4j

  • 目前市面上有很多图数据库,例如:Neo4J、ArangoDB、OrientDB、FlockDB、GraphDB、InfiniteGraph、Titan、Cayley 等,但目前较为活跃可以称之为代表的当属 Neo4j。
  • Neo4j 官方地址:https://neo4j.com/
  • Neo4j 的安装使用很简单,如果是 Window 平台的话直接安装就可以,然后配置一下环境变量即可使用。具体可以参考:在 Windows 环境中安装 Neo4j

e. 图形数据库总结

  • 图数据库它善于处理大量的、复杂的、互联的、多变的网状数据,其效率远远高于传统的关系型数据库的百倍、千倍甚至万倍。图数据库特别适用于社交网络、实时推荐、银行交易环路、金融征信系统等广泛的领域。

原文链接:https://qwert.blog.csdn.net/article/details/106290334

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章