在过去的几十年中,数据库变得越来越复杂。关系数据库是最常见的。该技术允许根据用户或管理员的需要以动态方式查看数据。用于与数据库通信的最常用语言是结构化查询语言(SQL)。SQL允许用户将查询实时传递到数据库服务器。这种灵活性在未安全实施时会导致重大漏洞。不要将语言SQL与Microsoft的数据库产品SQL Server混淆,不过,与大多数数据库一样,SQL Server使用结构化查询语言。早期的数据库系统通过应用程序将最终用户直接连接到数据。在专用网络中,通常只需要物理安全来保护数据。现在,为了提高数据库的性能和安全性,公司选择了以下模型之一:
一层模型。在单层或单层模型中,数据库和应用程序存在于单个系统上。这在运行独立数据库的桌面系统上很常见。早期的Unix实现也以这种方式工作。每个用户都将登录终端并运行访问数据的专用应用程序。
两层模型。在两层模型中,客户端工作站或系统运行与运行在不同服务器上的数据库通信的应用程序。这是一个常见的实现,它适用于许多应用程序。
三层模型。三层模型通过引入中间层服务器有效地将最终用户与数据库隔离。该服务器接受来自客户端的请求,评估它们并将它们发送到数据库服务器进行处理。数据库服务器将数据发送回中间层服务器,然后中间层服务器将数据发送到客户端系统。这种方法在今天变得很普遍。中间服务器还可以控制对数据库的访问并提供额外的安全性。
NoSQL
NoSQL是一个相对较新的概念。如上所述,大多数商业关系数据库管理系统(Oracle、Microsoft SQL Server、MySQL、PostGres等)都使用SQL。NoSQL数据库不是关系数据库,也不使用SQL。这些数据库不像关系数据库那么常见,但通常在扩展很重要的地方使用。以下是一些主要区别:
特征 | NoSQL数据库 | SQL数据库 |
数据库类型 | 非关系/分布式 | 关系型 |
架构类型 | 动态的 | 预定义 |
数据存储 | 将所有内容存储在单个嵌套文档中,通常采用XML格式(基于文档) | 单个记录存储为表中的行(基于表) |
好处 | 可以处理大量结构化、半结构化和非结构化数据 | 广泛支持且易于配置结构化数据 |
典型的缩放模型 | 水平(添加更多服务器) | 垂直(升级服务器) |
流行的供应商/实施 | MongoDB、沙发数据库 | 甲骨文、微软、MySQL |
易受SQL注入攻击? | 否,但容易受到类似的注入型攻击 | 是的 |
大数据
一些组织存储大量数据,通常为数TB。这种“大数据”通常无法放在单个服务器上,因此它存储在存储区域网络(SAN)上。SAN是一个单独的网络,被设置为主要组织网络的服务器。例如,多个服务器和网络存储设备可能被配置为一个具有一个目的的小型网络:存储数TB的数据。它连接到主网络,因此用户可以访问SAN中的数据,而不必担心其中涉及的复杂性。SAN通常具有冗余服务器,它们通过高速光纤连接或在铜线上运行的iSCSI连接。大数据的问题之一是它可能达到难以搜索、存储、共享、备份和管理它的大小。
文件系统
文件系统是另一种存储非结构化数据并控制其检索方式的方式。如果没有文件系统,存储介质中的信息将是一大堆数据,无法分辨一条信息在哪里停止,下一条信息从哪里开始。将数据分成多个片段并为每个片段命名,可以轻松隔离和识别信息。文件系统可用于多种不同类型的介质,例如SSD、磁带和光盘。文件系统类型取决于所使用的操作系统;例如,Linux使用extfamily、xfs和jfs等文件系统;Windows操作系统使用fat、fat32和ntfs;Mac OS使用apfs和hfs+。