大数据存储Nosql
大数据存储Nosql复习篇
一、理论题、论述题
第1章 绪论
1、NoSQL数据库和关系数据库在设计目标上有何主要区别?
(1)关系数据库
优势:以完善的关系代数理论作为基础,具有数据模型、完整性约束和事务的强一致性等特点,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持。
劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死板、无法较好支持Web2.0应用,事务机制影响了系统的整体性能等。
(2)NoSQL数据库
优势:NoSQL数据库会采用非关系的数据模型,弱化模式或表结构、弱化完整性约束、弱化甚至取消事务机制。可能无法支持,或不能完整的支持SQL语句。目的是实现强大的分布式部署能力——一般包括分区容错性、伸缩性和访问效率(可用性)等。可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用,具有强大的横向扩展能力等。
劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术。
2、分析NoSQL数据库的技术特点。
(1)NoSQL数据库会采用非关系的数据模型
(2)弱化模式或表结构、弱化完整性约束、弱化甚至取消事务机制
(3)可能无法支持,或不能完整的支持SQL语句
(4)目的是实现强大的分布式部署能力——一般包括分区容错性、伸缩性和访问效率
(5)NoSQL大多是开源免费的。
3、NoSQL的典型应用场景
(1) 实时数据分析:NoSQL数据库的高性能和可扩展性使其成为实时数据分析的理想选择。通过分布式存储和并行处理技术,NoSQL数据库可以实时处理海量数据,提供实时的数据分析和可视化服务,帮助企业快速洞察市场趋势和客户需求。
(2)物联网与大数据:物联网产生的数据具有多样性、海量性和实时性的特点,NoSQL数据库以其灵活的数据模型和高效的存储查询能力,成为物联网数据存储和处理的首选方案。同时,NoSQL数据库也广泛应用于大数据处理领域,如日志分析、推荐系统、用户行为分析。
(3)社交媒体与内容管理:社交媒体和内容管理系统中,用户生成的内容占据了主导地位。这些内容具有非结构化、半结构化的特点,且数据规模庞大。NoSQL数据库以其灵活的数据模型和高效的查询性能,为用户提供流畅的内容浏览和互动体验。
(4)金融与交易系统:金融和交易系统对数据的一致性和可用性要求极高。NoSQL数据库通过提供强一致性模型和数据复制技术,确保了数据的高可用性和一致性。同时,NoSQL数据库还支持高并发访问和快速响应,满足金融交易系统对性能的需求。
4、云计算的定义。
云计算是一种模型。基于该模型,可以通过网络实现对可配置共享资源的访问,这种对资源的访问方式是无处不在的、便利的和按需而定的。这些资源可以被迅速的提供和发布,而用户只需要进行少量的管理配置或交互工作即可。
5、云计算的基本特征。
(1)按需自助服务:用户可以根据自身需求,自行配置资源的类型、数量和使用时间,而无需和云计算供应商进行过多交互。
(2)广泛的网络访问:用户即可在任何时间、地点,利用多种终端通过网络和标准的网络协议访问资源。
(3)资源池化:强调资源的集中化、动态分配和多租户模型。好处在于,资 源越集中、单位资源的管理和使用成本就越低。
(4)快速和弹性:是指用户的资源能够快速交付,且进行弹性扩展。即用户申 请完IT资源之后,可以根据需求的变化以手动或自动的方式 调整资源。
(5)可度量的服务:即云服务的的使用和计费是透明、精确,且细粒度的。用户可以根据资源单价和对资源的使用日志计算或核对账单。
6、云计算按照服务类型可以分为哪几类?分别指什么?
7、什么是容器化技术。
容器化可以看作一种应用虚拟化技术或沙盒技术,是将应用及其所需的组件进行打包。打包后的容器可以在和打包环境相 同的任何位置进行部署和运行。由于容器中只含有必要的软件组件,不含操作系统,因此其打包容量较小。
8、数据库的相关概念:
(1)数据库:数据信息的集合,也可以看作按照数据结构来存储和组织信息数据的软件容器或仓库。
(2)数据库管理系统:数据库及其管理软件构成了数据库管理系统,实现数据的管理和使用等功能。
(3)数据库系统:数据库管理系统及其运行的软硬件环境、操作人员乃至手册文档等内容,
构成一个完整体系,称为数据库系统。
(4)数据库应用系统:指在数据库管理系统的支撑下建立的计算机应用系统。
9、从发展趋势上看,NoSQL是否可以取代关系型数据库?并说明原因。
NoSQL不能取代关系型数据库。事实上,NoSQL数据库和关系型数据库是互补关系,在不限定场景的情况下,无法比较谁更强。
关系型数据库能够更好地保持数据的完整性和事务的一致性,以及支持对数据的复杂操作,在现实中拥有更普遍的适用领域。NoSQL数据库做不到上述,但是可以更好地实现分布式环境下对数据的简单管理和查询,即在大数据业务领域具有更大价值。
第2章 NoSQL数据库的基本原理
1. 描述分布式数据管理的特点。
(1)数据分片:使数据均匀分布到多个节点上,可以充分利用各个节点的处理能力、存储能力和吞吐能力。
(2)数据多副本:将数据存储为多个副本,不同的副本存储在不同节点上。
(3)一次写入多次读取:在系统底层只支持新建和追加,系统具有更好的顺序存储特性。
(4)分布式系统的可伸缩性:可以移除故障节点,替换新节点,实现数据的再平衡。
2. 什么是CAP原理?CAP原理是否适用于单机环境?
CAP是指分布式系统中的一致性、可用性、分区容错性。一致性是指分布式系统中所有节点都能对某个数据达成共识。可用性可以理解为分布式系统的响应速度或响应能力。分区容错性指在部分节点故障、以及出现消息丢包的情况下,集群系统的剩余部分仍然可以提供服务。
CAP理论是指在分布式系统中,CAP三个特性不可兼得,只能同时满足两个。CAP不能兼顾,但并非绝对对立。
CAP理论的主要场景是在分布式环境下,在单机环境下,基本可不考虑CAP问题.
3. 简述BASE理论的具体含义。
由于CAP无法兼顾,分布式系统需要根据实际业务要求,对一致性做一定妥协,提供弱一致性保障。具体要求为BASE理论:
(1)基本可用:核心部分或其他数据可用。
(2)软状态/柔性事务:允许多个副本存在暂时的不一致状态。
(3)最终一致性:存在中间状态,但经历一段时间之后,最终会一致。
4. 在数据一致性问题上,ACID和BASE的差别是什么?
(1)ACID是典型的强一致性要求。要求多个节点的数据副本都是一致的,强调数据的一致性。ACID是大多数NoSQL抛弃的机制,因为无法在分布式环境中保证效率。
(2)BASE的最终一致性也可以看作NoSQL允许多个副本可以存在暂时的不同步。结合CAP理论,这种设计强调PA,可以提高响应速度。
5.列举NoSQL的数据模型,描述其基本特点和适用场景,并为每种模式举出1种常见数据库。
(1)键值对存储模式
基本特点:数据以键值对的形式存储,每行数据的结构为:<key, value>。键是唯一的,值可以是任何数据类型。操作简单,主要支持根据键查找值。
适用场景:存放会话信息、用户配置信息、购物车数据:购物信息放入value属性,键名为userid等。
常见数据库:Redis。
(2)文档存储模式
基本特点:可以看作键值对模式的升级,底层存储的每行数据中仍然存在key和value。但Value是采用JSON等格式描述的复杂数据类型。
每条数据的文档格式可以不同。文档格式中支持嵌套等复杂形式。
适用场景:事件记录:事件的数据类型经常变动、内容管理系统及博客平台、
网站分析与实时分析、电子商务应用程序等。
常见数据库:MongoBD。
(3)列存储模式
基本特点:可以看作是一种纵向切分数据的方式,不同列会放到不同的位置存储,实际软件一般也会按照行键再进行横向切片和分布式存储。
对于稀疏表,其存储效率较高。底层一般也是一次写入多次读取的。
在切片内一般会按行键进行排序,以加快分布式检索速度。
适用场景:事件记录、内容管理系统与博客平台、计数器:统计某页面的访问人数等。
常见数据库:HBase。
(4)图存储模式
基本特点:将数据存储为点和边的关系。点通过边相连接,具有名称、类型和属性、相连接的边等关联信息。边一般是单向的,具有名称、类型、起止节点和属性等信息。
适用场景:互联数据、安排运输路线、分派路径和基于位置的服务、推荐引擎等。
常见数据库:Neo4J
6. 布隆过滤器的优缺点是什么?如何降低布隆过滤器的误报率?
布隆过滤器的目的是检查某个元素是否存在于集合中。
优点是空间占用低、检索速度快,缺点则是存储在一定的误报率:当布隆过滤认为某元素存在于集合时,该元素可能并不存在,但如果布隆过滤认为该元素不存在于集合,则肯定不存在。
布隆过滤器的误报率,和哈希算法的个数、二进制向量的大小以及数据总量有关,一般来说二进制向量越大,误报率越低,因此需要在存储空间占用和误报率之间做权衡。降低误报率的方法:(1)采取多个独立的哈希算法同时进行映射。(2)增大二进制向量的大小。
第3章MongoDB原理和使用
1、描述MongoDB数据库的主要特点。
课件写的是:MongoDB是一种知名的文档型NoSQL数据库,用C++语言编写,目前由独立公司维护。主要特点有:支持复杂的数据结构,支持索引、支持聚合查询,以及支持对大文件的存储与管理等。它易用、分布式架构、易扩展、支持多副本,在物联网领域受到广泛关注。
或者:
(1)高可用性:MongoDB采用了分布式架构,数据会自动分布在多台服务器上,从而实现高可用性和容错性。如果一个节点故障,系统会自动将其从集群中删除,并将数据迁移到其他节点上。
(2)高扩展性:MongoDB可以轻松地进行水平扩展和垂直扩展。在水平扩展时,可以添加更多的服务器和节点,以增加处理能力和存储容量;在垂直扩展时,则可以升级硬件设备,以提高单机性能。
(3)灵活性:MongoDB支持动态模式和动态查询,可以根据应用程序需求灵活调整文档结构和查询条件。此外,它还支持复杂的文档嵌套、数组类型和地理位置等特性。
(4)性能优势:MongoDB使用了内存映射文件和快速索引等技术,具有较高的读写性能和查询效率。此外,MongoDB还支持分片和副本集等技术,以进一步提高性能和可靠性。
第4章MongoDB的管理与集群部署
1.描述MongoDB集群的数据多副本策略。
MongoDB支持分片的多副本,多副本采用主从备份形式。MongoDB称这种机制为复制集机制。
主节点负责数据的写入和更新。主节点在更新数据的同时,会将操作信息写入日志,称为oplog。
从节点监听主节点oplog的变化,并根据其内容维护自身的数据更新,使之和主节点保持一致。
2.描述MongoDB的分片机制,支持几种分片策略?
MongoDB将数据水平切分机制称为分片。MongoDB支持对文档的自动分片,分片的依据是分片键,分片键可以由文档的一个或多个字段构成。
MongoDB支持三种分片(片键)策略:升序分片、哈希分片和位置分片:
(1)升序分片会将片键进行升序排序,并在当前分片的数据量达到某个阈值时进行分片。
(2)哈希分片会将片键进行哈希运算,使数据的分布更均匀。
(3)位置分片类似于对片键的前缀或子串进行判断。
3.描述MongoDB的分片集群架构(包含的角色和每个角色的作用)
MongoDB集群由Mongod、Mongos和Config服务器组成。
(1)负责存储实际数据分片的设备称为Mongod。
(2)Mongos服务器,作为用户访问集群的入口,负责与客户端的交互,并在内存中缓存分片数据的存储和路由信息。
(3)Config服务器,负责持久化存储各类元数据和配置信息,当Mongos服务器启动时,会通过Config服务器读取相关信息并缓存到内存。
第5章 图数据库Neo4J
1.什么是Neo4j?并对其数据模型进行详细描述。
Neo4j是一个基于Java语言的开源图数据库系统。Neo4j具有强大的图处理和查询搜索能力,通过专用的Cypher语言完成各类操作。
Neor4j采用将数据存储为节点和边的图存储模式,其中节点表示实体、边表示实体之间的关系。
2.简要描述Neo4j的使用场景(至少4个)。
处理社交网络、人机关系和商品关联推荐、信用卡套现行为识别,知识图谱等业务。
3.Neo4j 作为一种图数据库,在构建知识图谱方面有哪些优势?
(1)Neo4j的易用性较好,功能也很强大
(2)通过专门的Cypher语言完成各类图数据的查询和分析,
(3)提供多种编程语言接口,
(4)支持在集群上进行超大表的分布式查询
(5)支持Windows和Linux部署
第6章 键值对数据库Redis
1.Redis的常见应用场景。
很多大型电商网站、视频直播和游戏应用等,存在大规模数据访问,对数据查询效率要求高,且数据结构简单,不涉及太多关联查询。
(1)(电商网站)秒杀抢购
(2)(视频直播)消息弹幕
(3)(游戏应用)游戏排行榜
(4)(社交APP)返回最新评论/回复
2.描述Redis的数据类型。
Redis支持的数据类型有字符串、散列、列表、集合、有序集合。
3.Redis数据库的集群架构(拓扑架构)。(或课本P178-179)
(1)主从复制:主从结构具有读写分离,提高效率、数据备份,提供多个副本等优点。
(2)哨兵机制: 哨兵是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 master 并将所有的 slave 连接到新的 master。
(3)Redis集群:Redis没有使用一致性哈希机制,而是引入了哈希槽的概念。Redis 集群有16384个哈希槽,集群中所有设备平分这些哈希槽,数据则根据其行键的散列计算结果,映射到不同的哈希槽中。
4.Redis的持久化方式是什么?各自的优缺点?
Redis提供了两种数据持久化存储机制,即RDB和AOF,以实现数据备份和故障恢复等功能。
RDB为Redis默认的持久化存储机制,指在指定时间间隔内将数据保存为快照,其经常用于对整个数据集的备份,存储格式比较紧凑,备份恢复性能较高。但由于是定时备份,因此在上一次备份之后改动的数据会在故障时丢失。
AOF以文本方式逐次记录命令和数据,将它们追加到一个AOF文件末尾。AOF文件的体积较大,且数据恢复的效率较低,但AOF的实时性好,遇到故障时最多损失1s的数据。
5.Redis的事务是什么?怎么操作实现?它和传统的MySQL数据库事务有什么不同。
是什么:Redis支持事务机制,即将多个指令放入一个队列,并批量顺序执行。
不同:这种事务机制和传统关系型数据库的事务机制有所不同,Redis事务并不能保证整个事务的原子性。也就是说,当Redis事务中出现个别语句执行失败时,Redis会继续执行其他语句,而不是回滚整个事务。即其事务机制的实质为命令的批处理机制。
操作实现:在Redis中使用multi和exec指令可以实现事务。
第7章MongoDB原理和使用
1.HBase和Cassandra在架构上有什么不同?各自的架构有什么优缺点?
HBase和Cassandra在架构上的主要区别在于数据存储模型和集群管理方式。HBase是基于Hadoop的分布式列式存储系统,采用HDFS(Hadoop Distributed File System)作为底层存储,并依赖Zookeeper进行集群管理和协调。它是一个强一致性的系统,通常用于需要精确一致性和顺序读取的场景。优点是高效的随机读取和强一致性,但缺点是集群管理复杂且扩展性较差。Cassandra则是一个分布式的列族存储系统,基于对等节点架构,没有中心化的协调服务,采用自定义的分布式协议(Gossip Protocol)进行节点间通信。它支持最终一致性,能够在高可用性和低延迟下进行扩展,适用于需要高可用性和大规模数据处理的场景。Cassandra的优点是扩展性好,支持灵活的配置一致性级别,但缺点是可能会面临一致性问题,尤其是在高并发写入时。总体来说,HBase适合需要强一致性和依赖Hadoop生态系统的场景,而Cassandra适合分布式、大规模、高可用性的数据存储需求。
2.Cassandra表中的主键分为哪几种类型?如何区分它们?
主键、复合键、分区键
当表中只有一个主键,主键就是分区键。当表中有多个主键时,第一个主键是分区键,其他为分簇键
单一主键:主键由单个列构成,仅包含分区键。
复合主键:主键由多个列构成,其中第一部分是分区键,后续部分为分簇键。
分区键:主键的前一部分由多个列组成,表示复合分区键,后续部分是分簇键。
3.Cassandra如何支持数据一致性?
Cassandra通过以下方式支持数据一致性:
(1)一致性级别:为每个操作=定义不同的一致性级别,可以灵活地在一致性、可用性和性能之间进行权衡。
(2)数据副本机制:通过将数据复制到多个节点来提高可用性和容错性,并在读取时通过副本检查确保数据一致性。
(3)冲突解决机制:通过轻量级事务和反向增量修复等机制来确保数据一致性。
(4)合并与修复:定期的后台修复机制保证副本之间的一致性。
(5)最终一致性:Cassandra默认遵循最终一致性模型,但通过可调一致性级别和修复机制,提供了一定的一致性保障。
因此,Cassandra的设计旨在提供高可用性和高性能的同时,通过可调一致性级别确保数据在不同场景下的一致性。
第8章 Hadoop和HBase简介
1. HDFS是否属于NoSQL数据库?请说明用HDFS进行数据管理存在的问题。
HDFS不属于NoSQL数据库。用HDFS进行数据管理存在的问题:
(1)HDFS不支持对数据的随机读写。
(2)HDFS没有数据表的概念,不能提供对数据的表格化存储。
(3)HDFS无法针对行数统计、过滤扫描等常见数据查询功能。
2. HBase采用了什么样的数据结构?
HBase采用的是一种面向列的键值对存储模式。HBase表中,列族是表结构的一部分,需要在建表时预先定义。
列不属于表结构,HBase不会预先定义列名及其数据类型和值域等内容。每一个记录中的每个字段必须记录自己的列名(列标识符)以及值和时间戳。
3. HBase的拓扑结构是什么?每个角色起什么作用?
HBase采用主从式架构,包括一个主节点(Hmaster)和若干个从节点(Hregionserver)。除此之外,还需要Zookeeper来实现节点监控和容错。
(1)Zookeeper是一个分布式协调服务,实现节点监控、活跃主节点选举、配置维护等功能。1.维护元数据的总入口,以及记录Master节点的地址
2.监控集群,如果Hregionserver出现故障,则通知Master,Master会将其负责的分区移交给其他Hregionserver
3.当活跃Master节点故障的情况下,Zookeeper会在备用Master节点中选举一个新的活跃Master节点。
(2)HMaster节点是所有Hregionserver的管理者,负责对Hregionserver的管理范围进行分配,但不负责管理用户数据表。
(3)Hregionserver是用户数据表的实际管理者,在分布式集群中,数据表会进行水平分区,每个Hregionserver只会对一部分分区进行管理——负责数据的写入、查询、缓存和故障恢复等。用户表最终是以文件形式存储在HDFS上,但如何将写入并维护这些文件,则是由Hregionserver负责的。
4. 描述meta表的结构。
列族info中包含三个列:regioninfo、server和serverstartcode。
⚫ Regioninfo中记录了行键范围、列族列表和属性;
⚫ server记录了负责的Regionserver地址;
⚫ serverstartcode则记录了Regionserver的启动时间。
(1.rowkey中第一个分隔符前存的是表名;
2.第二分隔符前存的是region的第一个rowKey:
1)如果这个地方为空的话,表明这是table的第一个region。并且如果一个region中startkey和endkey都为空的为,表明这个table只有一个region;
2)在meta表中,startkey 靠前的region会排在startkey 靠后的region前面。(Hbase中的keys按照字段顺序排序的)。
3.region id代表region的id,通常基于region创建时的timestamp;
4.regioninfo是HRegionInfo的序列化值;5.server是指服务器的地址和端口;
6.serverstartcode是指服务开始的timestamp。)
5. 预写日志(WAL)的作用。
当数据被写入memstore之前,Regionserver会先将数据写入预写日志,预写日志一般被写入HDFS,但键值写入时不会被排序,也不会区分Region。
出现节点宕机、线程重启等问题时,memstore中未持久化的数据会丢失。当Regionserver恢复后,会查看当前WAL中的数据,并将记录进行重放,根据记录的表名和分区名,将数据恢复到指定的store中。
在进行自动或手动的数据持久化操作之后,Regionserver会将不需要的WAL清除掉。
第9章 其他NoSQL数据库简介
1、时序数据库可以用在哪些场景?(4个)
构建监控系统:例如互联网用户行为日志、服务器集群监控、物联网设备监控等。物联网设备通常会产生大量的传感器数据,这些数据需要实时地存储和分析。时序数据库可以高效地存储和查询这些传感器数据,以便提供实时的监控和分析功能。
金融交易记录:金融机构需要记录每一笔交易的时间戳、金额、交易类型等信息。时序数据库可以高效地存储和查询这些交易记录,并提供实时的交易数据分析和预警功能。
气象观测数据:气象观测站可以生成大量的气象数据,如温度、湿度、气压等。时序数据库可以高效地存储和查询这些数据,并提供实时的天气预报和灾害预警功能。
制造业生产监控:制造商需要对生产线上的各种传感器数据进行实时监测和分析。时序数据库可以高效地存储和查询这些数据,并提供实时的生产数据可视化和故障诊断功能。
能源管理:能源管理系统需要实时监测和分析各种能源数据,如电力消耗、能源供应、能源价格等。时序数据库可以高效地存储和查询这些数据,并提供实时的能源数据分析和优化建议功能。
2、时序数据库是否需要具备灵活的数据更新能力?为什么?
时序数据库通常不需要具备灵活的数据更新能力,因为时序数据一旦记录,通常不需要修改。时序数据库的设计目标是高效地存储和查询时间序列数据,而非频繁地修改或更新数据。因此,时序数据库并不需要具备像传统关系型数据库那样灵活的更新能力,更多的是通过数据追加、聚合和自动删除策略来管理数据。对数据更新的需求较少,因此时序数据库的设计通常专注于高效插入和高效查询,而不是灵活的数据修改。
3.搜索引擎的工作原理是什么?
搜索引擎的工作原理涉及多个复杂的步骤,主要包括抓取、索引、排名和返回结果。
(1)抓取:爬虫抓取网页上的信息。
(2)索引:将抓取到的数据整理成索引,以便快速检索。
(3)排名:通过排名算法,基于多个因素对网页进行排序。
(4)返回结果:搜索引擎根据排名返回最相关的结果。
4.搜索引擎中如何对搜索结果排序的?
搜索引擎通过复杂的算法对搜索结果进行排序,主要考虑多个因素。首先,搜索引擎会分析页面与查询关键词的匹配度,评估页面的相关性。其次,外部链接的质量和数量、页面的权威性、用户体验也会影响排名。此外,页面内容的原创性和质量、用户的搜索意图以及网站的技术优化等都是重要的排名因素。搜索引擎还会根据用户行为数据,如点击率和停留时间,来进一步调整排名。最终,搜索引擎目标是提供最相关、最有价值的内容,以满足用户的需求。
二、数据库设计
考试题型:
1.给你一个E-R,让你画出HBase或者MangoDB的数据库设计
2.给你一种数据库,让你转化成另外一种数据库
3.根据实际场景选择合适的数据库并进行设计
复习参考:
一、HBase数据库设计(列式存储)
(表名、行键Row Key、列族Column Family、列名Column Name和 时间戳Timestamp):
考试总结:考试先写文字描述数据库,然后进行画表格
(1)描述数据库设计,数据库有几个表,每个表存储什么内容。对于每个表,几个列族,列族存储什么内容。行键怎么设计,有几个列名,都分别存储什么内容等,以及如何进行实体和关系的增删改查。
(2)画出设计的数据库,并填入实际数据,每个表至少包含2个行键,每个行键至少包含2个列名和值。
(3)如果给的是E-R图,让你用HBase进行存储应该如何做,二者的对应关系:
实体:每个实体可以对应一个 HBase 表。例如:students 表对应学生,courses 表对应课程,enrollments 表对应学生选课。
属性:每个属性对应 HBase 中的列族和列。(学生的姓名和年龄可在 personal_info 列族下)
关系:多对多关系通常通过特殊的设计(如组合行键)来处理。例如,学生选课的关系通过 StudentID_CourseID 的组合行键来表示。
二、MangoDB数据库设计(文档型数据库)
(数据库、集合、文档、字段、索引、字段)
考试总结:考试先写文字描述数据库,然后写具体的数据。
(1)描述数据库设计。数据库有几个集合,每个集合存储什么内容。集合中文档的设计,有哪些键,分别存储什么内容,以及如何进行实体和关系的增删改查。
(2)画出设计的MongoDB数据库,并填入实际数据,每个集合至少2个文档,每个文档至少3个键值对。
(3)E-R图与MangoDB的映射转化关系:
ER 图中的实体可以直接映射为 MongoDB 的集合。
实体的属性映射为 MongoDB 文档中的字段。
关系通过嵌套文档或引用来表示,具体方式取决于关系的性质和查询需求。
嵌套文档适用于数据之间关系较紧密,且经常一起查询的场景。引用适用于关系较松散,数据分散存储的场景。
(4)HBase和MangoDB的映射关系:
HBase 行键 → MongoDB _id
HBase Column Families 列族→ MongoDB 文档中的嵌套字段
HBase Column Qualifiers 列名→ MongoDB 字段名
HBase TimeStamps → MongoDB 中的时间戳字段
参考写法:
三、Neo4j–图数据库转成HBase和MangoDB
(1)描述数据库设计。数据库有几种节点标签,每种标签的节点包括什么属性;有几种关系标签,每种关系连接什么类型的节点,包括什么属性;如何进行实体和关系的增删改查。
(2) 画出设计的数据库,并填入实际数据,至少包含2种标签,每种标签至少2个节点,2个属性;至少包含一种关系标签,每种关系标签至少2个关系,2个属性。
四、Redis键值对数据库
(1)描述数据库设计。数据库有几种键,分别存储什么内容,采用什么数据类型,以及如何进行数据的增删改查。
(2)画出设计的Redis数据库,并填入实际数据。
相关文章:
大数据存储Nosql
大数据存储Nosql复习篇 一、理论题、论述题 第1章 绪论 1、NoSQL数据库和关系数据库在设计目标上有何主要区别? (1)关系数据库 优势:以完善的关系代数理论作为基础,具有数据模型、完整性约束和事务的强一致性等特点,借助索引机…...
Git常用指令
集中式管理工具 SVN 分布式管理工具 git 优点:速度,简单设计,允许高并发的分支,完全分布式 vi ~.txt //编写文件(分支) 工作区 git add ~.txt …...
2024 年发布的 Android AI 手机都有什么功能?
大家好,我是拭心。 2024 年是 AI 快速发展的一年,这一年 AI 再获诺贝尔奖,微软/苹果/谷歌等巨头纷纷拥抱 AI,多款强大的 AI 手机进入我们的生活。 今年全球 16% 的智能手机出货量为 AI 手机,到 2028 年,这…...
k8s基础(2)—Kubernetes-Namespace
一、Namespace概述 名字空间 在 Kubernetes 中,名字空间(Namespace) 提供一种机制,将同一集群中的资源划分为相互隔离的组。 同一名字空间内的资源名称要唯一,但跨名字空间时没有这个要求。 名字空间作用域仅针对带有…...
车路云网图安全风险复杂交织
随着网联汽车与智能交通深度融合,车云路一体协同发展,车联网迎来全面发展的战略机遇期,但在车联网高速发展的同时,网络安全威胁也不断敲响警钟,网络暴露面扩大,车联网网络安全风险快速升高。车路云一体化也…...
Markdown如何添加任务列表-复选框的添加
Markdown如何添加任务列表-复选框的添加 前言语法讲解使用场景及应用实例代码整和渲染结果小结其他文章快来试试吧☺️ Markdown如何添加任务列表-复选框的添加👈点击这里也可查看 前言 To-do任务列表是一种很常见的时间管理工具,它适用于工作计划&…...
Android 旋转盘导航栏
1.直接上源码: package com.you.arc;import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.graphics.RectF; import android.support…...
matlab-数字滤波器设计与实战
文章目录 数字滤波器设计FIR 滤波器设计IIR 滤波器设计巴特沃斯滤波器切比雪夫 I 型滤波器切比雪夫II型椭圆滤波器线性相位与非线性相位零相位响应数字滤波器实战数字滤波器产生延迟的主要原因补偿滤波引入的延迟补偿常量滤波器延迟补偿与频率有关的延迟从信号中除去不需要的频…...
虚拟机中的时统卡功能和性能调优
【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适…...
[算法] [leetcode-20] 有效的括号
20 有效的括号 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合…...
TDengine 如何进行高效数据建模
1.背景 数据建模对于数据库建立后整体高效运行非常关键,不同建模方式,可能会产生相差几倍的性能差别 2. 建库 建模在建库阶段应考虑几下几点: 建多少库 根据业务情况确定建库个数,TDengine 不支持跨库查询,如果业…...
2024.12.30(多点通信)
作业: 1、将广播发送和接收端实现一遍,完成一个发送端发送信息,对应多个接收端接收信息实验。 发送端 #include <myhead.h>#define PORT 8888 #define IP "192.168.124.255"int main(int argc, const char *argv[]) {//1、…...
前端路由layout布局处理以及菜单交互(三)
上篇介绍了前端项目部署以及基本依赖的应用,这次主要对于路由以及布局进行模块化处理 一、 创建layout模块 1、新建src/layout/index.vue <template><el-container class"common-layout"><!-- <el-aside class"aside">&l…...
Zynq PS端外设之GPIO
1. GPIO(通用输入/输出) GPIO外设有4个Bank,Bank0/1通过MIO连接到PS的引脚上;Bank2/3通过EMIO连接到PL的引脚上。 注意:Bank1的电平要改成LVCOMS 1.8 GPIO寄存器 寄存器: DATA_RO: 读取GPIO的输…...
Java 操作 PDF:从零开始创建功能丰富的PDF文档
Java 操作 PDF:从零开始创建功能丰富的PDF文档 引言环境准备依赖引入 创建PDF文档一键生成空白PDF添加表单字段(选项)添加电子签名添加公章图像 结论 引言 随着数字化办公的普及,PDF格式因其跨平台兼容性和安全性而被广泛应用于各…...
12.30-1-5学习周报
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 文章链接摘要Abstract一、方法介绍1.HAT-CIR2.Horde3.DWGRNet 二、实验总结 文章链接 https://arxiv.org/pdf/2405.04101 摘要 本博客介绍了论文《Continual lea…...
H3C Tftp 备份与恢复配置文件
pc 运行 tftp 软件与路由器相连。打开 tftp。 在交换机用户试图下,dir /all 命令查看设备的配置文件。 备份命令:将配置文件备份到地址为 10.10.10.2 的 tftp 服务器 <H3C>backup startup-configuration to 10.10.10.2 恢复命令:恢复配…...
【Matlab算法】基于改进人工势场法的移动机器人路径规划研究(附MATLAB完整代码)
基于改进人工势场法的移动机器人路径规划研究 结果图摘要1. 引言2. 方法说明2.1 基本原理2.2 改进策略3. 核心函数解释3.1 改进的斥力计算函数3.2 路径规划主函数4. 实验设计4.1 实验环境设置4.2 关键参数选择5. 结果分析5.1 实验结果5.2 性能分析附录:完整代码参考文献结果图…...
基于Springboot校园失物招领系统【附源码】
基于Springboot校园失物招领系统 效果如下: 系统登陆页面 物品页面 系统首页面 失物招领管理页面 失物认领页面 宣传视频页面 物品挂失留言管理页面 宣传视频类型管理页面 研究背景 在校园环境中,失物招领是一个常见的问题。传统的失物招领方式主要依…...
Vue 自定义指令
首先,我们知道vue中有很多自带指令,v-bind、v-on、v-model等。但在业务开发中,我们常见一些自定义指令如:v-copy、v-longpress等。那么如何定义自己所需的指令呢? 接下来我们分别从指令注册、指令的钩子函数、指令的参…...
JAVA-制作小游戏期末实训
源码 import game.frame.Frame;public class App {public static void main(String[] args) {System.out.println("starting......");new Frame();} } package game.controller;import game.model.Enemy;public class EnemyController implements Runnable{private…...
【Vue教程】使用Vite快速搭建前端工程化项目 | Vue3 | Vite | Node.js
🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 🚩今天毛毛张分享的是关于如何快速🏃♂️搭建一个前端工程化的项目的环境搭建以及流程🌠 文章目录 1.前端工程化环境搭建&#…...
4.CSS文本属性
4.1文本颜色 div { color:red; } 属性值预定义的颜色值red、green、blue、pink十六进制#FF0000,#FF6600,#29D794RGB代码rgb(255,0,0)或rgb(100%,0%,0%) 4.2对齐文本 text-align 属性用于设置元素内文本内容的水平对齐方式。 div{ text-align:center; } 属性值解释left左对齐ri…...
【工具整理】WIN换MAC机器使用工具整理
最近公司电脑升级,研发同学统一更换了 Mac Book Pro 笔记版电脑,整理一下安装了那些软件以及出处,分享记录下~ 知识库工具 1、语雀 网址:语雀,为每一个人提供优秀的文档和知识库工具 语雀 个人花园&…...
Elasticsearch向量检索需要的数据集以及768维向量生成
Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一:使用fromsize实现分页 快速掌握Elasticsearch检索之二:滚动查询(scrool)获取全量数据(golang) Elasticsearch检索之三:官方推荐方案search_after…...
《小型支付商城系统》项目(一)DDD架构入门
目录 1.DDD架构 1.1充血模型 1.2领域模型 1.2.1实体 1.2.2值对象 1.2.3聚合 1.2.4领域服务 1.2.5工厂 1.2.6仓储(Repository) 2.DDD建模 3.DDD工程模型 项目介绍:知识星球 | 深度连接铁杆粉丝,运营高品质社群ÿ…...
web课程设计--酷鲨商城-springboot和vue
文章目录 页面截图技术分析数据库代码地址 页面截图 登陆页面: 分类列表 添加分类 轮播图列表 添加轮播图 商品列表 添加商品信息 技术分析 前端使用 html页面的 vue.js(vue2)和element-ui绘制前端界面 后台使用Springbootmybatis来实现crud。还有一…...
解决virtualbox克隆ubuntu虚拟机之后IP重复的问题
找遍了国内论坛,没一个能解决该问题的,所以我自己写个文章吧,真讨厌那些只会搬运的,污染国内论坛环境,搜一个问题,千篇一律。 问题 操作系统版本为"Ubuntu 24.04 LTS" lennytest1:~$ cat /etc…...
活动预告 |【Part1】Microsoft Azure 在线技术公开课:使用 Azure DevOps 和 GitHub 加速开发
课程介绍 通过 Microsoft Learn 免费参加 Microsoft Azure 在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft Cloud 技术的了解。参加我们举办的“使用 Azure DevOps 和 GitHub 加速开发”活动,了解迁移到 DevOps 所需的合适工具和…...
SpiderFlow平台v0.5.0之数据库连接
一、寻找lib目录安装方式 在 SpiderFlow 平台中,连接数据库时需要指定数据库的 DriverClassName,并确保正确配置数据库驱动。通常,驱动文件(JAR 文件)需要放置在指定的文件夹中,以便 SpiderFlow 可以找到并…...
springboot集成阿里云短信服务
springboot集成阿里云短信服务 一.阿里云账号准备 流程:注册阿里云账号>短信服务>新增资质>新建签名>新建模版>申请秘钥>用代码测试 1.注册阿里云账号 2、登录成功后, ① 在首页搜索短信服务 ② 打开第一个搜索结果 ③ 免费开通 ④ 可以根据…...
Redis 实战篇 ——《黑马点评》(上)
《引言》 在进行了前面关于 Redis 基础篇及其客户端的学习之后,开始着手进行实战篇的学习。因内容很多,所以将会分为【 上 中 下 】三篇记录学习的内容与在学习的过程中解决问题的方法。Redis 实战篇的内容我写的很详细,为了能写的更好也付出…...
Redis的生态系统和社区支持
Redis的生态系统和社区支持 1. Redis 生态系统 1.1 Redis核心 Redis 是一个高性能的内存存储系统,支持丰富的数据结构(如字符串、列表、集合、哈希和有序集合)。它的核心提供了: 高性能数据存储:单线程模型支持每秒数百万级别的操作。多种数据结构:适用于多样化场景,如…...
基于C语言从0开始手撸MQTT协议代码连接标准的MQTT服务器,完成数据上传和命令下发响应(华为云IOT服务器)
文章目录 一、前言二、搭建开发环境三、网络编程基础概念科普3.1 什么是网络编程3.2 TCP 和 UDP协议介绍3.3 TCP通信的实现过程 四、Windows下的网络编程相关API介绍4.1 常用的函数介绍4.2 函数参数介绍4.3 编写代码体验网络编程 五、访问华为云IOT服务器创建一个产品和设备5.2…...
什么是 GPT?Transformer 工作原理的动画展示
大家读完觉得有意义记得关注和点赞!!! 目录 1 图解 “Generative Pre-trained Transformer”(GPT) 1.1 Generative:生成式 1.1.1 可视化 1.1.2 生成式 vs. 判别式(译注) 1.2 Pr…...
IDEA 编辑器自动识别 Dockerfile 类型高亮和语法提示
在 IDEA 中,如果项目里面的只有一个 Dockerfile文件时,那么此时使用打开这个文件都是 ok 的,支持语法高亮和关键词提示。 如果我们有多个 Dockerfile 时, 比如 A_Dockerfile , B_Dockerfile , C_Dockerfile, 这个时候你会发现 IDE…...
AI知识库与用户行为分析:优化用户体验的深度洞察
在当今数字化时代,用户体验(UX)已成为衡量产品成功与否的关键指标之一。AI知识库作为智能客服系统的重要组成部分,不仅为用户提供快速、准确的信息检索服务,还通过用户行为分析,为产品优化提供了深度洞察。…...
什么是Redis哨兵机制?
大家好,我是锋哥。今天分享关于【什么是Redis哨兵机制?】面试题。希望对大家有帮助; 什么是Redis哨兵机制? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 哨兵(Sentinel)机制是 Redis 提…...
JavaScript中如何创建对象
在JavaScript中,创建对象有多种方法。以下是几种常见的方式: 1. 对象字面量 这是最直接和常用的创建对象的方法。使用花括号 {} 包围一组键值对来定义一个对象。 let person {name: "John",age: 30,greet: function() {console.log("…...
2025:OpenAI的“七十二变”?
朋友们,准备好迎接AI的狂欢了吗?🚀 是不是跟我一样,每天醒来的第一件事就是看看AI领域又有什么新动向? 尤其是那个名字如雷贯耳的 OpenAI,简直就是AI界的弄潮儿,一举一动都牵动着我们这些“AI发…...
Mysql(MGR)和ProxySQL搭建部署-Kubernetes版本
一、Mysql(MGR) 1.1 statefulSet.yaml apiVersion: apps/v1 kind: StatefulSet metadata:labels:app: mysqlname: mysqlnamespace: yihuazt spec:replicas: 3serviceName: mysql-headlessselector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:affinity:p…...
uni-app 多平台分享实现指南
uni-app 多平台分享实现指南 在移动应用开发中,分享功能是一个非常常见的需求,尤其是在社交媒体、营销活动等场景中。使用 uni-app 进行多平台开发时,可以通过一套代码实现跨平台的分享功能,涵盖微信小程序、H5、App 等多个平台。…...
Windows系统下载、部署Node.js与npm环境的方法
本文介绍在Windows电脑中,下载、安装并配置Node.js环境与npm包管理工具的方法。 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,其允许开发者使用JavaScript编写命令行工具和服务器端脚本。而npm(Node Package Manager)则…...
Typora 最新版本下载安装教程(附详细图文)
文章简介 在当今快节奏的信息化时代,简洁高效的写作工具成为了每位内容创作者的必需品。而Typora,这款备受推崇的 Markdown 编辑器,正是为此而生。它采用无缝设计,去除了模式切换、预览窗口等干扰,带来真正的实时预览…...
将一个变量声明为全局变量比如:flag1=false;然后通过jQuery使用js一个方法,将它设置为不可修改
方法 1:使用 Object.defineProperty 通过 Object.defineProperty 将全局变量设置为只读属性。 // 声明全局变量 var flag1 false;// 使用 Object.defineProperty 将其设置为不可修改 Object.defineProperty(window, flag1, {configurable: false, // 不允许删除属…...
找不到qt5core.dll无法运用软件的解决办法
在运行某些软件或游戏时,部分用户会遇到电脑显示由于找不到qt5core.dll,无法继续执行代码的问题,下面就给大家分享几种简单的解决方法,轻松恢复软件正常运行。 导致qt5core.dll缺失的原因 qt5core.dll是 Qt 应用程序框架的一部分…...
集线器,交换机,路由器,mac地址和ip地址知识记录总结
一篇很不错的视频简介 基本功能 从使用方面来说,都是为了网络传输的标识,和机器确定访问对象 集线器、交换机和路由器 常听到路由器和集线器,下面是区别: 集线器 集线器:一个简单的物理扩展接口数量的物理硬件。…...
Javascript算法——回溯算法(组合问题)
相关资料来自《代码随想录》,版权归原作者所有,只是学习记录 回溯 回溯模板 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点…...
【人工智能机器学习基础篇】——深入详解无监督学习之聚类,理解K-Means、层次聚类、数据分组和分类
深入详解无监督学习之聚类:如K-Means、层次聚类,理解数据分组和分类 无监督学习是机器学习中的一个重要分支,旨在从未标注的数据中发现潜在的结构和模式。聚类(Clustering)作为无监督学习的核心任务之一,广…...
从0到机器视觉工程师(二):封装调用静态库和动态库
目录 静态库 编写静态库 使用静态库 方案一 方案二 动态库 编写动态库 使用动态库 方案一 方案二 方案三 总结 静态库 静态库是在编译时将库的代码合并到最终可执行程序中的库。静态库的优势是在编译时将所有代码包含在程序中,可以使程序独立运行&…...