暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

NoSQL之入门

小鸡啄米团 2022-05-16
585


   NoSQL数据库平时听得也比较多,传统的关系型数据库(如Sql server、Oracle、MySQL)我们日常中经常用到,像其它的一些数据库(如Redis、MongoDB)也有接触,但对非关系型数据库NoSQL这块没有个整体的概念,之前也了解过这块的内容,但印象不深。好记性不如烂笔头,今天温故整理下。


01

NoSQL

    

    NoSQL是Not Only SQL的缩写。算是非关系型数据库的称呼吧,并不是指某一种具体的数据库应用。NoSQL数据库主要有以下几类:

    1.键值对存储数据库。如:Redis

    2.文档存储数据库。如:MongoDB

    3.列式存储数据库。如:HBase

    4.图形存储数据库。如:Neo4j

    以前的概念中,我们总觉得SQL Server、Oralce、MySQL这些才是数据库,但实际Redis,MongoDB这些也是数据库,观念得变过来。出现这种情况,可能是相比于传统关系型数据库(库、表、行)的存储,我们对于NoSQL的存储方式没有比较直观的感觉(至少我是这样)。下面我们就针对这个盘它。


02


Redis

    键值对存储数据库Redis是Remote Dictonary Server的简称。C语言编写的。算是内存数据库吧。数据以key-value键值对方式存储。key的值不能重复,value可以根据不同的业务场景选择不同的数据结构。常见的数据结构有:

1.String(字符串):这种不解释

2.List(列表):列表里的值可以重复

3.Set(集合):集合的值去重但无序

4.Hash(散列):可以理解成跟Java时的HashMap类似

5.Sorted Set(有序集合):集合的值去重且有序

注:可视化工具有官方的RedisInsight


03


MongoDB

    文档存储数据库MongoDB,C++语言编写的。

    我们可以类比关系型数据库来看

关系型数据库
MongoDB
数据库(DataBase)数据库(DataBase)
表(Table)
集合(Collection)
行(Row)文档(Document)
1.相同文档类型可以归在同个集合存储

2.文档的主键为_id,如果文档插入时没有指定_id的值,MongoDB会自动生成

3.文档的数据格式为BSON(BinaryJSON),长跟JSON很像,但它有一些JSON没有的数据类型

文档记录长这样(MongoDB官网的图)

注:连接工具可以用Robo 3T

04


HBase

    列式存储数据库HBase,是Hadoop生态中的一员,JAVA语言编写的。HBase没有库的概念,但有表,表中有几个关键的概念:

    Row key(行键):表中行的主键

    Column Family(列簇):可以理解成列组,由多个列组成一组

    Column(列):就跟关系型数据库的列一样

    Timestamp(时间戳):数据的变动HBase会记录时间

如上图(注:图片为书中所截),phone表查询出来的记录,以黑底记录为例

行键:p001

列簇:info

列:列簇info包括name列和brand列

时间:timestamp

整行表示:行p001的name列内容为iPhone X

注:连接工具可以用Squirrel


05


Neo4j

    图形存储数据库Neo4j。JAVA语言编写的。

    第一眼看到这个名称,一脸蒙圈~~据说使用的查询语言是Cypher(注:这玩意咱也没接触过,不了解)

    为方便理解,先上个图(注:图片来源于网上):

    感觉数据存储之后可以比较好地反映数据间关系。下面结合图型说一下Neo4j中的几个概念:

1.结点:就是上图的圆圈

2.关系:就是上图中的箭头,表示两个节点间的关系

3.标签:圆圈中的名字

4.关系类型:关系线上的字,描述两结间的关系

5.属性:上图中没有体现,可以理解成对标签的描述,如上图的人名,可以附加上年龄,爱好这些属性描述

注:本身带有管理界面Neo4j Desktop

因为没用过,没太多概念,就先这样吧!!!


文章转载自小鸡啄米团,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论