简介
在使用数据库时,您必须学习大量术语才能理解这项技术,如何最好地使用它,以及它与您环境中其他部分的关系。本词汇表旨在收集数据库社区中常用的术语,并提供定义和上下文,以帮助您增长知识。
本词汇表是一个正在进行的工作,也是一个活文档。我们打算随着时间的推移更新它,以添加新主题并完善现有条目。我们有一个计划在近期添加的术语待办事项,但如果您有任何希望我们讨论的内容,请打开一个GitHub 问题来添加您的建议。
术语
- 1NF
- 1NF,即第一范式,描述了一种数据库规范化类型,其中每个表列只包含一个值。一个包含嵌套表作为值或包含多个值的列不符合 1NF。
- 2NF
- 2NF,即第二范式,描述了一种数据库规范化类型,它:1) 满足 1NF 的要求,2) 没有直接与候选键子集绑定的值。换句话说,如果一个关系处于 1NF,并且所有非候选值都完全依赖于复合键,而不仅仅是候选键的一部分,那么它就处于 2NF。例如,一个 `book` 表,其候选键由 `title` 和 `author` 组成,如果它还包含描述作者出生日期的 `dob` 字段,则不能处于 2NF。该列值仅依赖于 `author` 的值,如果值不同步,可能导致不一致。
- 3NF
- 3NF,即第三范式,描述了一种数据库规范化类型,它:1) 满足 2NF 的要求,2) 每个非主键属性都不传递依赖于主键属性。例如,如果一个 `user` 表以 `user_id` 列作为主键,并有 `user_city` 列和 `user_state` 列,它将不符合 3NF,因为 `user_state` 通过 `user_city` 传递依赖于 `user_id`(城市和州应被提取到它们自己的表中并一起引用)。
- 4NF
- 4NF,即第四范式,描述了一种数据库规范化类型,它:1) 满足 BCNF 的要求,2) 对于每一个非平凡的多值依赖,该依赖中的决定属性要么是候选键,要么是它的超集。换句话说,如果一个字段有多个相互独立的依赖字段,它可能导致违反 4NF 规则的冗余。
- ACID
- ACID——由原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)这些词的首字母组成——描述了数据库事务旨在提供的一组特性。原子性保证事务中的所有操作要么全部成功完成,要么全部回滚。一致性,通常被认为是应用程序而不是数据库维护的属性,通常通过事务来实现,以确保所有相关值同时更新。事务隔离旨在允许并发事务独立执行。持久性意味着事务在提交时应存储在非易失性存储器上。
- 访问控制列表 (ACL)
- 访问控制列表,通常缩写为 ACL,是一个安全策略列表,它规定了每个用户或进程可以对哪些资源执行哪些操作。ACL 有许多不同类型,但它们都描述了系统允许的权限和访问模式。
- Active Record ORM
- Active Record ORM 是一种对象关系映射器,其工作原理是尝试将数据库中的每个表表示为应用程序中的一个类。表中的每个记录都表示为该类的一个实例。通过与应用程序中的这些表示进行交互来添加和管理数据库条目。
- 反缓存
- 反缓存是一种策略,当在更快的内存缓存中找不到数据时,必须从较慢的持久存储中检索数据时可以使用。该技术涉及中止事务并启动异步操作以将数据从较慢的介质获取到内存。事务可以稍后重试,并且信息将准备好从内存中提供。
- 原子性
- 原子性是主要与数据库事务相关联的质量,这意味着事务中封装的操作以“全有或全无”的方式处理。这可以防止在错误条件发生之前执行部分操作,从而导致数据不一致。在事务的情况下,要么所有操作都提交,要么所有操作都回滚,以使数据库保持在事务开始时的相同状态。
- 属性
- 属性是描述数据库中某个实体的特征。在 ER(实体关系)模型中,属性是任何不属于关系但为实体添加信息的额外属性。
- 认证
- 认证是验证身份的行为。在计算和数据库中,认证主要用于证明请求访问的人或进程具有验证其可以以特定身份操作的凭据。实际上,这可能包括提供身份(如用户名)和相关的认证材料(如密码、证书或密钥文件,或由属于该身份相关人员的硬件设备生成的秘密)。认证与授权结合使用,以确定用户是否具有在系统上执行操作的权限。
- 授权是确定某个用户或进程是否应被允许执行某个操作的行为。授权涉及根据一组描述谁应该被允许执行哪些操作的指导方针来检查所请求的操作。授权通常依赖于在请求之前进行可信的认证过程,以确认主体的身份。
- 可用性
- 可用性是描述系统运行程度和执行工作能力的属性。就数据库等计算系统而言,对于单台机器,可用性与该计算机上应用程序的正常运行时间是同义的。对于分布式系统,可用性受规则的约束,这些规则规定了当系统的一部分不可用时,系统可以以何种能力继续运行。
- BASE
- BASE——由基本上可用(Basically Available)、软状态(Soft-state)和最终一致性(Eventually consistent)这些词的首字母组成——描述了某些 NoSQL 数据库的一组特性。它被用作某些不符合 ACID 合规性(原子性、一致性、隔离性和持久性)所描述属性的数据库的描述。BASE 数据库选择在网络分区的情况下,以牺牲严格的数据一致性为代价来保持可用性。软状态组件指的是系统状态可能处于波动中,因为不同的成员协商系统中最正确的值。最终一致性是另一个相关的陈述,表明系统最终会达到一致性,只要有足够的时间并且假设在此期间没有引入新的不一致性。
- BCNF
- BCNF,即 Boyce-Codd 范式,描述了一种数据库规范化类型,它:1) 满足 3NF 的要求,2) 每次依赖中的决定属性(决定另一个属性值的属性)是依赖属性的_超集_,或者是候选键,或者是候选键的超集。
- 蓝绿部署
- 蓝绿部署是一种部署软件更新的技术,通过管理两个相同基础设施集之间的活跃流量,实现极少甚至没有停机时间。新版本可以部署到非活跃的基础设施组中并独立测试。要发布新版本,流量路由机制会切换,将流量从当前基础设施导向具有新版本的基础设施。以前活跃的基础设施现在作为下一次更新的目标。这种策略的优点在于路由机制可以轻松地来回切换,根据部署的成功与否进行回滚或向前推进。
- 瓶颈
- 在计算中,当系统的性能或容量受到单个组件争用的限制时,就会发生瓶颈。在数据库中,这可能与数据库运行的硬件或可用的网络环境有关。应用程序使用模式也可能影响哪个资源最受争用。要解决瓶颈,您必须首先识别限制系统性能的资源,然后增加额外容量或采取措施减少使用率。
- CAP 定理
- CAP 定理是关于分布式数据库的一个陈述,它指出任何系统最多只能提供以下三种质量中的两种:一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。通常认为,分区容错性必须是任何分布式系统的一个特性(因为避免所有网络分区的唯一方法是拥有一个非分布式系统)。因此,每个分布式系统都必须做出选择,是优先考虑数据一致性(在发生分区时拒绝接受新更改)还是系统可用性(为了能够在分区期间引入新更改而牺牲一些一致性)。
- CRUD
- CRUD——代表创建(Create)、读取(Read)、更新(Update)和删除(Delete)的首字母缩写——描述了操作存储数据的基本操作。在 SQL 中,CRUD 的组件大致对应于 `INSERT`、`SELECT`、`UPDATE` 和 `DELETE` 操作,但许多其他操作可以促进更精细的动作。更一般地说,CRUD 也常在用户界面和 API 的上下文中被讨论,作为系统可能允许的操作类型的描述。
- 缓存
- 缓存是系统的一个组件,旨在更快地检索高价值或频繁请求的数据片段。通常,缓存通过将有用数据的一部分存储在性能更高或更接近客户端的介质上,而不是专注于长期非易失性存储的通用持久介质。通常,缓存往往性能更高,但容量更有限,成本也更高。
- 旁路缓存
- 旁路缓存是一种缓存架构,它将缓存放置在应用程序和数据库之间的常规路径之外。在这种安排下,如果数据在缓存中可用,应用程序将从缓存中获取数据。如果数据不在缓存中,应用程序将向原始数据源发出单独的查询以获取数据,然后将该数据写入缓存以供后续查询。缓存和后端数据源之间的最小交叉使这种架构能够抵御缓存不可用的情况。旁路缓存非常适合读写密集型工作负载。
- 缓存失效
- 缓存失效是指定并从缓存中删除特定项目的过程。最常见的情况是,在更新记录时作为例行程序的一部分执行此操作,以便缓存中的数据不会向客户端提供过期数据。
- 金丝雀发布
- 金丝雀发布描述了一种发布策略,其中软件的新版本被部署到一小部分服务器上,以在影响有限的环境中测试新的更改。观察测试组的部署和结果行为,团队可以决定是回滚更改还是继续将更改部署到更广泛的主机范围。金丝雀发布是一种在生产环境中进行测试的方法,同时限制了受任何问题影响的客户端数量。
- 候选键
- 关系数据库中的候选键是最小超键的术语。换句话说,候选键是任何可以用来唯一标识关系中每个记录的列或列组合,且不包含对特异性没有帮助的列。在 `cars` 表中,唯一的 `car_id` 列将是一个候选键,`make`、`model` 和 `year` 列的组合也将是一个候选键(假设这足够具体以消除任何重复)。然而,`car_id` 和 `make` 则不是候选键,因为在这种情况下,`make` 对缩小每行的唯一性没有任何帮助。
- 级联
- 在关系型数据库中,级联是一种处理与父表有相关联条目的子表记录删除或更新的选项。级联意味着操作(删除或更新)也应应用于子行、依赖行。这有助于在删除情况下避免孤立行,在更新情况下避免值不同步。
- Cassandra
- Apache Cassandra 是一个分布式、宽列 NoSQL 数据库,专注于操作和管理大量数据。Cassandra 具有出色的可扩展性,集群中的每个节点都可以接受读写操作。数据以行形式存储,每行都具有唯一标识符,并基于分区键进行分区。每个分区键返回一行数据,其中包含内部定义的列名和值,这意味着同一列族中的每行可能包含不同的列。
- 检查约束
- 检查约束可能是添加到关系数据库中最灵活的表或列约束。它被定义为一个布尔条件,提出的数据必须满足该条件才能被系统接受。由于条件的性质相当开放,检查约束可以用于建模许多不同类型的需求,以确保进入系统的数据符合预期。
- 集群
- 在计算中,集群是一组计算机,它们都致力于协助完成一个共享任务。与部署在单台计算机上的数据库相比,数据库集群用于提高某些类型操作的容量、可用性和性能。不同的集群系统采用许多不同的拓扑、技术和权衡,以实现不同级别的性能或容错能力。由于不同实现的 çeşitlilik,很难概括适用于所有集群数据库系统的特定特性。
- 排序规则
- 数据库中的排序规则指的是不同字符系统的排序和比较特性。大多数数据库允许您分配排序规则设置,这会影响系统中文本的排序、显示和相互比较方式。排序规则通常使用一组标签来定义,这些标签描述了字符集、语言环境以及关于大小写、重音和其他字符修饰符的敏感性或不敏感性的不同选项。
- 集合
- 在文档数据库中,集合是用于存储一组文档的容器。集合可以由应用程序和数据库设计人员分配语义含义,但除此之外,它们只是在系统中将不同集合的文档相互分隔开的一种方式。不同的集合可以被分配不同的属性,并且可以对特定文档集合执行操作。
- 列
- 列是面向表数据库的一个组件,它标记并可能定义存储在该列中每个值的类型。在传统关系数据库中,一系列列的属性是定义表一般属性的主要方式之一。添加到表中的每行都必须提供符合与表列相关联的要求的值。在非关系数据库中,列可以具有许多不同的属性。然而,通常,它们用于标记和定义记录选择存储在该列中的值的特性。
- 列式数据库
- 列式数据库或面向列的数据库是一种面向表的数据库,类似于传统关系数据库,但它在后台按列而不是按记录存储数据。这意味着与单个列关联的数据存储在一起,而不是将与单个记录关联的所有数据分组。根据使用模式,这可以提供不同的性能特征,但通常不影响用户日常与表中数据的交互。尽管在文献中经常混淆,但列式数据库不应与宽列数据库或列族数据库混淆。
- 列族
- 列族是一种数据库对象,它存储键值对组,其中每个键都是行标识符,每个值都是列名和值组。总而言之,列族构建了一个类似于关系数据库中表的结构。然而,每行都可以定义自己的列,这意味着行的长度不同,并且在表示的列或存储的数据类型方面不必相互匹配。
- 命令查询职责分离
- 命令查询职责分离是一种应用程序设计模式,它允许您根据操作对底层数据库的影响来分离操作。通常,这意味着为读取数据的查询和更改数据的查询提供不同的机制。分离这两个上下文允许您进行基础设施和系统更改,以独立扩展每个用例,从而提高性能。
- 提交
- 在数据库上下文中,提交数据是执行并持久存储一组提议操作的过程。许多数据库配置为在系统收到每个语句时自动提交,但事务是其中一种机制,您可以通过将多个语句组合在一起并作为一个组提交来控制数据库的提交行为。数据库中的提交是实际负责在系统上执行永久操作的行为。
- 复合键
- 在关系型数据库中,复合键是由两个或更多列组成的键,可用于唯一标识表中的任何记录。例如,如果有一个 `shirts` 表,它只存储每种尺寸和颜色组合的单个记录,那么可以使用 `color` 和 `size` 列的组合来定义复合键。
- 并发性
- 并发性是指系统能够同时处理多个任务而不影响整体结果的能力。并发性允许系统并行执行操作,从而提高任务组的相对性能。
- 连接池
- 连接池是一种用于提高性能和避免连接耗尽的策略,通过管理应用程序和数据库之间的连接。它通过维护一个数据库连接池来实现这一点。通过保持连接打开并将其用于多个查询,应用程序可以避免每次建立连接的开销,并且数据库的连接限制可以通过连接池组件进行管理。
- 一致性
- 一致性是数据系统的一个属性,意味着各个数据实体不冲突,并且即使引入了更改,也继续建模它们旨在表达的信息。每个数据片段和更改都必须经过验证,以确保其符合数据结构所施加的规则,并且必须注意平衡任何可能影响其他数据的更改(例如同时借记和贷记不同的账户)。
- 约束
- 约束是对特定列或表施加的限制,影响系统接受的值范围。约束用于定义数据库系统可以强制执行的规则,以确保值符合要求。
- 游标
- 数据库游标是客户端以受控、精确的方式迭代记录和查询结果的一种方式。游标主要用于通过迭代返回下一行进行处理,逐个分页显示与查询匹配的结果。这可以帮助您通过将结果作为队列访问来操作未知数量的记录。使用游标时必须小心,因为它们会占用数据库系统资源,可能导致锁定,并且通常会导致比其他方式所需更多的网络往返。
- 暗启动
- 暗启动是一种部署和发布策略,有助于组织在生产环境中测试新更改,而不会影响用户体验。暗启动涉及将新代码与原有功能并行发布。然后请求和操作会被镜像,并针对旧代码和新代码同时运行。虽然从用户的角度来看,系统的行为只受原有代码影响,但新代码可以使用真实数据进行测试,以验证功能并捕获性能和功能问题。在经过适当验证后,应用程序可以更改为独占使用新代码路径。
- 数据
- 广义上讲,数据是事实或信息片段。它们是包含有关某事信息的测量值或值。在某些语境中,数据被定义为与信息不同,因为信息是经过分析或处理的数据,而数据仅由原始值组成。然而,实际上,这些术语通常被用作同义词,并且通常包含任何事实以及解释或上下文化它所需的上下文。数据是几乎所有通信和活动的基本组成部分,并且它可以在被收集、分析和上下文化时获得意义和价值。
- 数据定义语言 (DDL)
- 数据定义语言,或 DDL,是一组用于定义数据库结构和对象的命令或操作。它们是关系型数据库和其他数据库的关键组成部分,并表示为管理 SQL 等语言中数据的可用命令的子集。数据定义语言是该语言中专门用于描述、创建和修改结构以及将保存数据的框架的部分。
- 数据独立性
- 数据独立性是描述数据库客户端或应用程序与负责表示和存储数据的底层结构分离的术语。如果数据库能够以一种方式抽象结构,即使向关系添加额外属性(逻辑独立性)或存储介质的详细信息发生变化(物理独立性),用户应用程序也能继续运行,则实现了数据独立性。
- 数据映射器 ORM
- 数据映射器 ORM,或简称数据映射器,是一个应用程序组件,它充当数据库表示和应用程序中存在的数据结构之间的中介。数据映射器允许您的应用程序逻辑和数据库数据表示保持独立。数据映射器管理并转换这两种介质之间的数据,以便每个表示都是独立的并且可以智能地构造。
- 数据类型
- 数据类型是一种类别或属性,它对有效值施加约束。例如,整数类型指定只有整数才适合变量或字段,并且是预期的。数据类型允许您在定义字段或容器时指定对数据的期望和要求。然后,编程语言或应用程序可以验证引入的数据是否满足必要的标准。数据类型还有助于确定可以对数据片段执行的可用操作。
- 数据库
- 数据库是一种用于组织、结构化和存储数据的结构。数据库通常由数据库管理系统管理,该系统提供了一个接口来操纵和与数据库及其管理的数据进行交互。数据库可以是高度结构化的,也可以允许更灵活的数据存储模式,并且可以以允许在检索时查询、召回和组合数据的方式存储许多不同类型的数据。
- 数据库抽象层
- 数据库抽象层是一个编程接口,它试图抽象底层数据库技术之间的差异,为应用程序层提供统一的体验或接口。数据库抽象层通常对开发人员很有帮助,因为它们有助于标准化各种产品之间的实现差异,并且即使底层技术不断发展也能保持稳定。然而,也存在一些挑战,例如抽象泄露、向用户隐藏特定于实现的特性或优化,以及创建难以摆脱的依赖。202
- 数据库管理员 (DBA)
- 数据库管理员,或 DBA,是一个负责配置、管理和优化数据库系统以及相关的软件和硬件生态系统的角色。他们可能涉及的一些职责包括架构规划、配置、模式和变更管理、迁移、复制和负载均衡、分片、安全考虑、管理备份策略等等。数据库管理员通常被期望在数据库设计和理论方面拥有专业知识,并能够帮助组织做出有关数据库技术选择和实施的决策。在许多现代组织中,DBA 传统上承担的职责现在分布在开发和运维团队的各个成员之间,或者已外包给外部提供商,以简化该工作的某些基础设施管理部分。
- 数据库引擎
- 数据库引擎是数据库管理系统的一部分,负责定义数据的存储和检索方式,以及与系统和数据交互所支持的操作。有些数据库管理系统支持提供不同功能和设计的多个数据库引擎,而其他系统则只支持一个经过设计以符合软件目标的数据库引擎。
- 数据库管理系统 (DBMS)
- 数据库管理系统,通常称为 DBMS,甚至简称为“数据库”,是一种负责组织和管理数据的应用程序。DBMS 可以遵循许多不同的范式并优先考虑某些目标。通常,它们至少负责持久化数据、组织和分类数据,以及摄取、操作和查询数据。最常见的是,DBMS 提供客户端/服务器模型,其中服务器负责控制和管理数据,而客户端、库或 API 可用于与服务器交互以添加或查询数据、更改数据结构或管理系统的其他方面。
- 数据库模型
- 数据库模型是数据库管理系统用于存储、组织和提供数据访问的总体策略。有许多不同的数据库模型可用,但关系模型使用高度结构化的表以特定格式存储数据,可能是最常见的类型。其他类型的数据库包括文档数据库、宽列数据库、层次数据库、键值存储等等。一些数据库系统被设计为“多模型”,这意味着它们支持在同一系统内运行不同类型模型的数据库。
- 数据库代理
- 数据库代理是负责管理数据库客户端和数据库服务器之间连接的软件组件。数据库代理用于多种原因,包括组织对有限数量连接的访问、允许数据库层的透明扩展以及重定向部署和类似场景的流量。数据库代理通常设计为对应用程序透明,这意味着应用程序可以连接到代理,就像它们直接连接到后端数据库一样。
- 数据集
- 数据集,有时拼写为 data set,是数据的单一集合。通常,这代表了一块适用于特定任务、应用程序或关注领域的关联数据。通常,数据集是数据本身以及解释它所需的结构和上下文的组合。它们通常由定量和定性值的组合组成,可以作为进一步分析和解释的原始数据。
- 反规范化
- 反规范化是一个将数据库内的数据和结构“反规范化”或使其脱离规范化状态的过程。如果旨在规范化的数据结构定义不佳或管理不当,可能会意外发生这种情况。然而,在某些情况下,它也常常被有意执行。反规范化倾向于通过将值冗余地存储在不同位置来允许更快地访问数据。这样做的缺点是写入性能会受到影响,并且由于使用多个位置来表示相同的数据,数据可能会不同步。
- 脏读
- 脏读是一种特殊的异常类型,可能发生在一个事务读取了另一个事务尚未提交的数据。如果第二个事务回滚而不是提交,第一个事务将使用一个不反映数据库实际状态的值。脏读在某些事务隔离级别下是可能的,并且在并行操作数据时可能导致不一致。
- 分布式数据库
- 分布式数据库是跨越多个物理系统的数据库系统。数据分散在多台机器上,以实现性能或可用性。虽然分布式系统有助于扩展数据库以处理更多负载,但它们也显著增加了复杂性,可能导致一致性和分区挑战,以及某些负面性能影响,例如在某些情况下数据写入的增加。
- 文档
- 在文档数据库的上下文中,文档被认为是表示单个记录或包含相关描述性信息的对象的容器。文档可以具有灵活的结构,不必与系统上的其他文档匹配,并且通常可以嵌套。文档通常以 JSON 或 YAML 等数据序列化格式表示,这些格式可以使用标签和元数据组织文档。
- 文档数据库
- 文档数据库是一种数据库模型,它将项目表示为称为文档的单个对象。虽然文档可以分组以进行组织,但它们不必共享相同的结构,并且可以设计成独特地捕获描述所讨论项目所需的数据。文档数据库通常不支持强大的连接操作来链接不同的文档,但通常因其灵活性以及易于表示编程数据结构而备受赞誉,从而缩短了生产时间。
- 持久性
- 持久性是数据的一种品质,表示它已捕获到即使程序崩溃也能存活的持久存储上。通常,这意味着将数据刷新到非易失性存储介质,例如不需要电力来维持状态的硬盘。
- 编码
- 编码是一种系统,用于在可以表示书面语言中使用的组件的字符系统和计算机可以存储和操作的数字表示之间进行转换。已经开发出具有各种字符范围的不同编码系统。有些针对特定语言或语言家族(如 ASCII),而另一些则试图为适用于许多语言的更大字符集提供表示(如 UTF Unicode 变体)。
- 加密传输
- 加密传输是指在发送消息给接收方之前对消息进行加密的任何类型的通信过程。传输加密是必要的,以确保隐私(防止他人看到敏感信息)以及避免篡改(使数据操作显而易见)。部署数据库时可以使用许多不同的加密传输系统,包括 TLS/SSL 加密、VPN 和专用网络。
- 瞬时性
- 瞬时性是一种特性,表示数据或情况不是永久的。在许多方面,它与持久性相反。在数据库中,某些项目,例如您希望持久化的数据,不应是瞬时的。然而,其他组件,例如用于加密数据库和客户端之间连接的密钥,可以通过防止密钥泄露影响未来或过去的会话而受益于瞬时性。
- 临时存储
- 临时存储,有时也称为易失性或非持久性存储,是指任何持续时间短的存储介质,通常与特定条件相关联。例如,在应用程序中,存储在内存中的数据仅在进程运行时才存在。类似地,存储到临时目录的数据仅在系统重新启动之前可用。通常,临时存储对于临时数据或作为数据可以存储在更永久介质上的暂存区域很有用。
- 最终一致性
- 最终一致性是某些分布式计算或数据库系统实现的一致性/可用性策略的描述。分布式系统的 CAP 定理指出,系统在面对网络分区时必须选择是优先考虑可用性还是数据一致性。最终一致性系统选择偏爱可用性,即使服务器的对等节点不可用以确认操作,也继续提供请求。最终,当分区解决时,将运行一致性例程以决定任何不一致数据的最正确状态,但在一段时间内,不同服务器上的数据将不一致。
- 逐出
- 在缓存的上下文中,逐出是将数据从缓存中删除的过程。这可能因为当前值被某个操作 invalidated 而发生,也可能由于旨在删除最旧或最少使用数据的策略而自动发生。
- 扩展和收缩模式
- 扩展和收缩模式是一种在不影响现有应用程序的情况下引入数据库模式新更改的策略。它通过分阶段、精心控制地引入更改来实现,首先添加新的或更改的结构与现有结构并行,然后扩展应用程序逻辑以同时使用这两种结构。最终,经过测试后,应用程序可以停止写入原始结构,并且可以将其删除。
- 抽取-转换-加载 (ETL)
- 抽取、转换和加载,通常缩写为 ETL,是将数据从数据源复制和处理到受管系统的过程。首先从当前系统抽取数据,使其可供目标系统访问。接下来,对数据进行操作和修改,以匹配新系统的要求和格式。最后,将重构的数据加载到新系统中。
- 功能标志
- 功能标志,或功能切换,是一种编程策略,它涉及通过外部开关或控制来控制功能。开关通常首先设置为指示功能不应处于活动状态。当组织准备就绪时,他们可以激活开关,程序将开始使用其新功能。这允许在不立即激活新功能的情况下部署新功能。它将新软件的部署与软件的发布解耦,从而更好地控制更改的引入方式,并在生产环境中进行更充分的测试。
- 字段
- 数据库列或字段是数据库表中特定类型数据的容器。关系型数据库中的数据库字段是规则的,因为表中的每一行都将包含相同数量的具有相同特征的字段。数据库字段可以包含的值可以通过分配给该字段的数据类型以及进一步限制有效值的约束来控制。
- 平面文件数据库
- 平面文件数据库是一种存储在文件中的数据库或类数据库结构。这些文件以统一的格式定义了数据库的结构和数据。许多平面文件数据库的例子,如 CSV(逗号分隔值)文件,都是以纯文本形式编写的,但也存在二进制格式。平面文件数据库与更复杂类型的一个区别在于,存储格式本身通常负责描述数据之间的关系,而不是数据库系统。
- 外键
- 外键是关系数据库中指定的一列或一组列,用于维护两个表之间的数据完整性。一个表中的外键引用另一个表中的候选键,通常是主键。由于引用的是候选键,因此数据库中的每一行都将是唯一的,并且两个表可以逐行链接在一起。这些指定列的值预计在两个表中保持相同。外键约束允许数据库系统强制执行此要求,不允许值不同步。
- 全文搜索
- 全文搜索描述了一系列技术和功能,允许您在数据库系统中搜索文档的完整文本。这与仅依赖元数据、部分文本源和其他不完整评估的搜索功能直接相反。全文搜索依赖于使用自然语言感知解析器进行异步索引,以分析和分类文档中的文本。
- 图数据库
- 图数据库是一种 NoSQL 数据库,它使用图结构来存储和定义数据之间的关系。图数据库由节点构建,节点表示实体并可以包含属性。节点之间通过边连接,边不仅负责连接节点,还定义关系的性质。例如,一个节点可能描述一个人,其属性为“教师”。它可能通过一条名为“教授”的边连接到班级节点,但可能通过一条名为“结婚”的边连接到另一个人节点。
- GraphQL
- GraphQL 是一种可用于查询和操作数据的语言,通常用于构建 API。客户端能够指定所需的确切数据,服务器则根据提供的结构生成响应。GraphQL 的优势在于它能够使用自定义结构返回数据,将来自不同后端的数据拼接在一起,以及在单个 API 调用中回答复杂的查询。
- HTAP 数据库
- HTAP 数据库,即混合事务/分析数据库,是一类数据库,旨在提供快速、可靠的事务处理的优势,以及在同一台机器上并发处理繁重、复杂的分析工作负载的能力。这些数据库产品并非在事后分析数据,而是试图允许实时分析,从而可以快速影响决策方式。
- 层次数据库
- 层次数据库是一种将自身组织成树状结构的数据库模型。每个新记录都附加到一个父记录。随着记录添加到数据库中,树状结构出现,记录从根记录越来越多地扇出。记录之间的链接可以遍历以到达其他记录。使用层次模型的系统示例包括 LDAP(轻量级目录访问协议)和 DNS(域名系统)。
- 水平扩展
- 水平扩展,也称为向外扩展,是一种扩展策略,涉及增加可以执行给定任务的单元数量。这通常意味着增加可以响应请求的工人池中的计算机数量。向外扩展具有许多优点,包括成本、灵活性以及可以处理的流量级别,但可能会增加协调和复杂性方面的复杂性,尤其是在涉及数据时。
- 热备份
- 热备份是指数据库系统在活动使用期间进行的备份。如果可能,它们通常是首选,因为它们不需要数据库系统离线执行操作。热备份并非总是可能的,因为它们可能需要锁定数据库的某些部分,或者可能降低正常数据库任务可用的 IOPS(每秒输入/输出操作)。
- 内存数据库
- 内存数据库是一种数据库系统,其中整个数据集都可以加载到计算机内存中并进行处理。这种处理模型提供了巨大的性能优势,因为所有数据都已在主内存中,并且从较慢的存储中检索数据没有延迟。使用内存数据库时必须小心,要有一个持久化数据或在机器重新启动时重新填充内存信息的策略。266
- 索引
- 数据库索引是一种为在表中更快查找记录而创建的结构。索引允许数据库系统通过为特定列的值维护单独的结构来高效查找数据。针对索引列的查询可以通过使用比逐行检查更高效的查找策略来快速识别表中适用的行。索引列改进了读取操作,但确实增加了写入操作的开销,因为表和索引都必须更新。在设计表索引时平衡这两个考虑因素很重要。
- 数据摄取
- 数据摄取是将新数据导入数据系统的行为。这可以是一次性数据加载操作,也可以是持续消耗由其他系统生成的数据。数据摄取是填充和更新分析数据库和大数据存储的常见阶段,因为它们通常涉及整合来自各种来源的数据。
- 内连接
- 内连接是一种关系数据库操作类型,它仅返回连接列值在两个表中都存在的行来连接两个表。使用内连接,两个表中连接列必须匹配。没有使用 `NULL` 值来填充一个表或另一个表中缺失的行。
- 交互式事务
- 交互式事务是一种数据库事务功能,允许客户端以临时方式手动指定事务操作。事务不再是围绕一组可以连续执行而无需暂停的查询的包装器,交互式事务允许开发人员短暂暂停其数据库操作,以执行其他逻辑,然后再继续事务处理。这为事务处理提供了灵活性,但如果管理不当,可能导致不必要的事务运行时间过长。
- 隔离性
- 在数据库的上下文中,隔离性是一种属性,描述数据和操作在事务内部和事务之间如何可见。隔离级别可以由数据库管理员或查询作者设置,以定义隔离级别和性能之间的权衡。隔离性是 ACID 首字母缩略词描述的关键保证之一。
- 隔离级别
- 隔离级别描述了数据库在处理事务时可以在隔离性和性能之间进行权衡的不同类型。隔离级别决定了事务之间可能发生的数据泄露类型或可能发生的数据异常。一般来说,更高的隔离级别提供更多的保证,但代价是处理速度更慢。
- 连接
- 在关系型数据库中,连接是一种基于共享的“连接”列或多列连接两个表的操作。连接列中的值必须在每个表中都是唯一的。连接操作根据连接列值匹配行,以创建由每个表的列组成的扩展虚拟行。根据用户希望如何处理在另一个表中没有匹配对应行的行,可以使用不同类型的连接。
- 键
- 在数据库上下文中,键是指任何可以用于唯一标识单个行的一个或一组属性或列。某些数据由于其天然的唯一性(自然键)可以被用作键,而其他数据集可能需要生成一个键来标识每个记录(代理键)。每个表或数据集合可以有多个唯一标识行的键(称为候选键),但通常,有一个主键(称为主键)被指定为访问行的主要方式。
- 键值数据库
- 键值数据库,或键值存储,是一种数据库模型,允许用户使用键存储和检索具有任意结构的数据。键用于识别和访问记录,记录可以由单个值或更复杂的数据结构组成。键值数据库中的每个记录都可以定义自己的结构,因此不像关系数据库那样具有统一的表结构。键值数据库很有用,因为它们非常灵活,并且使用许多面向对象开发人员熟悉的模型。
- 左连接
- 左连接是关系型数据库的一种连接操作,它返回第一个表中所有行,无论是否在第二个表中找到匹配的行。连接操作通过匹配在每个表中指定比较列中具有相同值的记录来构造虚拟行。左连接的结果将包含两个表中列值匹配的行,并额外包含来自第一个(或左)表的所有不匹配行。对于这些行,与第二个(或右)表关联的列将用 `NULL` 值填充,以指示未找到匹配行。
- 词素
- 词素是语言层面的意义单位,在自然语言处理和全文搜索上下文中具有相关性。通常,当文本被索引时,它被分解成单独的标记,然后使用词典、同义词库和其他词表等语言层面的资源将其作为词素进行分析,以了解如何进一步处理它们。
- 区域设置
- 在数据库和一般计算中,区域设置指定了在执行操作和渲染结果时应使用的区域、语言、国家/地区和其他上下文数据。在数据库中,区域设置可以影响列排序、值之间的比较、拼写、货币标识符、日期和时间格式等。在数据库服务器级别定义正确的区域设置或在数据库会话期间请求所需的区域设置对于确保执行的操作将产生预期结果至关重要。
- 锁
- 在数据库中,锁是一种用于在某些操作期间防止修改数据库记录或表以保持一致性的技术。锁可以阻止对锁定资源的任何访问,或者只阻止执行某些操作。它们可以针对特定记录或整个表发出。因为锁会阻止并发操作访问锁定的数据,所以锁定的数据可能会影响性能并导致资源争用。
- MariaDB
- MariaDB 是一个开源关系数据库系统,其开发目标是为 MySQL 提供一个直接替代品,因为 Oracle 的收购让社区中的一些人对该项目的未来方向感到不确定。自最初的分支以来,每个项目都增加了功能,扩大了两个数据库系统之间的差距。
- 微服务架构
- 微服务架构是一种应用程序和服务设计,它影响组件的开发、部署和操作。微服务方法将应用程序的功能分解,并将每个职责实现为独立的服务。服务不是通过内部函数调用进行通信,而是通过网络使用明确定义的接口进行通信。微服务通常用于帮助加快开发速度,因为每个组件都可以独立编码和迭代。它还有助于可伸缩性,因为每个服务都可以根据需要进行扩展,通常借助服务编排软件。
- 迁移(数据库,模式)
- 数据库或模式迁移是用于将数据库结构转换为新设计的流程。这涉及修改数据库或表的现有模式的操作,以及转换任何现有数据以适应新结构。数据库迁移通常是基于彼此构建的,并作为有序列表存储在版本控制中,以便可以通过顺序应用迁移文件从任何先前版本构建当前数据库结构。通常,开发人员必须决定如何最好地修改现有数据以适应新结构,这可能包括以前不存在的列或难以轻松逆转的数据更改。
- MongoDB
- MongoDB 是当今最流行的面向文档的 NoSQL 数据库系统。它使用 JSON 类似结构存储数据,这些结构可以在数据存储时指定。每个文档都可以拥有自己的结构,复杂程度可高可低。MongoDB 提供非 SQL 方法和命令,以编程方式或交互方式管理和查询数据。MongoDB 以其快速的性能、可伸缩性以及支持快速开发周期而闻名。
- 单体架构
- 单体架构(Monolithic architecture)是一个用于指代传统应用程序的术语。在单体应用中,尽管不同的部分可能为了便于开发而在内部进行了拆分,但一旦构建完成,整个应用程序就是一个单一的实体,具有许多不同的功能和职责。单体应用可以通过多种方式与外部世界交互,但程序内部不同功能之间的通信和协调都在内部进行。单体架构有时被认为更容易实现,但它在扩展性和可用性方面存在局限性,因为整个应用程序必须作为一个单一单元进行扩展和缩减。
- 多版本并发控制(MVCC)
- 多版本并发控制(MVCC)是一种允许数据库系统并发访问数据的策略,作为行和表锁定的替代方案。MVCC通过为每个访问一组数据的用户创建表示一致数据状态的“快照”来工作。MVCC的目标是提供一个系统,其中读查询永远不会阻塞写查询,写查询也永远不会阻塞读查询。每个客户端都能够像它是唯一的访问者一样读取和使用数据,而数据库系统则跟踪每个用户正在读取和更新的数据的多个版本。锁定或常规的事务回滚和冲突管理策略用于解决因更新相同数据而引起的争议。
- MySQL
- MySQL 是当今最流行的关系型数据库系统之一。它于1995年首次发布,并于2010年被Oracle收购。MySQL作为一款功能强大且易于使用的关系型系统,拥有悠久的历史。它提供了多种存储引擎,并拥有广泛的社区支持。它被用于许多流行的开源和商业项目,多年来一直被认为是许多互联网服务的关键软件组成部分。
- Neo4j
- Neo4j 是一个高性能的图数据库系统。它提供ACID兼容事务,采用图数据结构,并使用Cypher查询语言来管理和查询存储的数据。Neo4j 允许开发者轻松扩展图数据工作负载,并为多种不同语言提供客户端。
- 网络数据库
- 网络数据库是一种早期的数据库模型,它构想的数据对象可以拥有比层次数据库更复杂的关系。网络数据库不将节点的连接限制为单个父节点和零个或多个子节点,而是允许你表示具有多个父节点的节点。这使得你可以表示更复杂的结构,但通常,该模型随着关系型数据库的引入而被取代。
- NewSQL
- NewSQL 是一类新型关系型数据库产品的描述符,这些产品试图弥合关系型数据库系统的结构和良好排序保证与NoSQL数据库相关联的高性能和可扩展性之间的鸿沟。虽然NewSQL 是一个相当宽松的分类,但它通常指的是允许SQL或类似SQL查询、事务保证以及灵活扩展和分布式处理的数据库。
- NoSQL
- NoSQL 数据库,有时也称为非关系型数据库或“不仅是SQL”数据库,是一个广泛的类别,涵盖了所有偏离常见关系型数据库模型的数据库系统。虽然非关系型数据库早已存在,但该类别通常指代使用替代模型(如键值、文档型、图型和列族存储)的新一代数据库。它们通常用于管理不适合关系模型的,且高度注重灵活性和可扩展性的数据。
- 节点
- 在数据库中,“节点”通常指数据库的单个实例。当谈论分布式数据库的基础设施架构时,其中多个服务器可能参与处理请求,此时“节点”一词经常被使用。
- 不可重复读
- 不可重复读是一种在特定事务隔离级别下可能出现的不必要的并发一致性问题。当事务内部重复的读操作基于事务外部的提交而返回不同数据时,就会发生不可重复读。这种隔离性破坏是某些事务隔离级别旨在防止的行为类型之一。
- 范式化
- 数据库范式化是一个构造数据库的过程,旨在消除数据冗余并杜绝引入不一致性的可能性。范式化通常以“范式”的形式讨论,每个范式都在前一个范式的基础上增加额外的检查和保证。在实践中,数据范式化通常是在数据完整性保证和性能之间进行权衡,因此结构通常不会达到最高级别的范式化。
- OLAP 数据库
- OLAP 数据库(或在线分析处理数据库)是一种主要设计用于分析和生成洞察的数据库系统。用于OLAP的数据库不需要与实时事务处理(OLTP数据库)相同的性能特性。相反,它们通常设计用于摄取和处理大型数据集、执行复杂且长时间运行的查询,以及生成报告、图表和洞察,以帮助制定业务决策。
- OLTP 数据库
- OLTP 数据库(或在线事务处理数据库)是一种主要设计用于促进快速、近乎实时的数据库任务的数据库系统。通常,OLTP 数据库与多客户端可能同时访问数据且需要快速响应时间的应用程序一起使用。OLTP 数据库针对可靠性和处理速度进行了优化。
- ORM
- ORM(或对象关系映射器)是一种数据库工具,旨在在许多数据库使用的关系模型和客户端应用程序中使用的面向对象数据模型之间进行转换。该工具提供了一种在代码中表示数据库对象并将编程对象转换为适合存储在数据库中的格式的方式。虽然ORM可以是有用的工具,但它们通常不是完美的抽象,并且可能导致不同模型在如何表示数据方面发生冲突的问题。
- 对象关系阻抗失配
- 对象关系阻抗失配是一个术语,用于描述许多数据库使用的关系数据模型与许多应用程序中使用的面向对象数据视图之间存在的普遍紧张关系。阻抗失配指的是两种模型之间的差异,这些差异使得它们之间精确的转换变得困难或不可能。它是一个广义术语,用于指代该领域中可能出现的许多不同类型的问题,包括表示继承、封装、类型差异、不同的并发一致性保证等等问题。
- 乐观并发控制
- 乐观并发控制,有时简称为OCC,是数据库系统用来处理冲突并发操作的策略。乐观并发控制假设并发事务很可能不会相互干扰,并允许它们继续执行。如果事务尝试提交时发生冲突,它将在此时回滚。如果您认为工作负载中的大多数事务不会相互冲突,那么OCC是一个有吸引力的策略。只有确实发生冲突的事务才会遭受性能损失(它们将被回滚并必须重新启动),而所有非冲突事务都可以执行,而无需等待查看是否会发生冲突。
- 外连接
- 外连接是一种关系型数据库操作,它通过返回每个组成表中的所有行来连接两个表,即使在另一个表中没有匹配的记录。连接操作通过匹配每个表中指定比较列中具有相同值的记录来构造虚拟行。外连接的结果将包含两个表中列值匹配的行,此外还将包含每个表中所有未匹配的行。对于这些行,在另一个表中没有匹配的列将用`NULL`值填充,以指示未找到匹配的行。
- 参数化查询
- 参数化查询,也称为预处理语句,是一种数据库查询,它将用户输入作为参数,而不是通过将字符串与用户输入拼接。参数化查询允许您提前指定查询,包括未知输入,然后稍后提供应在语句中替换的值。这可以防止SQL注入漏洞,在这种漏洞中,精心构造的输入可能被用来使数据库系统将值视为可执行的SQL代码,从而错误地解释查询。
- 持久性
- 持久性是数据的一种特性,表示数据的状态将比创建它的进程更长寿。持久性是大多数数据库系统的关键组成部分,允许在数据库进程或服务器本身重新启动后再次加载数据。应用程序和数据库可以具有不同级别的持久性,以防范不同类型的故障情况,例如单系统持久性、远程持久性以及集群持久性。
- 持久化存储
- 持久化存储是指在系统断电或断开连接后仍能保持数据的任何存储介质。持久化存储是维护更永久数据存储库所必需的。通常,持久化存储比内存数据等瞬时存储要慢,因此数据库系统会根据需要使用各种进程在两种存储系统之间传输数据,以利用并平衡两者的优缺点。
- 悲观并发控制
- 悲观并发控制,或PCC,是数据库系统用于处理冲突并发操作的策略。与乐观并发控制相反,悲观并发控制在可能发生冲突时立即终止事务。如果频繁发生冲突,此策略很有用,因为它确保系统不会浪费时间执行因冲突而无法提交的事务。相反,它在可能发生冲突时强制执行更串行化的执行方法,这种方法虽然较慢,但避免了非生产性处理。
- 幻读
- 幻读是一种隔离异常,在某些隔离级别下可能在事务中发生。当`SELECT`操作在事务期间返回不同行,原因是事务外部的更改时,就会发生幻读。例如,如果您尝试`SELECT`表中的所有记录,第一次可能返回8行,但如果另一个事务提交了额外的一行,则重复原始查询将显示不同的结果。
- PostgreSQL
- PostgreSQL是一个流行的高性能关系型数据库系统,以其符合各种SQL标准而闻名。PostgreSQL专注于提供一个单一、灵活的数据库引擎,而不是为不同的用例提供多个引擎。它具有高度可扩展性,并拥有大量的社区附加功能和客户端应用程序。
- 精确度(搜索)
- 在搜索性能方面,精确度衡量的是检索到的结果与给定查询的相关程度。具体来说,搜索精确度定义为相关结果数量占所有返回结果数量的比例。一个高精确度的查询不会检索到许多与查询不相关的项目。
- 主键
- 主键是一种数据库键,被指定为唯一标识数据库行的主要方式。虽然其他键可能也能拉取单个行,但主键是专门为此目的标记的,系统会强制执行唯一性和非`NULL`一致性检查。主键可以是自然键(在记录中自然唯一的键)或代理键(专门为用作主键而添加的键),并且可以由单个或多个列组成。
- 查询
- 在数据库中,查询是使用查询语言向数据库管理系统发出请求的格式化命令。数据库系统处理查询以了解要采取哪些操作以及要向客户端返回哪些数据。通常,查询用于请求与特定模式匹配的数据,将新数据插入现有结构,或修改和保存对现有记录的更改。除了针对数据项,查询通常还可以操作表结构和服务器设置等项,使其成为系统的通用管理接口。SQL(或结构化查询语言)是关系型数据库最常用的数据库查询语言。
- 查询构建器
- 查询构建器是应用程序开发中用于简化数据库编程的数据库抽象。与ORM类似,查询构建器提供了一个从应用程序内部操作数据库系统的接口。然而,查询构建器不试图将应用程序对象直接映射到数据库记录,而是专注于提供与数据库操作紧密对应的原生函数和方法。这允许您以比直接使用SQL(或其他数据库语言)字符串更安全、更灵活的方式以编程方式构建查询。
- 查询语言
- 查询语言是一种专门用于在数据库中搜索、检索和操作数据的编程语言。SQL(或结构化查询语言)是世界上最常用的查询语言,主要用于管理关系型数据库系统中的数据。查询语言操作可以根据过程的重点和目标进行分类:当它们用于定义数据结构时,称为数据定义语言(DDL);当它们用于系统管理任务时,称为数据控制语言(DCL);当它们用于修改数据时,称为数据操作语言(DML)。
- 查询规划器
- 查询规划器是数据库系统的一个内部组件,负责将客户端提供的查询转换为可用于实际搜索数据库并构造所需响应的步骤。设计良好的查询规划器可以考虑多种潜在解决方案,并选择能够提供最优化结果的选项。有时,查询规划器不会选择最佳解决方案,数据库管理员必须手动调整选择标准。
- Raft共识算法
- Raft共识算法是一种旨在协调集群节点间信息共享、管理职责和故障恢复的算法。该算法提供了一种确保每个成员都同意数据操作的方法,并包含了在网络分区或节点宕机情况下进行领导者选举的机制。它通常被认为是比替代方案(如 Paxos)更简单的实现算法。.
- 读已提交隔离级别
- 读已提交隔离级别是关系型数据库系统的一种事务隔离级别,提供最少量的隔离保证。在读已提交级别下,事务保证没有脏读现象,即事务可以读取其他尚未提交的事务数据。在此隔离级别下,不可重复读、幻读和序列化异常仍可能发生。
- 读操作
- 读操作通常定义为任何不修改数据而检索数据的操作。读操作通常应表现为底层数据是不可变的。它们可能会修改检索到的数据以改变其格式、过滤或进行其他修改,但存储在数据库系统中的底层数据不会改变。
- 穿透读缓存
- 穿透读缓存是一种缓存策略,其中缓存部署在通往后端数据源的路径上。应用程序将所有读查询直接发送到缓存。如果缓存包含请求的项目,则立即返回。如果缓存请求未命中,缓存会从后端数据库获取数据,以便将项目返回给客户端并将其添加到缓存中以供将来查询。在这种架构中,应用程序会继续将所有写查询直接发送到后端数据库。
- 读未提交隔离级别
- 读未提交隔离级别是关系型数据库系统的一种事务隔离级别,它基本上不提供任何隔离。使用读未提交隔离级别执行的事务可能会遇到脏读、不可重复读、幻读和序列化异常。一般来说,读未提交级别用处不大,因为它不满足大多数用户对隔离性的期望。
- 召回率
- 在搜索性能方面,召回率衡量的是查询能够检索到多少相关项。召回率具体定义为查询返回的相关结果数量与数据集中相关条目总数之比。高召回率的查询能够检索到大量可能与搜索查询相关的项目。
- 记录
- 在数据库中,记录是通常代表单个实体的一组数据。在关系型数据库中,记录与表中的行是同义词。每条记录可能关联有多个数据片段或属性(在关系型表中,这些将是字段)。
- Redis
- Redis 是一款流行的、高性能键值存储,常被部署为缓存、消息队列或配置存储。Redis 主要是一个内存数据库,但可以选择将数据持久化到非易失性存储中。它具有多种类型、灵活的部署选项和高可扩展性。
- 关系型数据库
- 关系型数据库是一种数据库模型,它根据预定义的数据结构(称为表)来组织数据项。表定义了具有特定约束和类型的各种列,并且每条记录都作为行添加到表中。高度规则的数据结构的使用为关系型数据库系统提供了多种方式来组合各种表中保存的数据以回答单个查询。关系型数据库得名于代数关系,它描述了可用于操作规则数据的不同操作。在大多数情况下,关系型数据库使用SQL(结构化查询语言)与数据库系统交互,因为它允许用户以即席方式表达复杂的查询。
- 关系型数据库管理系统(RDBMS)
- 关系型数据库管理系统,也称为RDBMS,是管理关系型数据库的数据库软件。在实践中,RDBMS这个术语常常与关系型数据库互换使用,尽管从技术上讲,RDBMS管理一个或多个关系型数据库。
- 可重复读隔离级别
- 可重复读隔离级别是关系型数据库系统的一种事务隔离级别,它提供的隔离性优于读已提交级别,但不如可串行化级别。在可重复读隔离级别下,脏读和不可重复读都被阻止。然而,幻读和序列化异常仍然可能发生。这意味着虽然单个记录的读取保证保持稳定,但范围查询(例如返回多行的`SELECT`语句)可能会由于事务外部的提交而发生变化。
- 复制
- 复制是将数据从一个系统持续复制和更新到另一个系统的过程。在数据库中,这通常涉及一个服务器共享变更日志,其他服务器可以读取并将其应用到自己的数据副本上。这允许变更在各个服务器之间传播,而无需每个服务器在执行时批准操作。存在多种类型的复制,它们在共享方式、系统复制数据的架构以及控制复制过程的策略方面有所不同。复制是许多系统中维护数据可用性、分发负载以及为备份等离线过程提供数据副本的重要功能。
- 右连接
- 右连接是一种关系型数据库连接操作,其中返回指定为第二张表的所有行,无论在第一张表中是否找到匹配的行。连接操作通过匹配每个表中指定比较列中具有相同值的记录来构造虚拟行。右连接的结果将包含两个表中列值匹配的行,此外还将包含第二张表(或右表)中所有未匹配的行。对于这些行,与第一张表(或左表)关联的列将用`NULL`值填充,以指示未找到匹配的行。
- 基于角色的访问控制(RBAC)
- 基于角色的访问控制,也称为RBAC,是一种安全策略,它根据用户的分配角色限制其允许的操作。对象权限和执行操作的特权被分配给角色,这些标签使管理访问变得更容易。要将与角色关联的功能授予用户,可以将用户设为该角色的成员。用户可以成为多个角色的成员,以获得每个角色提供的权限的并集。角色作为标准化各种角色所需特权以及简化添加或删除用户访问权限的方式非常有帮助。
- 行
- 在关系型数据库中,行是数据库表中单个记录的表示。这些数据库中的行具有预定义的结构,形式为列的集合,这些列指定了数据类型以及可接受值范围的任何约束。关系型表中的每行都具有相同的列或字段,从而形成非常规则的数据结构。
- 串行扫描
- 串行扫描是一种搜索技术,它涉及在搜索时逐个分析每个潜在项目与查询的匹配情况。这与基于索引的搜索相对,在基于索引的搜索中,项目会提前被统计和组织,以便更快地响应查询。
- SQL
- SQL,或结构化查询语言,是当今最常用的数据库查询语言。它主要用于处理关系型数据,允许用户创建查询以选择、过滤、定义和操作关系型数据库中的数据。虽然SQL是一个通用标准,但实现细节差异很大,使其不如预期那样与软件无关。
- SQL 注入
- SQL注入是一种针对易受攻击的、由SQL支持的应用程序的攻击类型。它通过精心构造输入来实现,这些输入可以使数据库系统将提交的值视为可执行的SQL代码,从而错误地解释查询。SQL注入主要由开发人员尝试使用字符串拼接将未净化的用户输入与查询字符串结合而引起。可以通过使用预处理语句(也称为参数化查询)来防止它,在预处理语句中,带有占位符的查询与替代值分开提交到数据库,从而使查询值的边界明确无歧义。
- SQLite
- SQLite 是一个用C语言库编写的关系型管理数据库系统。由于它以库的形式实现,因此不符合传统的客户端/服务器分离模型,而是依赖于库或客户端程序同时扮演这两个角色来写入本地文件。它以其小巧的体积实现了极强的功能,特别适合嵌入式使用。SQLite 在许多不同的语言中都有绑定,并作为内部存储系统广泛部署在应用程序中。
- 净化输入
- 净化输入,也称为输入验证,是一种用于使用户提供的值安全地进行后续处理的过程。它用于防范恶意输入,这些恶意输入可能导致应用程序或数据库将数据值误解为有效的应用程序或查询代码。输入可以通过多种不同方式进行净化,例如限制有效字符列表、删除对所用系统具有特殊含义的字符以及转义值。一般来说,与其净化输入,不如使用预处理语句被认为更安全。
- 扩展
- 扩展是指增加分配给应用程序或工作负载的资源,以获得更好的性能或处理更多的并发活动。扩展策略通常分为两类:向外扩展(也称为水平扩展)和向上扩展(也称为垂直扩展)。水平扩展涉及向资源池中添加额外的工人来处理传入的工作。这通常意味着添加可以执行相同操作的额外服务器,从而分配负载。向上扩展涉及向已处理请求的服务器添加额外的资源,如处理器、RAM或存储。扩展允许您处理更多的并发操作,但它可能会增加应用程序架构的复杂性。
- Schema
- 数据库Schema是一种描述数据在数据库系统中应如何组织的结构。它定义了每个表、字段、索引、关系、函数以及数据库中包含的任何其他结构的格式。Schema是告诉数据库系统对象外观以及允许或不允许与对象关联哪些数据的定义。在PostgreSQL中,数据库Schema具有略微不同的含义,它被实现为数据库对象的子对象,充当其他数据库对象的命名空间。
- 可串行化隔离级别
- 可串行化隔离级别是关系型数据库系统的一种事务隔离级别,提供最严格的隔离保证。在可串行化级别下,脏读、不可重复读、幻读和序列化异常都被阻止。数据库系统通过中止任何可能发生冲突的事务来实现这一点,这确保了并发事务可以像串行执行一样被应用。可串行化隔离提供了强大的隔离性,但由于冲突事务可能被中止并不得不重新提交,因此可能会导致显著的性能问题。
- 序列化异常
- 序列化异常是并发事务中可能出现的问题,其中并发事务的提交顺序会影响最终数据。序列化异常的发生是因为不同事务中的操作可能基于其他事务正在更新的数据进行计算。为了防止序列化异常,事务必须使用可串行化隔离级别,该级别通过回滚其中一个冲突事务来防止这些情况发生。
- 数据库分片是数据库对象存储的记录段,出于性能原因被分离并由不同的数据库节点管理。例如,一个包含900万条记录的数据库表可以被分成三个独立的分片,每个分片管理300万条记录。数据通常根据“分片键”进行划分,分片键决定了记录应由哪个分片管理。每个分片管理其记录子集,并且需要一个协调组件通过引用分片键将客户端查询定向到适当的分片。分片可以帮助处理非常大型数据集的某些类型性能,但它通常需要做出权衡,这可能会降低其他类型的性能(例如,需要协调多个分片的操作)。
- 陈旧数据
- 在处理数据存储时,陈旧数据指任何不能准确反映数据最新状态的数据。这通常主要在缓存时出现问题,因为数据片段可能在它们被更改失效很久之后仍被保留和使用。
- 标准列族
- 标准列族是一种列族数据库对象类型,它通过定义与键值对(类似于列)关联的行键来存储数据。每行都可以定义和使用自己的列,因此生成的数据集不像关系型数据库表那样规则。然而,行键与列标签和值的组合仍然有点像一张表。标准列族为基于键的数据检索提供了良好的性能,因为它们能够将与键相关的所有信息存储在同一位置,并且可以轻松修改该键的数据结构。
- 词干提取
- 词干提取是全文搜索索引中使用的技术,其中具有相同词干的单词被合并到一个条目中。这增加了相关结果的数量,但会略微降低精确度。例如,“cook”、“cooked”和“cooks”这些词可能占据一个单独的条目,搜索其中任何一个词都会返回该整个条目的结果。
- 停用词
- 在全文搜索语境中,停用词是认为不适用于搜索查询的单词列表。这些通常是语言中最常见的词语,它们本身缺乏太多含义,或者模糊到无关紧要的地步。英语中的一些例子包括“the”、“it”和“a”等词。
- 存储引擎
- 存储引擎是数据库管理系统中的底层组件,负责在数据库内插入、删除、查询和更新数据。许多数据库功能,如执行事务的能力,实际上是底层存储引擎的属性。有些数据库系统,如MySQL,有许多不同的存储引擎,可以根据您的用例要求使用。其他系统,如PostgreSQL,专注于提供一个在所有典型场景中都有用的单一存储引擎。
- 存储过程
- 存储过程是在数据库中定义一组操作的一种方式,客户端可以轻松运行这些操作。由于它们存储在数据库中,有时可以提高性能并避免网络延迟。存储过程与用户定义函数不同,它们必须使用特殊语句显式调用,而不是合并到其他查询中,并且不能在所有相同场景中使用。
- 超列族
- 超列族是一种列族数据库对象类型,它通过定义与列族关联的行键来存储数据。每行可以包含多个列族,作为比标准列族进一步细分数据的方式。
- 超键
- 超键是关系型数据库模型中任何可以唯一标识记录的属性集合。所有其他键类型(主键、候选键、复合键等)都是超键的例子。一个平凡的超键包含所有可用属性,而候选键是任何不能通过删除额外列来简化的超键。
- 表
- 在关系型数据库中,表是一种数据库结构,它以列的形式定义不同的属性,并以行的形式存储具有关联列值的记录。表列定义的约束和数据类型以及额外的表级要求描述了可以存储在表中的数据类型。由于表是规则的数据结构,数据库系统了解其中包含的数据的形状,这在某些情况下可以帮助使查询性能更可预测。
- 表别名
- 表别名是在查询时为一个现有表或计算表,或类似表的数据库对象指定的名称。如果原始名称过长或含糊不清,或者表是由查询本身生成并需要一个标签以便在查询的其他部分或显示时引用,则表别名会很有用。
- 三层架构
- 三层应用程序架构是部署Web应用程序的常见基础设施架构。第一层由一个或多个Web服务器组成,负责响应客户端请求、提供静态内容并向后续层生成请求。第二层由应用程序服务器处理,负责通过执行代码为前端生成响应来生成动态内容。第三层由数据库系统处理,负责响应中间层对用于生成内容的自定义值的请求。
- 标记(Token)
- 在自然语言处理和全文搜索中,标记(token)是系统识别的离散单词,可以根据不同特征进行分类。标记可能存储的信息包括其在文本中的相对位置、类型(数字、单词、短语等),以及任何可能有用的额外元数据。
- 事务
- 数据库事务是一组操作,它们组合成一个单一的单元,可以由数据库系统原子地执行。事务确保其中所有操作都成功完成,或者它们都回滚以返回到起始状态。这有助于维护数据完整性,并允许客户端在数据库中执行的不同不相关操作之间进行隔离。数据库事务提供的保证由ACID(原子性、一致性、隔离性和持久性)属性概括。
- 两阶段提交
- 两阶段提交是一种在分布式系统中实现事务的算法。两阶段提交通过将提交过程分为两个主要阶段来工作。在第一阶段,接收到更改的服务器将潜在更改通知协调组件。协调器向所有相关服务器请求是否提交的投票。如果投票成功,第二阶段开始,事务由每个独立成员实际提交。该算法允许分布式系统保持一致的数据集,但代价是与协调投票过程相关的开销。
- 两阶段锁定
- 两阶段锁定,有时简写为2PL,是一种并发控制策略,用于确保事务是可串行化的。这两个阶段指的是扩展事务持有的锁数量的操作和触发锁释放的操作。两阶段锁定通过使用排他锁和共享锁来协调读写操作。需要读取数据的事务可以请求一个共享读锁,该锁允许其他事务读取相同的数据但阻止写操作。因为这是一个共享锁,所以每个连续的读操作可以同时请求一个读锁,并且数据将保持不可修改,直到所有锁都被释放。需要修改数据的事务会请求一个排他写锁,该锁阻止其他写锁和任何读锁的发出。
- Upsert
- Upsert 是一种数据库操作,它要么更新现有条目,要么在未找到当前条目时插入新条目。Upsert 操作由一个查询组件组成,用于搜索要更新的匹配记录,以及一个变异组件,用于指定应更新的值。通常,还需要为其他字段提供额外的值,以处理必须创建新记录的情况。
- 值
- 在谈论数据库时,“值”是指数据库系统存储在其数据结构中的任何数据片段。通过额外的上下文,例如存储该值的字段名称,可以赋予该值超出其内在含义的意义。特定的存储结构,例如列或表,可能定义了它所存储值类型的要求。
- 垂直扩展
- 垂直扩展,也称为向上扩展,是一种扩展策略,涉及为服务器或组件分配额外的资源(如CPU、RAM或存储),以提高其性能或负载容量。向上扩展通常是扩展工作负载最简单的策略,因为它不会增加当前部署的架构复杂性。虽然垂直扩展在许多场景中效果良好,但其缺点包括对单点故障的依赖以及单个机器可合理管理的资源量的限制。
- 顶点
- 在图数据库中,顶点是实体,可以持有属性并通过边连接到其他顶点。顶点类似于其他数据库系统中的记录或文档,因为它们具有指示所代表对象类型的标签或名称,并且具有提供特定附加信息的属性,以区分特定顶点与其类型中的其他顶点。顶点通过定义它们之间关系的边连接到其他顶点。例如,一个“作者”顶点可以通过一条“著有”边连接到一个“书籍”顶点。
- 视图
- 在关系型数据库中,视图是存储查询的一种类似表的表示。视图可以在许多上下文中用作表,但它们不是底层数据结构的一部分,而是从其查询结果派生而来。视图对于构建比底层Schema中存在的数据更复杂的数据表示非常有用。例如,视图可以连接几个表并只显示几个相关的列,这有助于使数据更易于使用,即使由于一致性或性能原因,另一种结构更适合存储。
- 易失性存储
- 易失性存储是指任何需要持续供电才能保持数据存在的存储类型。例如,存储在RAM中的数据通常被认为是易失性的,因为它在断电时会丢失且无法恢复。
- 宽列存储
- 宽列存储是一种NoSQL数据库类型,它使用标准和超列族将数据组织成行和列。行键用于检索所有关联的列和超列。每行可以包含完全不同的列,因为列定义和值都存储在行结构本身中。
- 预写日志(WAL)
- 预写日志(Write-Ahead Logging,简称WAL)是一种数据修订管理方法,可提高系统在崩溃和故障期间的数据损坏恢复能力。如果没有像WAL这样的技术,如果系统在数据库更改仅部分完成时崩溃,就可能发生数据损坏。在这种情况下,数据既不在初始状态,也不在预期状态。使用预写日志,系统会在执行操作之前将其意图记录到持久的预写日志中。这样,数据库可以通过在恢复期间查看日志并重做任何最初未正确完成的操作来恢复到已知良好状态的数据。
- 权重(搜索)
- 在搜索语境中,搜索权重是分配给不同数据类别的任意值,旨在影响项目在分析相关性时的优先级。为特定类型的信息分配较高权重将导致查询引擎在编译相关结果列表时,赋予该类别比其他类别更大的重要性。
- 写绕行缓存
- 写绕行缓存是一种缓存模式,其中写查询直接发送到后端数据库,而不是首先写入缓存。因为缓存中与更新相关的任何项目现在都将变得陈旧,所以此方法需要一种方式来使这些项目的缓存结果在后续读取时失效。此技术几乎总是与缓存读取策略结合使用以控制读取行为。此方法最适合写入或更新后不常读取的数据。
- 回写缓存
- 回写缓存是一种缓存方法,其中写查询发送到缓存而不是后端数据库。然后,缓存会定期捆绑写操作并将其发送到后端数据库以进行持久化。这是穿透写缓存方法的一种修改,旨在在高吞吐量写操作导致压力时降低成本,但代价是发生崩溃时持久性降低。这确保了所有最近写入的数据立即可供应用程序使用,无需额外操作,但如果缓存崩溃而未能将写入持久化到数据库,则可能导致数据丢失。
- 写操作
- 在数据库语境中,写操作是指任何修改存储数据的数据库行为。这包括插入新记录、删除记录以及将现有记录更新为新值。
- 穿透写缓存
- 穿透写缓存是一种缓存模式,应用程序直接将更改写入缓存而不是后端数据库。然后,缓存会立即将新数据转发到后端数据库以进行持久化。此策略最大程度地降低了缓存崩溃时数据丢失的风险,同时确保读操作可以访问所有新数据。在高写入场景中,转换为回写缓存可能更为合理,以防止后端数据库承受过大压力。
Prisma.io 相关内容
如果您正在将Prisma Client与您的数据库一起使用,您可以访问我们的数据库功能矩阵,以检查Prisma中各种数据库功能的支持情况。
Prisma是一个适用于Typescript和Node.js的开源数据库工具包,旨在提高应用程序开发者在使用数据库时的生产力和信心。
上一页
数据库复制简介及其优势