NoSQL-Assignment-1

#NoSQL #Assignment #Neo4j #Mongodb

1. 什么是 NoSQL 数据库 ?

  • NoSQL数据库是不遵循RDBMS原则的数据库和数据存储,NoSQL意思是不仅仅是 SQL

2. NoSQL数据库有哪些类型?请列举并简要介绍其中几种

  • 图数据库:
    • 用于存储数据网络信息,如社交关系。
    • 如:Neo4j
  • 文档数据库:
    • 将每个键与称为文档的复杂数据结构配对。
    • 如:MongoDB
  • 键值数据库:
    • 是最简单的 NoSQL 数据库。数据库中的每个项目都以属性名称(或 "键")的形式与其值一起存储。
    • 如:Redis
  • 列族数据库:
    • 针对大型数据集的查询进行了优化,将数据列(而不是行)存储在一起。
    • 如:Cassandra

3. 请解释关系型数据库与 NoSQL 数据库之间的主要区别

  • 关系型数据库
    • 中心化的
    • 处理密集,结构化的数据
    • 满足 ACID 性
    • 遵循 CA 原则
  • NoSQL
    • 去中心化的
    • 处理稀疏数据,半/非结构化的数据
    • 主要是查询,很少更新
    • 满足 BASE 性
    • 遵循 AP 或 CP 原则

4. 请解释 CAP 定理,并说明它在 NoSQL数据库中的重要性

  • CAP 定理(CAP Theorem)
    • 是由计算机科学家 Eric Brewer 提出的一个关于分布式数据存储系统的基本定理。该定理指出,在任何分布式数据存储系统中,无法同时完全满足以下三个特性:
      1. 一致性(Consistency):每个客户端都有相同的数据视图。
      2. 可用性(Availability):每个客户端始终可以读写。
      3. 分区容错性(Partition Tolerance):系统在分布式物理网络中运行良好
  • CAP 定理在 NoSQL 数据库中的重要性
    • NoSQL 数据库的设计通常会在 CAP 定理的背景下进行权衡,以满足特定应用场景的需求:
      1. 满足CA原则:系统几乎没有或根本没有分区容错性。一致性和可用性优先
      2. 满足AP原则:一致性受到影响,但系统始终可用,并且在部分分区时也能工作
        • Cassandra, DynamoDB
      3. 满足CP原则:可用性受到影响,但一致性和分区容错性优于可用性
        • MongoDB, HBase, Redis

5. 请解释以下概念

  • a.高可用性 (High Availability)
    • 每个客户端始终可以读写,读写实时更新
  • b. 可扩展性 (Scalability)
    • 存储空间可扩展
    • 数据易于扩展
  • c. 分布式系统 (Distributed System)
    • 去中心化的系统
    • 可有数千台机器分布在世界各地

6. 请解释以下 NoSQL 数据库的特点

  • a.键值存储(Key-Value Store)
    • 简洁:数据主要采用Key-Value(KV)形式储存
    • 高速:数据驻留内存,重启时可再次加载进行使用
    • 易扩展:根据系统负载量,灵活添加或删除服务器
    • 对键可设置失效时间
  • b. 列存储 (Column Store)
    • 更好的可扩展性
    • 高可用性
    • 适合离线批量数据处理
  • c.文档数据库(Document Store)
    • 核心概念是 "文档 "的概念,它与 RDBMS 中的行相对应
    • 以某些标准格式或编码封装和编码数据,如 JSON(BSON)
    • 文档在数据库中通过代表该文档的唯一密钥进行处理
    • 将文档作为一个整体处理,避免将文档拆分为其组成的名称/值对
    • 文档是无模式的,可以是非结构的数据
  • d.图形数据库(Graph Store)
    • 面向图形
    • 一切都以边、节点或属性的形式存储
    • 每个节点和边可以有任意数量的属性
    • 节点和边都可以贴标签
    • 标签可用于缩小搜索范围

7. 请解释以下 NoSQL 数据库的适用场景, 具体到哪种数据库,为什么

  • a. 实时分析:
    • 键值数据库Redis, 支持极高的读写速度,适合需要快速响应的实时分析应用。
  • b. 大数据处理:
    • 列族数据库 Cassandra, 能够轻松地横向扩展,处理大数据量和高吞吐量的需求。
  • c. 社交网络:
    • 图数据库 Neo4J,社交网络中的数据天然适合图模型,例如用户、朋友关系、点赞、评论等。Neo4j 通过图形算法和索引,能够高效地进行复杂的关系查询和路径查找,
  • d. 物联网 loT:
    • 文档数据库MongoDB,能够处理结构化、半结构化和非结构化数据。物联网数据通常包括各种类型的传感器数据,这些数据具有高度的灵活性和多样性。MongoDB 提供了高效的存储和查询能力,支持时间序列数据的存储和分析,适合物联网应用中大量多变的数据处理需求。

8. 请描述一个实际应用场景,说明为什么选择使用 NoSQL 数据库而不是关系型数据库

  • 实际应用场景:社交媒体评论管理
    • 社交媒体评论具有大量非结构化的数据,且用户在高峰期频繁发布和查看评论,系统需要支持高并发读写操作。
    • NoSQL 数据库具有可扩展性:NoSQL 数据库(如 MongoDB、Cassandra)能够水平扩展,通过增加更多节点来处理大规模数据和高并发请求。
    • 关系型数据库通常难以应对如此大规模的数据增长和高并发需求。

9. 以下Cypher语句是否正确?

MATCH (v:Vehicle)-[:OWNED_BY]->(p:Person)
WITH p, collect(p.name) as owners
RETURN v, owners

10. ORDER BY 是否是Cypher语句?

11. 为节点添加标签会自动索引名称属性吗?

12. 哪种说法最恰当地描述了 Cypher 中的 OPTIONAL MATCH 语句?

  • A. OPTIONAL MATCH 不是 Cypher 语句。
  • B. OPTIONAL MATCH 为 Cypher 查询提供参数占位符。它保存参数化查询,然后根据客户提供的值与图进行可选匹配。
  • C. OPTIONAL MATCH 会搜索可能存在也可能不存在的描述模式,并将模式中不存在的标识符赋值为 NULL。
  • D. 可选匹配子句将获取一组属性值,并将其与数据库中的所有节点进行可选匹配。

13. 选择下面的 Cypher 语句,删除 id 为 3563 的节点及其所有可能的连接关系?请选择所有适用的语句

  • A. MATCH (a:Thing {id:3563}) DETACH DELETE a
  • B. MATCH (a:Thing {id:3563}) OPTIONAL MATCH (a)-[r]-() DELETE a, r
  • C. MATCH (a:Thing {id:3563}) DELETE a
  • D. MATCH (a:Thing {id:3563})-[r]-(b) DELETE a, r

14. 给定一个由标有 "人"(Person)的节点和类型为 "知道"(KNOWS)的关系连接而成的模型,请选择以下与莎拉的朋友和她朋友的朋友相匹配的语句?请选择所有适用的语句。

  • A. MATCH (sarah:Person)-[:KNOWS]->(friend:Person) WHERE sarah.name = "Sarah" RETURN friend
  • B. MATCH (sarah:Person)-[:KNOWS*1...2]->(friend:Person) WHERE sarah.name = "Sarah" RETURN friend
  • C. MATCH (sarah:Person)-[:KNOWS]->(friend:Person) OPTIONAL MATCH (friend)-[:KNOWS]->(fof:Person) WHERE sarah.name = "Sarah" RETURN friend, fof
  • D. 所有这些都是正确的。

15. 使用Neo4j中的Cypher语言创建一个热门电影/电视剧/动漫数据库,要求有至少三类标签、六个节点和两种关系

// 创建 Show 节点
CREATE (got:Show {title: "Game of Thrones"})
	
// 创建 Character 节点
CREATE (jon:Character {name: "Jon Snow"})
CREATE (dany:Character {name: "Daenerys Targaryen"})
CREATE (tyrion:Character {name: "Tyrion Lannister"})
	
// 创建 Actor 节点
CREATE (kit:Actor {name: "Kit Harington"})
CREATE (emilia:Actor {name: "Emilia Clarke"})
CREATE (peter:Actor {name: "Peter Dinklage"})
	
CREATE (kit)-[:ACTED_IN]->(got)
CREATE (emilia)-[:ACTED_IN]->(got)
CREATE (peter)-[:ACTED_IN]->(got)
	
CREATE (jon)-[:HAS_CHARACTER]->(got)
CREATE (dany)-[:HAS_CHARACTER]->(got)
CREATE (tyrion)-[:HAS_CHARACTER]->(got)
	
CREATE (kit)-[:PLAYS]->(jon)
CREATE (emilia)-[:PLAYS]->(dany)
CREATE (peter)-[:PLAYS]->(tyrion)	

16. 当前NoSQL数据库产品中最热门的一种数据库是

17. MongoDB 是由 语言编写的

18. MongoDB 是一个、模式自由的文档型数据库

19. MongoDB的设计采用 ,可通过分片将数据分布在集群机器中

20. MongoDB的逻辑结构是的一种形式

21. 下列数据库中,哪个数据库不是MongoDB默认提供的

  • A. admin数据库
  • B. user数据库
  • C. config数据库
  • D. test 数据库

22. 下列说法中,关于MongoDB文档说法正确的是?

  • A. MongoDB单个文档大小上限为64MB
  • B. 文档的值只可以是字符串类型
  • C. 文档中可以有重复的键
  • D. 不建议自定义_id键

23. 简述MongoDB数据库的优势

  • 易用性:灵活的文档模型。JSON格式简单易学
  • 支持高性能访问数据。存储引擎是文档型数据库的核心组件。
  • 可扩展性:支持大数据分布式存储,服务能力水平可横向弹性扩展