什么是数据库?
数据库的定义、类型和示例。
什么是数据库?
数据库最基本的定义是指相关信息的集合。当你在一张纸上写下杂货列表时,你就在创建一个小型模拟数据库。但什么是计算机科学中的数据库? 在计算机科学中,“数据库”被定义为以数据形式存储在计算机系统上的信息的集合,例如本地杂货店的库存。
数据库有哪些用途?
数据库用于存储和组织数据,使其更易于管理和访问。随着数据集合增长和复杂性增加,使这些数据保持井然有序、可访问和安全变得更加困难。为了帮助解决这些问题,可使用数据库管理系统 (DBMS),该系统中包括一个数据库管理工具层。
什么是数据?
数据是指捕获并存储的有关个某一个人、地点、事物或对象(称为实体)的任何信息,以及该实体的属性。
例如,如果你要捕获并存储有关本地餐厅的信息,则每个餐厅都是一个实体,其名称、地址和营业时间都是该实体的属性。你收集和存储的关于自己最喜欢的餐厅的所有信息都是数据。
数据库类型
数据库的类型大致分为关系数据库和非关系数据库。关系数据库高度结构化,并能够理解称为结构化查询语言 (SQL) 的编程语言。非关系数据库则高度多样化,支持多种数据结构。由于许多非关系数据库不使用 SQL,因此它们通常称为 NoSQL 数据库。
数据结构的类型
“表结构”是将数据组织到一系列行和列中的关系数据库结构,其中行包含实体,而列包含实体属性。 “宽表”或“宽列存储”使用具有空属性的稀疏列,大幅增加了表中的总列数。由于某些位置为空,因此宽表是非关系数据库结构的一个示例。
线性结构将元素组织成一个序列
数组
链接列表
二叉树
“树结构”将数据库元素组织到一个由节点组成的分层数据库中,这些节点具有源自一个根节点的父子关系。
图形
“图形结构”将数据库元素组织为一个由节点组成的非分层网络,节点之间关系复杂。
哈希表
“基于哈希”的结构通过将索引分配到哈希表,使用关联相关数据的哈希函数将键映射到值。
面向文档的数据库
面向文档的数据库将有关实体的大量信息组织为单个对象(文档),该对象独立于其他对象。对象之间不需要彼此映射,并且可以编辑单个对象而不影响其他对象。
关系数据库
在关系数据库(最常见的类型)中,数据组织为表,这些表保存有关每个实体的信息,并通过行和列表示预定义的类别。可以灵活高效地访问这种结构化数据。
关系数据库的示例包括 SQL Server、Azure SQL、MySQL、PostgreSQL 以及 MariaDB。
非关系数据库
非关系数据库存储非结构化或半结构化数据。它们不会像关系数据库那样使用带有列和行的表。而是使用针对要存储的数据类型的特定要求进行了优化的存储模型。使用非关系数据库,可以快速访问、更新和分析大型分布式数据集。
非关系数据库的示例包括 MongoDB、Azure Cosmos DB、DocumentDB、Cassandra、Couchbase、HBase、Redis 以及 Neo4j。
某些非关系数据库称为 NoSQL 数据库。NoSQL 是指不使用 SQL 或不仅仅使用 SQL 进行查询的数据存储。取而代之的是,NoSQL 数据库使用其他编程语言和构造来查询数据。许多 NoSQL 数据库确实支持与 SQL 兼容的查询,但其执行这些查询的方式通常不同于传统关系数据库执行相同 SQL 查询的方式。
一种类型的非关系数据库(对象数据库)使用面向对象的编程。对象经过编码,其状态(事实数据)存储在一个字段或变量中,其行为通过方法或函数显示。对象可以永久保存在持久性存储中,无需 API 或工具即可直接读取和映射,因此可提高数据访问速度和性能。然而,对象数据库并不像其他数据库类型一样常用,因此可能难以获得支持。
内存中数据库和缓存
内存中数据库中的所有数据都存储在计算机的随机存取内存 (RAM) 中。查询或更新此类数据库时,会直接访问主内存。不涉及磁盘。数据加载速度很快,因为访问主内存(靠近主板上的处理器)比访问磁盘快得多。
内存中数据库通常用于存储经常访问的信息(如定价或库存数据)的副本。这就是我们常说的缓存。在缓存数据时,数据副本存储在临时位置,以便在下次请求时更快地加载。详细了解 缓存。
数据库示例
数据库看似无形且神秘,但我们大多数人每天都在与它们互动。下面是一些常见的关系数据库、NoSQL 数据库和内存中数据库示例:
金融交易
银行使用数据库来跟踪客户交易,包括从余额查询到帐户间转账的所有交易。这些事务需要几乎立即发生,且来自大量事务的数据必须始终保持最新。出于这些目的,银行使用联机事务处理系统来处理大量客户和频繁的事务数据更改,同时实现快速响应,该系统是使用关系数据库生成的。
电子商务目录
如果你有一个电子商务网站,其目录将包含各产品,而每个产品都具有自己的各种属性。面向文档的数据库(非关系数据库的一个示例)使用单个文档来描述单个产品的所有属性。你可以更改文档中的属性,而不会影响任何其他产品。内存中数据库常用于缓存经常访问的电子商务数据(如库存和定价),以加快数据检索速度并降低数据库上的负载。
社交网络
加入社交网络后,你的信息将添加到一个非关系数据库中,该数据库中包含使用该网络的所有用户的信息。当你与该网络中的其他用户联系时,你就会出现在社交图中。这就是为什么你可以看到筛选出的好友或工作联系人列表,并发现这些好友和联系人认识的其他人员。
个性化结果
非关系数据库推动了联机个性化,这种个性化已经非常普遍,你甚至可能没有注意到。如果通过旅游网站预订航班,你还会看到预订酒店和租车的选项。网站的数据库包含大量非结构化信息(航班详细信息、旅游偏好、之前的汽车或酒店预订信息),这些信息都被用于为你提供个性化建议,以便为你节省时间、金钱或精力。同样,内存中数据库被用作会话存储,用于在用户使用应用程序时高效保存临时用户数据(例如搜索偏好或购物车)。
商业分析
当组织想要从自己的数据中获取见解时,关系数据库可帮助他们管理其分析。例如,技术支持人员可以从多个维度(包括问题类型、解决问题的时间和客户满意度)跟踪客户问题。使用表结构的关系数据库一次只使用两个维度来组织客户问题数据,但使用联机分析处理系统,支持人员可以一次查看多张表,从而可通过多维分析高速处理大量数据。
数据库管理系统
数据库管理员使用数据库管理系统 (DBMS) 来控制数据,尤其是在使用大数据时。大数据是指系统经常实时或几乎实时接收到的大量结构化和非结构化数据。DBMS 还有助于管理跨多个应用程序使用的数据或驻留在多个位置的数据。
不同的数据库管理系统提供不同级别的组织、可伸缩性和应用程序。除了要组织的数据类型和数据访问方式之外,使用的 DBMS 还取决于数据所在的位置、数据库使用的体系结构类型以及计划的缩放方式。
你的数据是驻留在本地、云中,还是同时驻留在这两个位置?
在本地数据库中,数据驻留在专用现场硬件(通常称为私有云)上。要添加数据容量,数据库管理员需要确保现场服务器有足够的可用空间,或者需要使用新硬件来扩展其基础结构,以创建空间。
在基于云的数据库中,结构化或非结构化数据驻留在私有计算平台、公共计算平台或混合云计算平台(即结合私有云和公有云存储的平台)上。由于云数据库是针对虚拟化环境设计的,因此它们同时具有高度可缩放性和高可用性。它们还有助于降低成本,因为无需购买太多硬件,只需为使用的存储付费即可。
你的数据库体系结构是集中式、分布式还是联合式?
在集中式数据库中,所有数据都驻留在一个位置的一个系统中。该系统就是所有用户的访问点。
分布式数据库可以跨越关系和非关系数据库类型。在分布式数据库中,数据存储在多个物理位置,可以位于多个本地计算机上,也可以分布在由互连计算机组成的网络中。
在联合数据库中,在独立服务器上运行的多个不同数据库统一为一个大型对象。区块链就是一种联合数据库,用于安全管理财务账本和其他事务记录。
你将通过纵向扩展还是横向扩展来应对数据增长?
纵向扩展(或纵向缩减)也称为垂直缩放,是将资源(如内存或更强大的 CPU)添加到现有服务器的过程。
横向扩展(或横向缩减)也称为水平缩放,它将更多计算机添加到资源池。
水平缩放(而不是垂直缩放)可延长现有硬件的生命周期,让你可以进行升级而不会引起供应商锁定,还可降低成本并创造长期的灵活性潜力。
Azure 数据库
利用自动实现可伸缩性、可用性和安全性的完全托管数据库简化数据操作。有关系数据库、NoSQL 数据库和内存中数据库可供选择,它们可跨专用引擎和开源引擎进行使用。
了解 Azure SQL 系列数据库
统一 SQL 项目组合而不影响兼容性。使用熟悉的 SQL Server 技术,按自己的方式将应用程序从边缘迁移到云、实现应用程序现代化以及部署应用程序。
使用 Azure Database for PostgreSQL 大胆缩放
Azure Database for PostgreSQL 通过高可用性、AI 支持的性能优化和高级数据库安全性,帮助你快速、自信地缩放工作负载。
使用 Azure Cosmos DB 生成高性能应用
Azure Cosmos DB 是一种带有开放 API 的完全托管 NoSQL 数据库,在任何规模下都能保证速度。
通过 Azure Cache for Redis 高效处理高流量
Azure Cache for Redis 通过向应用的体系结构添加快速缓存层,帮助你以近乎即时的速度同时处理成千上万个用户。