欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

NoSQL 非关系型数据库

程序员文章站 2022-04-11 09:05:12
...


NoSQL

1. NoSQL 介绍

  • NoSQL(Not-Only SQL),泛指非关系型的数据库,它可以作为关系型数据库的良好补充。
  • 关系型数据库与非关系型数据库的比较:
    NoSQL 非关系型数据库
  • 互联网产品的特点:高并发、高可用、高性能、海量数据。传统的关系型数据库出现了性能和扩展的瓶颈,所以非关系型数据库应时而生,解决了互联网产品的三高和海量数据的问题。
  • NoSQL 和关系型的数据库是互补关系,在各自的应用场景中都有自己的特点,一般情况下我们使用关系型数据库持久化数据(处理复杂的业务场景),对一些热点数据通过 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 对图形数据库发展趋势的分析结果:
    NoSQL 非关系型数据库

b. 二度人脉的概念

  • 如果把你的微信好友作为一度人脉的话,那么你微信好友的好友就属于你的二度人脉,而你微信好友的好友的好友就是你的三度人脉,画个图简单看一下:
    NoSQL 非关系型数据库
  • 通常情况下我们所指的二度人脉基本都是一个泛指,泛指除了一度人脉之外的所有关联的人脉关系,如:三度、四度、五度甚至六度人脉等。那么应该如何实现推荐二度人脉这个功能呢?
  • 运用关系型数据库,可以很轻松的实现一个推荐二度人脉的数据库表设计和代码实现。数据库首先有一个用户表 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 底层会以图的方式把用户定义的节点以及关系存储起来,通过这种方式,可以高效的实现从某个节点开始,通过节点与节点间关系,找出两个节点间的联系。
    NoSQL 非关系型数据库
  • 说到节点和关系,就必须引出一个非常重要的概念,属性图模型(Property Graph Model)。如下所示:
    NoSQL 非关系型数据库
  1. 一个图中会记录节点和关系
  2. 关系可以用来关联两个节点
  3. 节点和关系都可以拥有自己的属性
  4. 可以赋予节点多个标签(类别)
  • 举例说明:
    NoSQL 非关系型数据库

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