数据库基础#3:数据库里有什么?(翻译)原文来自https://www.scarydba.com/2017/06/20/database-fundamentals-3-whats-database/
值得注意的是,很多人可能永远都不需要创建自己的数据库。你可能永远都不会创建自己的表或其他数据结构。你可能只进行备份、还原和维护操作系统安全性,并让应用程序为你安装创建数据库。这是完全可以理解的,也完全符合许多企业对数据库的偶发需求。不过,了解这些内容是什么以及理解它是如何作为SQL的一部分进行工作不失为一个好主意。
数据库实际上是一种文件
你需要存储一些今后能够检索到的信息。首先你有必要组织这些信息。如果你使用的是文字处理程序,则将不同的文档存储在不同的文件中。肯定不会把你所有的文件都放到一个大文件里,SQL以非常类似的方式运行。当你有一个服务器时,你不会简单地将运行业务所需的所有类型的信息存储在服务器中的一大堆里。相反,你要组织这些信息。SQL的初始组织机制是数据库。数据库允许你将一组信息保留在单独的存储区域中。此外,它允许你将安全性隔离到不同的信息集合中,以便你可以控制谁查看或修改该数据。
在数据库中有一些称为表的东西。表是定义关系存储的方式。你在给定数据库中存储的信息将添加到这些表中。你将能够通过这些表向数据库添加或移除数据。你还可以从这些表中检索数据库中的信息。
除了数据库中的表之外,还有许多不同的结构,它们将帮助你管理数据库中也存储在数据库中的信息。这些对象包括许多不同类型的对象,它们可以帮助你对数据进行一些操作,如视图、存储过程和函数。你还可以获得完整的安全对象集,如角色和用户。
数据库实际上是由存储在文件系统上的文件组成的。这些文件是专有的二进制格式,不能直接读取,除非通过SQL。将数据写入这些文件是在SQL server中最昂贵且耗时的操作之一(尽管在大多数情况下,所涉及的时间以微秒计)。由于这个原因,了解数据库是由文件定义的,数据存储在哪,作为你对数据库的部分理解是很重要的。
两种类型的文件
你可以简单地将数据存储在文本文件或电子表格中,而且很多人都会这样做。但是,当有多个人同时访问它,更新一些日期,删除、插入新的信息,所有的步骤同时进行,这些会让存储机制出现问题。这就是为什么你需要使用数据库。因为在存储数据时,它不得不做很多不同类型的工作,所以它提出了一些不同的机制来执行这些操作。数据库是围绕两种不同类型的文件进行数据的结构化,这些文件存储不同种类的信息。在这两种类型中,你可以参考这个数据。
注意:实际上还有几种其他文件类型可以添加到数据库中,但是我们在这里讨论基本情况,所以我们将保持它的直接和简单。
数据文件
定义数据库所需的第一种类型的文件是数据文件。该数据文件易于理解和解释。这种类型的文件是你写入数据库的信息将被存储的地方。任何给定的数据库都可以由多个数据文件组成。数据文件可以放置在一个以上的硬盘驱动器和你的系统。如果你有更先进的存储机制,例如存储区域网络(简称SAN),你可能会有除了服务器上简单硬盘驱动器的其他结构。但是,它们将被映射到windows操作系统,因为驱动器和SQL也可以使用这些存储数据文件。
日志文件
创建数据库所需的第二种类型的文件是日志文件。日志文件比数据文件要复杂得多。日志文件会记录数据库中发生的每一个事务。当数据在系统中以某种方式被操纵时发生事务。这些操作可以更新现有数据,将新数据插入表中,或从表中删除数据。所有这些操作的信息将会写入日志文件。还有一些其他函数也与日志文件相关联。这些文件通常比数据文件小得多,因为日志文件中的条目只需要保存,直到所有数据成功地写入数据文件。因为写入数据文件会受到不同类型的故障的影响,通过保存日志文件有助于处理这些故障。当信息被写入数据文件后,就可以删除日志条目。清理日志文件的过程将在另一篇文章中详细讨论。当你开始创建文件时,你可以调整它们的大小。在创建文件之后,你可以调整大小,向上和向下。每个文件也可以设置为自动增长,这是非常复杂的,值得花更多的时间来确切地了解它的含义。
自动增长设置
如果有很多数据库,管理数据库上的文件可能会有很多工作。你必须检查可用空间,然后在足够的时候为文件设置为更大的空间。解决所有这类问题的方法之一是在数据库的属性设置中手动修改。
注意:小心使用这个设置。您可以填写一个驱动器,并使您的服务器离线。将数据库设置为autogrow,意味着当数据库开始耗尽时,数据库将自动向上调整文件大小。许多人使用此设置,许多应用程序在安装时将其设置为on。为了避免这个问题,你应该给文件设置一个增长上限。你可以将文件设置为数据库的百分比或固定大小。对于较小的数据库,按百分比增长是有效的,但是随着数据库的扩展,按百分比增长的过程将变得越来越长。最好的做法是将增长设置为一个特定的值而不是百分比。在创建数据库时,有关如何设置所有这些的详细信息将会被覆盖。
你的文件存放在哪里?
安装SQL时,你可以选择数据库文件的放置位置。你也可以通过“服务器属性”窗口调整它。在创建数据库时,最好知道放置文件的位置,以确保在该驱动器上有足够的空间。要查看此位置,请按照数据库基本原理#2中的概述连接到您的服务器。一旦连接,在对象资源管理器窗口中,右键单击服务器名称本身。会弹出一个上下文菜单。选择该菜单底部的“属性”菜单选项。会打开“服务器属性”窗口,你会处于默认的“一般”选项卡中。选择“数据库设置”选项卡,您将看到与此非常类似的内容:
这里值得注意的有趣的地方是窗口底部的“数据库默认位置”一节。你将看到三个不同的目录,每个目录分别用于数据、日志和备份。通过单击条目右侧的省略号,你可以打开一个默认的文件浏览器窗口,以更改日志或数据文件的默认位置。你也可以通过直接输入文本框中的物理路径或使用通用命名规则(简称UNC)路径来修改它们。
放置文件的目标应该是尽可能地分离这些功能。如果你有此能力,最好将操作系统文件与数据和日志文件分离。这意味着如果可能的话,将数据和日志文件放在C:\驱动之外的其他东西上。此外,至少应该考虑将数据和日志文件存储在完全独立的驱动器上。这样就可以最大限度地向驱动器上的文件传输数据。
一旦你确定了存储位置是合适的,如果你已经做了更改,请单击“确定”按钮来保存这些更改。如果你没有做任何更改,或者你不想保存所做的更改,请单击“取消”按钮。单击这些中的任何一个都会关闭在窗口。
除了物理位置之外,这两个文件类型中的每一个都有几个属性,这些属性在创建数据库时很重要。部分物理位置是文件名和扩展名。这些可以是任何有效的windows操作系统名称和扩展。默认情况下,扩展通常是.mdf 为数据文件和 .ldf为日志文件。如果需要,你可以更改这些默认值,但这可能会导致混淆,因为大多数人使用默认值作为最佳实践。有一个逻辑文件名,允许你在数据库中引用该文件,而不必返回包括驱动器在内的完整文件位置。逻辑名称不一定与物理名称相匹配,但通常是这样的。
结论:
这篇介绍的是数据库文件存储的核心。下一篇文章我们将在服务器上创建一个数据库,比这篇文章感觉上要容易得多。