1. 绪论 

Ø 在典型互联网业务中,关系型数据库有哪些瓶颈?

  1. 横向扩展(计算机集群)需要解决的问题

如何管理集群? 数据如何存储? 如何提高查询效率? 如何快速发现并排除故障?

2. 关系型数据库由于数据模型、完整性约束和事务的强一致性等特点,导致其难以实

现高效率、易横向扩展的分布式部署架构,而关系模型、完整性约束和事务特性等在典型互

联网业务中(可能)并不能体现出优势。

3. 然而很多“新业务”对事务和一致性并无很高的要求。

搜索引擎是否需要强事务特性? 日志分析是否需要严格的一致性?

Ø 分析 NoSQL 数据库的技术特点。

基于集群部署的、非关系型的、无模式的数据库,通常是开源软件。

1.弱化模式或表结构、弱化完整性约束、弱化甚至取消事务机制,目的是实现强大的分布式部署能力——一般包括分区容错性、伸缩性和访问效率(可用性)等

2.大多是开源免费的,但可能缺乏完善的文档和服务

3.一些 NoSQL 数据库会强调快速检索和快速读写能力

4. 可能无法支持,或不能完整的支持SQL语句

5.大多起源于互联网企业,更适应互联网业务

6. NoSQL 可以细分为多种数据模型,也可以是多种数据模型的结合

7.不同类型的关系型或 NoSQL 数据库侧重点不同,不能简单地说谁更优秀

Ø NoSQL 是否可以取代关系型数据库?描述两者的关系。

NoSQL 和关系型数据库可以看作互补关系,可以在不同的应用场景发挥各自的优势。

在不限定场景的情况下,无法比较谁更强大。

关系型数据库仍是应用较广泛的数据库,而 NoSQL 也得到了广泛的应用。

Ø NoSQL 可以解决大数据技术体系中的哪些问题?

NoSQL 系统的分布式设计、易用性设计和接口设计等,均能够很好的满足大数据领域

的业务要求和性能要求,可以用在大数据的存储、管理和查询等阶段。但 NoSQL 的数据处

理、统计与分析能力通常较弱,可能需要和其他大数据工具配合使用,来解决这一问题

Ø NoSQL 的典型应用场景。

(1)网站或网络应用系统中的数据存储或缓存

(2)海量日志数据或监控数据的管理、查询和统计

(3)作为 OLAP/OLTP 系统的数据支撑

Ø 云计算的定义。

云计算是一种模型。基于该模型,可以通过网络实现对可配置共享资源(包括网络、服

务器、存储、应用和服务等)的访问,这种对资源的访问方式是无处不在的、便利的和按需

而定的。这些资源可以被迅速的提供和发布,而(用户)只需要进行少量的管理配置或(界

面)交互工作即可

Ø 云计算的基本特征。

1.按需自助服务 用户可以根据自身需求,自行配置资源的类型、数量和使用时间,而无

需和云计算供应商进行过多交互。

2.广泛的网络访问 用户即可在任何时间、地点,利用多种终端(例如:手机或电脑)通

过网络和标准的网络协议访问资源。

3.资源池化 强调资源的集中化、动态分配和多租户模型。好处在于,资源越集中、单位

资源的管理和使用成本就越低。

4.快速和弹性 是指用户的资源能够快速交付,且进行弹性扩展。即用户申请完 IT 资源

之后,可以根据需求的变化以手动或自动的方式调整资源。

5.可度量的服务 即云服务的的使用和计费是透明、精确,且细粒度的。用户可以根据资

源单价和对资源的使用日志计算或核对账单。

Ø 云计算按照服务模式可以分为哪几类?分别指什么?

1.基础设施即服务(IaaS):提供虚拟化的计算资源,如虚拟机、存储和网络,用户可以

租用这些资源而无需关心底层硬件。

2.平台即服务(PaaS):提供开发平台,允许开发人员在云中构建、测试和部署应用程序。

3.软件即服务(SaaS):通过互联网提供应用程序,用户可以直接使用,无需安装和维护

软件。

Ø 什么是容器化技术

可以看作一种应用虚拟化技术或沙盒(sandbox)技术,是将应用及其所需的组件进行打包。打包后的容器可以在和打包环境相同的任何位置进行部署和运行。由于容器中只含有

必要的软件组件,不含操作系统,因此其打包容量较小。

2. NoSQL 数据库的基本原理

Ø 描述分布式数据管理的特点。

1. 数据分片: 使数据均匀分布到多个节点上,执行查询或处理任务时,各个节点只查

询自身数据,实现并行处理

2. 数据多副本: 将数据存储为多个副本,不同的副本存储在不同节点上,通常是以数

据分片为单位实现多副本

3. 一次写入多次读取: 在系统底层只支持新建和追加,此时系统具有更好的顺序存储特性。

4. 分布式系统的可伸缩性: 增加、移去或替换节点

5. 异步通信机制:使用异步消息机制进行节点间通信。

Ø 什么是 CAP 原理?CAP 原理是否适用于单机环境?

(1)CAP 是指分布式系统中的 Consistency(一致性)、Availability(可用性)、Partition

tolerance(分区容错性)。

l Consistency(一致性),是指分布式系统中所有节点都能对某个数据达成共识(例如:

多个副本内容是否相同,当出现不一致时,以哪个副本为准。

l Availability(可用性),这里可以理解为分布式系统的响应速度,或响应能力。

l Partition tolerance(分区容错性),指在部分节点故障、以及出现消息丢包的情况下,

集群系统(的剩余部分)仍然可以提供服务(完成数据访问,这一般需要通过合理的数据多

副本机制实现。

CAP 理论是指在分布式系统中,CAP 三个特性不可兼得,只能同时满足两个。CAP不能兼顾,但并非绝对对立。 

(2)不适用,CAP 是针对分布式系统的理论,单机系统不存在分区容错性(P)的问

题 。

Ø 试述 BASE 的具体含义。

由于CAP无法兼顾,分布式系统需要根据实际业务要求,对一致性做一定妥协,提供弱一致性保障。具体要求为BASE理论:

Basically Available(基本可用):核心部分或其他数据可用。

l Soft-state(软状态/柔性事务):允许多个副本存在暂时的不一致状态。

l Eventual Consistency (最终一致性):存在中间状态,但经历一段时间之后,最终会

一致。

Ø 在数据一致性问题上,ACID 和 BASE 的差别是什么?

BASE:允许多个副本可以存在暂时的不同步(即异步更新),结合 CAP 理论,这种设计

强调 PA,可以提高响应速度。强调的软状态、弱一致性等.

ACID: 是典型的强一致性要求。要求多个节点的数据副本都是一致的,强调数据的一致

性。ACID 是大多数 NoSQL 抛弃的机制,因为无法在分布式环境中保证效率。

Ø 分布式系统的一致性问题。

BASE 所强调的软状态、弱一致性等,在一些互联网业务中,并不会带来大的问题。

Ø 弱一致性场景中, 经常会使用“异步消息机制”在网络节点之间的进行通信。

l 异步消息意味着消息的发送和接受之间存在时间差。消息的发送者在消息发出后立刻

退出发送流程,不会阻塞等待接受者的反馈,因此不会受到网络延迟等影响,因此系统的响

应时间较少。这也可以看作是一种软状态机制。

l NoSQL 中也会使用异步消息机制进行事件通知等,但最终用户一般不需要关心其具体

过程

Ø 列举 NoSQL的数据模型,描述其基本特点和适用场景并为每种模式举出 1 种常见数据库。

1. 键值存储模型

基本特点:数据以键值对的形式存储,类似于字典或哈希表。读写速度快,数据结构简单,易于扩展。

适用场景:需要快速读写访问的场景,如缓存系统。存储单一数据类型或格式简单的数据。

常见数据库:Redis

2. 列族存储模型

基本特点:数据按照列族的方式组织,每个列族包含多个行,每行包含多个列。可扩展性好,支持高并发读写和存储海量数据。

适用场景:需要处理大规模数据和高吞吐量读写的场景,如分布式存储系统。适用于存储结构化数据,但相比传统关系型数据库,其数据模型更加灵活。

常见数据库:HBase、Cassandra

3. 文档存储模型

基本特点:数据以文档的形式存储,每个文档可以包含不同的字段,类似于JSON格式。

可扩展性好,支持复杂数据结构和查询。

适用场景:需要灵活数据模型和实时查询的场景,如Web应用和内容管理系统。适用于存储半结构化数据,如JSON、XML等格式的文档。

常见数据库:MongoDB、Couchbase

4. 图存储模型

基本特点:数据以图的形式存储,每个节点和边都有属性。支持复杂关系查询和计算,适合处理图形数据。

适用场景:需要处理复杂关系网络和图数据分析的场景,如社交网络分析、推荐系统和知识图谱等。

常见数据库:Neo4j

Ø 布隆过滤器的优缺点时什么?如何降低布隆过滤器的误报率

(1)优点是空间占用低、检索速度快。

缺点则是存储在一定的误报率:当布隆过滤认为某元素存在于集合时,该元素可能并不

存在,但如果布隆过滤认为该元素不存在于集合,则肯定不存在。

(2) 采取多个独立的哈希算法同时进行映射 、增大二进制向量的大小

3.文档数据库 MongoDB

Ø 描述 MongoDB 数据库的主要特点

(1)高可伸缩性:MongoDB 采用了分片技术,可以将数据分散在多台服务器上,从而实

现水平扩展。

(2)高性能:查询速度快,部分原因是它将数据存储在内存中,还因为采用了多线程和异

步 IO 技术,对大量并发请求也能有出色的响应能力。

(3)灵活的数据类型:采用文档型数据模型,通过嵌套文档和数组,可以灵活的表示数据。

(4)JSON 编码:使用 BSON 格式类存储数据,BSON 上文已经提到,是 JSON 的二进制

编码,具有更高的查询速度以及更少的存储空间。MongoDB 支持直接读写 JSON 格式的数

据,提供了 JSON 风格的查询语言。

(5)可扩展性:存储引擎是可插拔式的,可以根据存储需求选择合适的存储引擎。

(6)自动分片:大型应用所需数据量庞大,MongoDB 可以自动分片,自动分配数据至不

同服务器。

(7)数据备份与恢复:快照和复制技术实现数据备份和恢复

1.MongoDB 集群的数据多副本策略?

MongoDB 支持分片的多副本,多副本采用主从备份形式。MongoDB 称这种机制为复制集机制。

主节点(Primary 节点)负责数据的写入和更新。主节点在更新数据的同时,会将操作

信息写入日志,称为 oplog。

从节点(Secondary 节点)监听主节点 oplog 的变化,并根据其内容维护自身的数据更

新,使之和主节点保持一致(最终一致性)。

主节点失联后,从节点会进行选举,将一个从节点提升为主节点。

2.描述 MongoDB 的分片机制,它支持哪几种分片策略?

MongoDB 将数据水平切分机制称为分片(Sharding)。MongoDB 支持对文档的自动分

片,分片的依据是片键(Shard Keys),分片键可以由文档的一个或多个字段构成,分片使得 集群中的数据可以在分布式环境下均衡存储和使用。

MongoDB 支持基本的分片策略,即范围分片(MongoDB 的默认分片策略。它根据分

片键的值范围将数据分布到不同的分片上)和哈希分片(通过对分片键进行哈希运算,将数

据均匀分布到各个分片上)。

3.描述 MongoDB 的集群架构(包含的角色和每个角色的作用)。

当数据分片后集群中会包含 mongod(或称为 Shard)、mongos和config三种类型的节点。

mongod 负责存储数据,支持为每个 shard 构建副本集。

Config 节点,负责持久化存储分片集群的元数据和配置信息,支持为 Config 节点构建

副本集。

Mongos 节点,一方面作为用户访问集群的入口,负责与客户端的交互;另一方面也承

担分片的管理功能。 Mongos 支持部署多个进行负载均衡。

4. 图数据库 Neo4j

Ø 什么是 Neo4j?并对其数据模型进行详细描述。

Neo4j 是一个基于 Java 语言的开源图数据库系统。Neo4j 具有强大的图处理和查询搜索

能力,通过专用的 Cypher 语言完成各类操作。

Neor4j 采用将数据存储为节点和边的图存储模式,其中节点表示实体、边表示实体之间的关系。

Ø 简要描述 Neo4j 的使用场景(至少 4 个)。

社交网络分析 、推荐系统 、金融风险管理 、生物信息学研究

Ø Neo4j 作为一种图数据库,在构建知识图谱方面有哪些优势?

1)高效的关系查询:知识图谱中的数据通常具有复杂的关系,传统数据库在处理这些

关系时效率较低。Neo4j 通过图结构存储数据,能够高效地进行关系查询,

(2)灵活的数据模型:Neo4j 的数据模型非常灵活,节点和边可以动态添加和修改。

(3)强大的查询语言:Neo4j 提供了 Cypher 查询语言,可以轻松地创建、更新、删除

节点和关系,还可以进行复杂的模式匹配和查询

(4)可视化支持:Neo4j 提供了强大的可视化工具,能够直观地展示知识图谱中的节

点和关系。

5. 键值对数据库 Redis 

1.Redis 的常见应用场景。

1. (电商网站)秒杀抢购

2. (视频直播)消息弹幕

3. (游戏应用)游戏排行榜

4. (社交 APP)返回最新评论/回复

2.描述 Redis 的数据类型。

Redis 支持的数据类型有字符串、哈希散列、列表、集合、有序集合、地理位置、基数统计。

3.Redis 数据库的集群架构。

Redis 支持三种主要的集群模式,分别是主从复制模式、哨兵模式、集群模式。

(1)主从复制模式

主节点复制形成从节点,主节点(Master)负责处理写入操作,而从节点(Slave)则是

主节点的副本,用于处理读取操作和提供数据冗余。

(2)哨兵模式

在主从复制模式的基础上增加了自动故障转移的功能。哨兵节点(Sentinel)监控主节

点和从节点的状态,当主节点出现故障时,哨兵会自动将一个从节点升级为新的主节点,并

通知其他从节点和客户端新的主节点地址,以此来保证 Redis 服务的高可用性。

(3)集群模式

Redis 集群模式通过数据分片来实现分布式存储。集群中的每个节点负责一部分数据(即

一部分哈希槽),并且每个主节点可以有一个或多个从节点。集群模式不仅支持数据的自动

分区,还支持主从复制和故障转移,从而实现了高可用性和可扩展性。

4.Redis 的持久化方式是什么?各自的优缺点?

Redis 提供两种持久化机制 RDB(默认)(通过快照(内存中数据在某一时刻的状态记

录)的方式实现持久化,根据快照的触发条件,将内存的数据快照写入磁盘,以二进制的压

缩文件进行存储)和 AOF 机制(以独立日志的方式记录每次写的命令,重启时重新执行 AOF

文件中的命令恢复数据);

RDB 优点:

List 适合大规模的数据恢复;

对数据完整性和一致性要求不高;

RDB 可以最大化 Redis 性能,因为是子进程去处理保存工作,父进程无需执行 IO 操作。

劣势:

在一定间隔时间做一次备份,所以如果 Redis 意外 down 掉的话,就会丢失最后一次快

照后的所有修改;

当数据量大时,fork 子进程会非常耗时,会造成服务器在某毫秒或长达一秒的时间停止

处理客户端,并且子进程和父进程两个进程会消耗更多的内存

AOF 优势:

Redis 向用户提供了 appendfsync 选项,来控制系统冲洗 AOF 的频率;

每修改同步:appendfsync always 同步持久化每次发生数据变更会被立即记录到磁盘性

能较差但数据完整性比较好;

每秒同步:appendfsync everysec 异步操作,每秒记录如果一秒内宕机,有数据丢失;

不同步:appendfsync no 从不同步

劣势:

相同数据集的数据AOF文件比RDB文件大,且恢复速度慢;

AOF 运行效率要慢于 RDB,每秒同步策略效率较好,不同步效率和 RDB 相同

5.Redis的事务机制是什么?它和传统的 MySQL 数据库事务有什么不同

(1)Redis 的事务是一组命令的集合,本质是批处理(不会回滚)即将多个指令放入一个

队列,并批量顺序执行,且在执行过程中不会被其他客户端的命令请求打断。

(2) 单独的隔离操作:Redis 事务仅仅保证事务里的操作会被连续独占的执行,Redis 命令执行是单线程架构,在执行事务内所有命令请求之前无法去执行其他客户端请求;

没有隔离级别的概念:Redis 事务在提交之前任何指令都不会实际的被执行,所以不存

在 MySQL 中脏写,脏读,不可重复读,幻读等问题;

不保证原子性:Redis 事务不保证原子性,Redis 不能保证所有指令同时成功和失败,

只能保证事务的指令一同执行。

排它性:Redis 在执行事务的过程中,能保证事务内的命令依次执行不被其他命令插入

  1. 列族数据库 Cassandra 和 HBase

Ø HBase 和 Cassandra 在架构上有什么不同?各自的架构有 什么优缺点?

Cassandra的架构:是基于一致性哈希和分布式一致性模型Gossip协议的。它采用了多主复制(Multi-DC Replication)策略,数据可以在多个数据中心之间复制,以提高容错性和可用性。Cassandra使用 vnode 和 Token 范围分配数据,确保负载均衡。

HBase:则构建于Hadoop之上,利用HDFS作为其底层存储。它采用主从式架构,每个表只有一个Master节点负责元数据管理和 Region 分配,Region Server处理数据读写。HBase通过Zookeeper进行集群协调和故障恢复。

HBase 优缺点

优点

(1)高可用性:通过 ZooKeeper 实现 Master 的高可用,以及 RegionServer 的故障恢

复。

(2)易扩展性:基于 HDFS 的分布式存储,可以方便地通过增加 DataNode 来扩展存

储容量。

(3)高性能:对于特定列的读取操作非常高效,支持基于行键的快速查询。

(4)与 Hadoop 生态系统集成:可以无缝地与其他 Hadoop 组件(如 MapReduce、

Hive 等)集成,方便进行大数据处理和分析。

缺点(1)写性能瓶颈:在大量写入操作时,可能会成为性能瓶颈,因为需要处理数据的分

区和复制。

(2)复杂查询受限:对于非行键列的查询,可能需要全表扫描,导致性能下降。

(3)单点故障风险:虽然 ZooKeeper 可以实现 Master 的高可用,但在某些极端情况

下,仍存在单点故障的风险。

Cassandra 优缺点

优点

(1)高可用性:通过复制因子和 Gossip 协议实现数据的高可用性和容错性。

(2)高可扩展性:可以轻松地通过添加节点来扩展集群的容量和性能。

(3)灵活的数据模型:支持动态添加列和嵌套数据结构,非常适合存储和查询大量具

有不同属性的数据。

(4)高性能:对于大规模写入和高并发读取场景表现优异。

缺点

(1)最终一致性:虽然提供了可调的一致性级别,但在某些情况下,可能需要在一致

性和性能之间做出权衡。

Ø Cassandra 系统架构中,种子节点的作用是什么

帮助新加入的节点找到集群中的其他节点,并确保集群的拓扑结构正确传播

Ø Cassandra 表中的主键分为哪几种类型?如何区分它们?

Primary Key 主键

是用来获取某一行的数据, 可以是单一列(Single column Primary Key)或者多列

(Composite Primary Key)。

Composite Key,Compound Key 复合键

如果 Primary Key 由多列组成,那么这种情况称为 Compound Primary Key 或

Composite Primary Key。

Partition Key 分区键

在组合主键的情况下(上面的例子),第一部分称作 Partition Key(key_one 就是 partition key),第二部分是 clustering key(key_two)

Clustering Key 集群

分簇列的目的是按排序顺序存储行数据。数据排序基于列,列包含在聚类密钥中。此排

列可高效使用聚类密钥检索数据

Ø Cassandra 如何支持数据一致性

Dynamo在数据读写时,可以在用户写完部分副本(设为W个)而非全部N个副本时,就返回写入成功。在读取数据时,用户设置读取部分(设为R个)或全部N个副本,并检查其版本是否一致。当W或R较小时,系统的可用性较强;当W或R较大时,数据的一致性较强。在一致性要求高时,Dynamo推荐设置R+W>N;实时性要求高时,设置R+W<N。

R和W为1时,一致性最差;R和W为N时,一致性最强。

1. 无主节点的分布式架构:Cassandra 采用无中心化的分布式架构,每个节

点都保存有自己的数据和副本。这种设计消除了单点故障,并允许系统在部分节点

失效时继续运行。

2. 数据复制:Cassandra 通过一致性哈希算法将数据分散到多个节点上,并

创建数据的多个副本(默认为 3 个)。副本分布在不同的数据中心和机架中,以进一

步提高容错性和可用性。当数据写入时,Cassandra 会将数据同时写入所有副本,确

保数据的同步性和一致性。

3. 一致性级别:Cassandra 提供了多种一致性级别供用户选择,一致性级别

决定了事务在多个副本间同步达成的速度与强一致性。

4. 轻量级事务(LWT):对于需要强一致性的操作,Cassandra 支持轻量级事

务,即 LWT。LWT 通过两阶段提交(2PC)机制来确保事务的原子性和一致性。

5. 无冲突的写入:由于 Cassandra 的数据模型是基于分区键的,因此每个分

区内的数据可以并行写入,而不会产生冲突。这保证了在分布式环境下数据的快速

写入和一致性。

6. 定期快照和一致性检查:Cassandra 会定期创建数据表的快照,以便在需

要时恢复到特定时间点的一致性状态。此外,系统还执行一致性检查,确保数据的

完整性和一致性。

7. 不可变数据模型:Cassandra的数据模型是不可变的,即一旦数据被写入,

就不能更改其值。

Ø HDFS 是否属于 NoSQL 数据库?请说明用 HDFS 进行数据管理存在的问题。

不属于。

(1)HDFS 不支持对数据的随机读写。

(2)HDFS 没有数据表的概念,不能提供对数据的表格化存储。

(3)HDFS 无法针对行数统计、过滤扫描等常见数据查询功能。

Ø HBase 采用了什么样的数据结构?

HBase 采用的是一种面向列的键值对存储模式。HBase 表中,列族是表结构的一部分,

需要在建表时预先定义。

列不属于表结构,HBase 不会预先定义列名及其数据类型和值域等内容。每一个记录中

的每个字段必须记录自己的列名(列标识符)以及值和时间戳

Ø HBase 的拓扑结构是什么?每个角色起什么作用?

HBase 采用主从式架构,包括一个主节点(Master)和若干个从节点(Regionserver)。除此之外,还需要 Zookeeper 来实现节点监控和容错。

(1)Zookeeper 是一个分布式协调服务,实现节点监控、活跃主节点选举、配置维护

等功能。维护元数据的总入口,以及记录 Master 节点的地址,监控集群,如果 Regionserver

出现故障,则通知Master,Master会将其负责的分区移交给其他Regionserver,当活跃Master

节点故障的情况下,Zookeeper 会在备用 Master 节点中选举一个新的活跃 Master 节点。

(2)Master 节点是所有 Regionserver 的管理者,负责对 Regionserver 的管理范围进行

分配,但不负责管理用户数据表。

(3)Regionserver 是用户数据表的实际管理者,在分布式集群中,数据表会进行水平

分区,每个 Regionserver 只会对一部分分区进行管理——负责数据的写入、查询、缓存和故 障恢复等。用户表最终是以文件形式存储在 HDFS 上,但如何将写入并维护这些文件,则是由 Regionserver 负责的

Ø 描述 meta 表的结构。

在 HBase 中,meta 表是一个核心组成部分,提供了关于 HBase 中所有表的元数据信息。

命名:meta 表一般以“H:meta”或“hbase:meta”命名。

字段:Row 行键包括表名、起始行键和时间戳,用逗号隔开

Regioninfo 中记录了行键范围、列族列表和属性;

server 记录了负责的 Regionserver 地址;

serverstartcode 则记录了 Regionserver 的启动时间。

Ø 预写日志(WAL)的作用

(1)当数据被写入 memstore 之前,Regionserver 会先将数据写入预写日志(WAL,

Writeaheadlog),预写日志一般被写入HDFS,但键值写入时不会被排序,也不会区分 Region。

(2)出现节点宕机、线程重启等问题时,memstore 中未持久化的数据会丢失。当

Regionserver 恢复后,会查看当前 WAL 中的数据,并将记录进行重放(replay),根据记录的表名和分区名,将数据恢复到指定的 store 中。

(3)在进行自动或手动的数据持久化操作之后,Regionserver会将不需要的WAL清除掉。

7.其他数据库 

Ø 时序数据库可以用在哪些场景?(4 个)

物联网、金融交易、能源管理、工业自动化

Ø 时序数据库是否需要具备灵活的数据更新能力?为什么?

不需要,因为数据是持续增长,数据格式固定,一般只进行数据追加,不进行数据更新和删除。主要关注点是:

高效插入: 时序数据库需要能够高效地处理大量实时或批量的数据写入。这是因为时序数据通常是不断增长的,而且数据生成的速度可能非常快。

查询性能: 时序数据库通常需要支持高效的查询,尤其是基于时间范围的聚合查询,例如,获取过去一小时、一周、一月的数据汇总。

不可变性: 在时序数据的实际应用中,大多数数据会随着时间流逝不断积累,并且是不可修改的(即数据是“写一次,查询多次”)。因此,时序数据库通常假设数据一旦被写入后不需要进行更新或修改。这种设计简化了数据存储和索引的复杂度。

Ø 搜索引擎的工作原理是什么?

通过建立独特的索引机制和查询方法,实现高效的全文模糊查询,甚至处理查询结果排名等细节问题,但对原始数据(可能是结构化、半结构化或非结构化信息)的存储、管理等方面并不涉及(首先在互联网中发现、搜集网页信息;同时对信息进行提取和组织建立索引库;再由检索器根据用户输入的查询关键字,在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并将查询结果返回给用户。

Ø 搜索引擎中如何对搜索结果排序的

1、相关性(主关键词数量以及相关词和外链指向锚文本)

2、网站权威性(包括各种认证、备案等)

3、时效性(按照标准时间新出现的网页)

4、重要性(点击、停留时长、跳出率等、外链投票)

5、丰富度(文字、图文、视频搭配或满足 90%用户需求)

6、受欢迎程度(转发、评论)

8非关系型数据库实例

列存储数据库

表示方法(1):

表示方法(2):

row_key            column_family:column_qualifier    value

"Beijing"          "info:area"                       "16410km2"

"Beijing"          "info:longitude"                  "38°"

"Beijing"          "info:latitude"                   "116°"

"Beijing"          "info:population"                 "2069万"

"Beijing"          "relationship:belongs_to"         "China"

"China"            "info:population"                 "14亿"

"China"            "info:area"                       "960万平方千米"

"China"            "relationship:belongs_to"         "Country"

"United Kingdom"   "relationship:belongs_to"         "Country"

"United States"    "relationship:belongs_to"         "Country"

"Seattle"          "relationship:is_city_of"         "United States"

在上述格式中,每一行都有一个唯一的行键,表示实体的名称。每一列都有一个列族和一个列限定符,表示属性的名称和类型。例如,"Beijing"行的"info:area"列表示北京的面积,"Seattle"行的"relationship:is_city_of"列表示西雅图是美国的城市。

键值对数据库

文档型数据库

{

    "_id" : ObjectId("5f98e4a4cf3f4f6b9f13d9b8"),

    "name" : "Beijing",

    "area" : "2333km2",

    "longitude" : "38°",

    "latitude" : "116°",

    "population" : "2069万",

    "belongs_to" : "China"

}

{

    "_id" : ObjectId("5f98e4a4cf3f4f6b9f13d9b9"),

    "name" : "China",

    "population" : "14亿",

    "area" : "960万平方千米",

    "belongs_to" : "Country"

}

{

    "_id" : ObjectId("5f98e4a4cf3f4f6b9f13d9ba"),

    "name" : "United Kingdom",

    "belongs_to" : "Country"

}

{

    "_id" : ObjectId("5f98e4a4cf3f4f6b9f13d9bb"),

    "name" : "United States",

    "belongs_to" : "Country"

}

{

    "_id" : ObjectId("5f98e4a4cf3f4f6b9f13d9bc"),

    "name" : "Seattle",

    "is_city_of" : "United States"

}

图数据库

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐