美文网首页Neo4Jmongodb
模块十四_分布式文档存储独角兽MongoDB、知识图谱存储数据库

模块十四_分布式文档存储独角兽MongoDB、知识图谱存储数据库

作者: 西西弗斯XD | 来源:发表于2020-12-07 22:05 被阅读0次

    序言:

    文章内容输出来源:拉勾教育Java高薪训练营。
    本篇文章是学习课程中的一部分课后笔记

    一、MongoDB 体系

    1.NoSQL 和 MongoDB
    • NoSQL=Not Only SQL,支持类似SQL的功能, 与Relational Database相辅相成。其性能较高,不使用SQL意味着没有结构化的存储要求(SQL为结构化的查询语句),没有约束之后架构更加灵活。

    • NoSQL数据库四大家族 列存储 Hbase,键值(Key-Value)存储 Redis,图像存储 Neo4j,文档存储 MongoDB

    • MongoDB 是一个基于分布式文件存储的数据库,由 C++ 编写,可以为 WEB 应用提供可扩展、高性能、易部署的数据存储解决方案。

    • MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富、最像关系数据库的。在高负载的情况下,通过添加更多的节点,可以保证服务器性能。

    架构.png
    2.MongoDB 和RDBMS(关系型数据库)对比
    对比.png
    3.什么是BSON

    BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和Binary Data类型。
    BSON可以做为网络数据交换的一种存储形式,是一种schema-less的存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想。

    {key:value,key2:value2} 这是一个BSON的例子,其中key是字符串类型,后面的value值,它的类型一般是字符串,double,Array,ISODate等类型。BSON有三个特点:轻量性、可遍历性、高效性

    4.MongoDB中Document 中 可以出现的数据类型
    数据类型.png

    二、MongoDB命令

    1.MongoDB的基本操作
    基本操作.png

    .

    2.MongoDB集合数据操作(CURD)
    2.1 数据添加
      1. 插入单条数据 db.集合名.insert(文档)
        文档的数据结构和JSON基本一样。
        所有存储在集合中的数据都是BSON格式。
        BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
      1. 例如:
        db.lg_resume_preview.insert({name:"张晓峰",birthday:new ISODate("2000-07-
        01"),expectSalary:15000,gender:0,city:"bj"})
        没有指定 _id 这个字段 系统会自动生成 当然我们也可以指定 _id
        ( _id 类型是ObjectId 类型是一个12字节 BSON 类型数据,有以下格式:
        前4个字节表示时间戳 ObjectId("对象Id字符串").getTimestamp() 来获取
        接下来的3个字节是机器标识码
        紧接的2个字节由进程id组成(PID)
        最后3个字节是随机数。)
      1. 插入多条数据
        db.集合名.insert([文档,文档])
    2.2 数据查询

    比较条件查询:
    db.集合名.find(条件)

    条件查询.png
    逻辑条件查询:
    逻辑查询.png

    分页查询:
    db.集合名.find({条件}).sort({排序字段:排序方式})).skip(跳过的行数).limit(一页显示多少数据)

    2.3 数据更新 调用update
    update.png 参数.png writeconcern.png
    2.4 数据删除
    delete.png

    三、图 和 Neo4j

    1.图
    • 图论起源于一个非常经典的问题——柯尼斯堡(Konigsberg)七桥问题。1738年,瑞典数学家欧拉( Leornhard Euler)解决了柯尼斯堡七桥问题。由此图论诞生,欧拉也成为图论的创始人。


      七桥图.png

    欧拉把问题的实质归于"一笔画"问题,即判断一个图是否能够遍历完所有的边(Edge)而没有重复,而柯尼斯堡七桥问题则是一笔画问题的一个具体情境。欧拉证明这个问题不成立。

    • 满足一笔画的图满足两个条件:
      图必须是一个完整图
      有零个或二个奇数点
    • 图是一组节点连接这些节点的关系组成。图形数据存储在节点和关系所在的属性上。属性是键值对表示的数据。
    2.知识图谱
    • 知识图谱就是把所有不同种类的信息(Heterogeneous Information)连接在一起而得到的一个关系网络。知识图谱提供了从“关系”的角度去分析问题的能力。
    3.什么是Neo4j
    • Neo4j是一个开源的 无Shcema的 基于java开发的图形数据库,它将结构化数据存储在图中而不是表中。
      它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。程序数据是在一个面向对象的、灵活的网络结构下,而不是严格、静态的表中,但可以享受到具备完全的事务特性、企业级的数据库的所有好处。

    Neo4j 模块构建:

    1. 节点
      节点是图表的基本单位。 它包含具有键值对的属性

    2. 属性
      属性是用于描述图节点和关系的键值对
      Key =值
      其中Key是一个字符串
      值可以通过使用任何Neo4j数据类型来表示

    3. 关系
      关系是图形数据库的另一个主要构建块。
      它连接两个节点


      关系.png

    这里Emp和Dept是两个不同的节点。 “WORKS_FOR”是Emp和Dept节点之间的关系。
    因为它表示从Emp到Dept的箭头标记,那么这种关系描述的一样
    Emp WORKS_FOR Dept
    每个关系包含一个起始节点和一个结束节点。
    这里“Emp”是一个起始节点。
    “Dept”是端节点。
    由于该关系箭头标记表示从“Emp”节点到“Dept”节点的关系,
    该关系被称为“进入关系”到“Dept”节点;并且“外向关系”到“Emp”节点
    像节点一样,关系也可以包含属性作为键值对。

    1. 标签
      Label将一个公共名称与一组节点或关系相关联
      节点或关系可以包含一个或多个标签。
      我们可以为现有节点或关系创建新标签。
      我们可以从现有节点或关系中删除现有标签。
      从前面的图中,我们可以观察到有两个节点。
      左侧节点都有一个标签:“EMP”,而右侧节点都有一个标签:“Dept”。
      这两个节点之间的关系,也有一个标签:“WORKS_FOR”
      注: Neo4j将数据存储在节点或关系的属性中
    1. 数据浏览器
    4.Neo4j的主要应用场景

    社交媒体和社交网络
    当使用图形数据库为社交网络应用程序提供动力时,可以轻松利用社交关系或根据活动推断关系。
    查询社区聚类分析,朋友的朋友推荐,影响者分析,共享和协作关系分析等
    推荐引擎和产品推荐系统
    图形驱动的推荐引擎通过实时利用多种连接,帮助公司个性化产品,内容和服务。
    内容和媒体推荐,图形辅助搜索引擎,产品推荐,专业网络,社会推荐。
    身份和访问管理
    使用图形数据库进行身份和访问管理时,可以快速有效地跟踪用户,资产,关系和授权。
    查询访问管理,资产来源,数据所有权,身份管理,互连组织,主数据,资源授权
    金融反欺诈多维关联分析场景
    通过图分析可以清楚地知道洗钱网络及相关嫌疑,例如对用户所使用的帐号、发生交易时的IP地址、MAC地址、手机IMEI号等进行关联分析。

    相关文章

      网友评论

        本文标题:模块十四_分布式文档存储独角兽MongoDB、知识图谱存储数据库

        本文链接:https://www.haomeiwen.com/subject/uaduwktx.html