阿里的ACP认证到底有用吗?
随着技术的不断发展,社会对个人的技术要求越来越高,因此,很多人为了能提高个人技术,在作业之余计划着考取更多证书希望在作业中能取得更多的晋升机会,能够升职加薪,但是打工人日常作业就十分地繁忙,能花在阿里云ACP考试复习的时刻十分少,因此很多人希望能在短时刻内能有针对性地刷题,在哪里可以找到阿里云ACP云安全认证题库呢?请选择认证大使吧,有试题还有1对1解疑。
伙伴客户案例|阿里云RPA ——电信场景篇
Flink CDC 系列 - 构建 MySQL 和 Postgres 上的 Streaming ETL
Flink Remote Shuffle 开源:面向流批一体与云原生的 Shuffle 服务
Flink CDC 系列 - 实现 MySQL 数据实时写入 Apache Doris
云数据库MongoDB FAQ
MongoDB 功能定位是怎样的?
MongoDB 介于Memcached 和关系型数据库之间,扩展性和性能上, MongoDB 更接近于 Memcached,功能上,MongoDB 更接近于关系型数据库。
MongoDB 部署模型是怎样的?
在生产环境中,MongoDB 经常会部署成一个三节点的复制集,或者一个分片集群。
1. 当 MongoDB 部署为一个复制集时,应用程序通过驱动,直接请求复制集中的主节点,完成读写操作。 另外两个从节点,会自动和主节点同步,保持数据的更新。
2. 当 MongoDB 被部署为一个分片集群时,应用程序通过驱动,访问路由节点,也就是 Mongos 节点 Mongos 节点会根据读写操作中的片键值,把读写操作分发的特定的分片执行,然后把分片的执行结果合并,返回给应用程序。
MongoDB 复制集主节点遇到故障会如何处理?
在集群运行的过程中,万一主节点遇到故障,两个从节点会在几秒的时间内选举出新的主节点,继续支持应用的读写操作。
MongoDB 分片集群中集群数据是如何分布的?
元数据记录在 Config Server 中,这也是一个高可用的复制集。每个分片管理集群中整体数据的一部分,也是一个高可用复制集。此外,路由节点,也就是 Mongos 节点在生产环境通常部署多个。这样,整个分片集群没有任何单点故障。
MongoDB 和关系型数据的有哪些概念可以对应?
关系型数据通常有数据库和表的概念,对应在 MongoDB 里有数据库和集合关系;数据库有主表和子表,对应 MongoDB 通常使用内嵌的子文档或内嵌数组;关系型数据里有 Index 索引,MongoDB也有类似概念;关系数据库里一条数据称为一行,MongoDB 称为一个文档 Document;关系型数据库里面的列,对应到 MongoDB 成为一个字段 Field;关系数据库里面经常使用 Join 连接操作,对应 MongoDB 通常使用内嵌方式解决,如果使用 Linking 方式,对应使用$Lookup 操作符也可支持左外链接;关系型数据库里面还有视图,对应 MongoDB 也有只读视图和按需物化视图;关系型数据库里面会有 ACID 的多记录事务,对应的 MongoDB 里面会有 ACID 的多文档事务。
MongoDB 数据结构是怎样的?
MongoDB 采用 JSON 文档结构,支持如下数据格式: 字符串、数字、布尔、空值、数组、对象。
为什么 MongoDB 只有左连接?
反范式设计
读取效率低下
Join 这种操作上是违反MongoDB 设计的初衷的,这样操作经常要对两个表的不同数据进行连接操作,这些数据在物理存储的时候,通常不是在相邻的区域里面,读取的效率比较低
分布式环境
MongoDB 是一个分布式的环境,校验操作的左右两边如果都是一个分片的表,当进行 Join 操作的时候,左边有一个又有一条数据,它可能在分片一上要连接的一个数据可能在分片二上,下一条数据可能又是另外一种情况,这种情况下数据库很难保证整个操作的性能。
MongoDB 频繁的插入和删除会有什么问题?
MongoDB数据库在长期频繁地删除写入数据或批量删除了大量数据后,将产生很多物理空间碎片。这些碎片会占用磁盘空间,降低磁盘利用率。
MongoDB 磁盘碎片率如何计算?
# 一次性查看所有collection碎片率
function getCollectionDiskSpaceFragRatio(dbname, coll) {
var res = db.getSiblingDB(dbname).runCommand({
collStats: coll
});
var totalStorageUnusedSize = 0;
var totalStorageSize = res['storageSize'] + res['totalIndexSize'];
Object.keys(res.indexDetails).forEach(function(key) {
var size = res['indexDetails'][key]['block-manager']['file bytes available for reuse'];
print("index table " + key + " unused size: " + size);
totalStorageUnusedSize += size;
});
var size = res['wiredTiger']['block-manager']['file bytes available for reuse'];
print("collection table " + coll + " unused size: " + size);
totalStorageUnusedSize += size;
print("collection and index table total unused size: " + totalStorageUnusedSize);
print("collection and index table total file size: " + totalStorageSize);
print("Fragmentation ratio: " + ((totalStorageUnusedSize * 100.0) / totalStorageSize).toFixed(2) + "%");
}
use xxxdb
db.getCollectionNames().forEach((c) => {print("\n\n" + c); getCollectionDiskSpaceFragRatio(db.getName(), c);});
MongoDB 主备切换时机是什么时候?
1. 主节点不可用;
2. 新增节点(更高的 Priority);
3. 主动运维,rs.stepDown() or rs.reconfig()
MongoDB 主备切换流程是怎样的?
1. 副本集之间保持心跳(默认 2 秒探测一次);
2. 如果超出 ElectionTimeoutMillis(默认 10 秒)没有探测到主节点,Secondary 节点 会发起选举,发起前检查自身条件:Priority 是否大于0、当前状态是否够新;
3. 在真正选举前,会先进行一轮空投(Dry-Run),避免当前 Primary 无意义的降级( StepDown),因为 Primary 收到其他节点且 Term 更高的话则会降级;
4. Dry-Run 成功后,会增加自身的 Term 发起真正的选举,如果收到多数派的选票则选举成功,把新的拓扑信息通过心跳广播到整个副本。
MongoDB 写入一个文档有哪些步骤?
1. 单行事务对表写一条记录
2. MongoDB 会添加一个_ID 字段,会将索引项写到_ID 索引中;
3. 将索引项写到用户创建的索引当中。
4. 唯一索引检查 Key 是否重复,检查索引表里这个记录是否已经存在,如果存在的话则会报错;
5. 写入操作日志到复制表,将写操作同步到 Secondary 节点上。
选择 MongoDB 有哪些技术指标参考?
l 数据量。假设单表里面要保存的处理数据超过亿或者10亿的级别,而且使用挺频繁,这个时候就可以考虑使用 MongoDB。
l 数据结构模型不确定,或者明确会多变
l 高并发读写,MongoDB 通过分片直接支持。