数据库检查点

简介

此检查点旨在帮助您评估您从我们的Databases,介绍性文章》中学到了什么,在这些文章中,我们定义了数据库并介绍了常见的数据库管理系统。您可以使用此检查点测试您对这些主题的知识,复习关键术语和命令,并查找可供继续学习的资源。

数据库是对信息或数据进行逻辑建模的任何集合。当人们在网站、应用程序和云的上下文中提到),它们可以与其他程序(如Web服务器和前端框架)相结合,形成可投入生产的应用程序。

在这个检查点中,你会发现两个部分综合了介绍性文章的中心思想:简要解释什么是数据库(包括关系和非关系数据库的小节),以及如何通过命令行或图形用户界面与DBMS交互的部分。在每个部分中,都有互动组件来帮助您测试您的知识。在这个检查点结束时,您将找到继续学习数据库管理系统,完全托管数据库以及使用后端数据库构建应用程序的机会。

资源

什么是数据库?

数据库是任何经过逻辑建模的信息集合,而数据库管理系统是大多数人在想)来访问和操作存储在数据库中的信息,数据库管理系统是一个旨在与信息交互的计算机程序。

<$>[信息] [标签要了解的术语 ] 定义以下术语,然后使用下拉功能检查您的工作。

[详细信息复制 复制是指跨多个单独的数据库同步数据的做法。这种做法提供了冗余,提高了可伸缩性,并减少了读取延迟。 ]

[详情切分 数据库分片是一种将数据分成称为逻辑碎片的块的架构实践,这些块分布在称为物理碎片的单独节点上。有关此实践的更多信息,您可以查看我们的文章了解数据库Sharding. ] <$>

数据库系统有三种常见的关系模型: 关系模型|关系 -| |一对一 |在一对一的关系中,一个表(有时称为父表)中的行与另一个表(有时称为子表)中的一行关联。| |一对多 |在一对多关系中,初始表(有时称为父表)中的一行可以关联另一个表(有时称为子表)中的多行。| |多对多 |在多对多关系中,一个表中的行可以关联另一个表中的多行,反之亦然。虽然这些表也可以称为父表和子表,但多向关系不一定需要分层关系。|

这些关系模型构建了数据库如何相互关联的结构。

数据库管理分为两类:关系数据库和非关系数据库。在下面的小节中,您将了解每种类型以及这些类型的常用DBMS。

关系型数据库

relational database通过_relations_组织信息,您可能会将其识别为_table_。

<$>[信息] [标签检查自己 ] [详细说明构成关系的元素是什么?

关系是表中的一组_tuples_或行,每个元组共享一组_Attributes_或列。元组是表保存的数据类型的唯一实例,而属性指定列中允许的数据类型。

显示y轴上的元组和x-axis上的属性的关系表 ]

[详细说明_PRIMARY KEY_和_FOREIGN KEY_之间的区别? A_PRIMARY KEY_是指将唯一标识关系表中每一行的列,而_FOREIGN KEY_是插入到第二个关系中以便在两个表之间创建关系的主键的副本。 ] <$>

当信息存储在数据库中并以关系组织时,可以通过_queries_访问它,该查询对信息进行结构化请求。许多关系数据库使用_结构化查询语言_(通常称为_SQL_)来管理对数据库的查询。

您可以在设计数据库时使用Sql_constraints_。这些约束对可以对表中的数据进行哪些更改施加了限制。

<$>[信息] [标签检查自己 ] [详细信息:为什么要对数据库施加限制?

  • 业务规则: 约束使数据库管理员能够确保数据库与定义的满足业务需求和预期的策略和程序保持一致。
  • 数据完整性: 数据录入容易出错,因此约束提供了额外的参数来确保数据正确。

`

[详细说明SQL标准正式定义的五个约束是什么?

  • 主键要求给定列中的每一项都是唯一的,而不是NULL,并允许您使用该列来标识表中的每一行。
  • 外来关键字要求给定列中的每一项必须已经存在于另一个表的特定列中。
  • UNIQUE禁止在给定列中添加任何重复的值。
  • CHECK定义了对列(称为谓词)的要求,该列中输入的每个值都必须满足。
  • NOT NULL禁止将任何NULL值添加到给定列。

] <$>

一些使用SQL语言构建的开源关系数据库管理系统包括MySQLMariaDBPostgreSQL,和SQLite.使用了解关系型Databases并使用SQLite VS MySQL VS PostgreSQL:关系数据库管理Systems.的比较》继续学习关系数据库

<$>[信息] [Label要了解的关系数据库术语 ] 在每一篇文章中,您都掌握了有关关系数据库的词汇表。定义以下每个术语,然后使用下拉功能检查您的工作。

[详细信息约束 约束是应用于列或表的任何规则,用于限制可以向其中输入的数据。 ]

[详细数据类型 A_DATA TYPE_指定列中允许的条目类型。 ]

[详细信息对象数据库 Object database使用面向对象的信息结构。PostgreSQL是一个关系数据库,它结合了对象数据库的一些功能。 ]

[详细信息无服务器 与SQLite一样,A_SERVERless_DATABASE允许任何访问数据库的进程直接写入和写入数据库磁盘文件。此行为与由其他关系数据库引擎实现的进程间通信形成对比。

您可以编写无服务器函数来练习运行无服务器应用程序。 ]

[详细信息有符号和无符号的整数 一些数字数据类型是_SIGNED_,这意味着它们可以表示正数和负数,而另一些类型是_UNSIGNED_,只能表示正数。 ] <$>

现在您已经了解了关系数据库,您可以理解它们的对应对象:非关系数据库。

非关系型数据库和NoSQL数据库

如果您需要以非结构化的方式存储数据,non-relational database提供了一种替代模型。由于非关系型数据库不使用SQL,因此有时也称为NoSQL数据库

非关系数据库有多种可用选项,例如_键-值存储_、列数据库文档存储_和_图形数据库。这些模型中的每一个都关注使用关系数据库时可能出现的问题,包括水平伸缩、跨节点的最终一致性和非结构化数据管理。

<$>[信息] [标签要了解的非关系数据库术语 ] 每个非关系数据库模型都具有使其独一无二的特定功能。定义模型的类型,然后使用下拉功能检查您的工作。

[详细信息键-值数据库 键值数据库存储包含键-值对的Manage_Associate数组,其中键是检索其关联值的唯一标识符。 ]

[详细信息分栏式数据库 列式数据库是面向列的,这意味着它们将数据存储在列中。数据以_记录顺序显示,其中一列中的第一个条目与其他列中的第一个条目相关。 ]

[详细信息面向文档的数据库 也称为_document store_,这些是以文档形式存储数据的NoSQL数据库。每个文档都包含元数据来构造数据,并且可以使用API或查询语言来检索文档。 ]

[详细信息图表数据库 图形数据库是文档存储子类别,这种类型的数据库突出了文档之间的关系。 ] <$>

您可以使用以下交互式下拉功能检查您对哪些流行的非关系数据库管理系统与数据库模型的类型相一致的知识。

<$>[信息] [标签检查自己 ] 将以下数据库管理系统与其操作数据库模型相匹配。

[专栏]

  • 雷迪斯
  • Couchbase
  • 卡桑德拉
  • OrientDB

`

[专栏]

  • MongoDB
  • Neo4j
  • MemcacheDB
  • Apache HBase

`

[详细信息使用下拉菜单功能比较您的答案。

操作数据库模型|DBMS示例 -| 键值存储|Redis,MemcacheDB 柱状数据库|Cassandra、ApacheHBase 文档存储|MongoDB、Couchbase 图形数据库|OrientDB,Neo4j

` <$>

无论您使用的是关系型数据库还是非关系型数据库,您构建的应用程序都可能将数据库管理系统作为其堆栈的一部分。

搭建应用堆栈

数据库管理系统通常被部署为较大应用程序的一个基本方面。这些应用程序有时称为堆栈,例如LAMP stack弹性stack.

<$>[信息] [标签检查自己 ] 使用下拉菜单功能获取答案。

[详细说明灯堆由什么组成? LAMP是组成这一堆栈的技术的首字母缩写:

  • L inux操作系统
  • A PACHE Web服务器
  • M ySQL数据库
  • P HP用于动态内容处理

还有其他的L_MP选项,例如LEMP stack,其中__E_* 代表NGINX或LOMP stack,其中 O** 代表OpenLiteSpeed. ]

[详细说明弹性堆栈的组成要素? 弹性堆栈是围绕Elasticsearch,构建的,它既是一个搜索引擎,也是一个面向文档的数据库。 ] <$>

如果您使用应用程序堆栈设置远程服务器,则建议您加密数据以保护系统免受恶意干扰。您可以使用_Transport Layer SECURITY_(TLS)来加密通信,它会将运动中的数据转换为只能用正确的密码解密的密文。存储在数据库中的静态数据将保持未加密状态,除非使用提供静态数据加密的DBMS。

要管理数据库,您可以选择直接从命令行界面或通过图形用户界面进行管理。

在DBMS中使用命令行

您开始在我们的云line介绍性文章》中使用linux命令servers,并使用[Web服务器solutions](https://www.digitalocean.com/community/tutorial_series/getting-started-with-cloud-computing Web-Servers).介绍性文章]配置了Web服务器通过有关databases,的文章,您已经继续熟悉了使用以下命令的命令行:

  • grep在纯文本数据中搜索特定的文本或字符串。
  • netstat使用-lnp标志检查网络配置,显示监听套接字(-l)、数字地址(-n)以及每个套接字的程序ID和名称(-p)。
  • systemctl控制systemd服务。

您还试验了不同数据库管理系统附带的命令行工具,以便与数据库安装进行交互。CLI工具使您能够在数据库服务器上执行命令,并从您的终端窗口交互工作。下表列出了常见的DBMS及其关联的CLI工具:

DBMS|CLI工具 -| Mongodb|mongob shell MySQL|mysql PostgreSQL|psql Redis|redis-cli

还有一些数据库管理系统的第三方命令行客户端,例如用于Redis的Redli

使用命令行处理数据库系统时,会打开一个特定于数据库的服务器提示符,该提示符通常与该数据库管理系统的用户帐户关联。例如,如果你要打开一个MySQL服务器提示符,并使用MySQL用户登录,你会看到一个数据库提示符,如下所示:

每个DBMS命令行客户端都有自己的命令语法。

在了解了SQL constraints,]之后,您可以通过运行以下命令来将那些constraints与MySQL数据库一起使用:

  • 创建DATABASE创建数据库。
  • USE选择数据库。
  • 创建表用于创建一个表,其中包含列的规格和对这些列的约束。
  • ALTER TABLEADD用于向已有表添加约束,Drop CONSTRAINT用于从已有表中删除约束。

您可以继续使用如何使用SQL]系列来发展您的MySQL数据库技能。

在Redis中,您使用以下命令安装并保护Redis,并尝试重命名命令:

  • auth对访问数据库的客户端进行身份验证。
  • exitqui退出Redis-CLI提示符。
  • get取回密钥值。
  • ping测试连通性。
  • set设置密钥。

并且,在MongoDB外壳中,您使用了二进制JSON(称为BSON)来使用以下查询过滤方法运行CRUD operations

  • Count方法,用于检查指定集合中的对象计数。
  • deleteOne删除第一个符合规格的文档。
  • deleteMany一次移除多个对象。
  • find在您的MongoDB数据库中检索文档,并带有漂亮打印功能,使行更具可读性。
  • intertOne方法,用于创建单个文档。
  • INSERTMany方法可在单个操作或集合中插入多个文档。
  • ObjectId对象数据类型,用于存储对象标识。
  • updateOne使用指定的密钥更新单个文档。
  • updateMany更新集合中与指定过滤器匹配的每个文档。

您可能会使用CRUD操作跨许多数据库管理系统与您的数据交互。

<$>[信息] [标签检查自己 ] [详细说明CRUD 代表什么? CRUD是一个缩写,用于描述以下四种基本数据操作:

  • C Reate
  • R Ead
  • U pdate
  • D Elete

` <$>

虽然您可以选择直接从命令行管理数据库,但您也可以为许多常见的数据库管理系统使用图形用户界面(GUI)。

使用图形用户界面

如果您决定不使用设计的CLI工具,有许多不同的GUI工具可用于处理数据库。

要通过Web处理MySQL管理,您可以通过在许多不同的操作系统上安装和保护phpMyAdmin远程连接到MySQL托管数据库来使用phpMyAdmin。您也可以使用MySQL服务器远程连接MySQL服务器

与phpMyAdmin类似,pgAdmin是用于管理PostgreSQL的Web界面。您可以在服务器mode中安装和配置pgAdmin,或使用它来使用pgAgent.安排自动备份

对于MongoDB,您可以考虑使用MongoDB Compass作为访问数据库的图形界面。

无论您选择使用命令行还是图形界面来管理数据库,现在您都拥有了管理数据库系统所需的工具。

下一步怎么办?

通过更深入地了解数据库和流行的数据库管理系统,您可以存储和管理数据或构建使用数据库系统的应用程序。

有关使用特定数据库管理系统的更多信息,请参阅我们的如何使用SQL如何使用MongoDB管理数据]系列。如果您遇到MySQL的问题,可以使用How to Troublot Problem in MySQL.]进行调试对于MongoDB问题,评估您的问题与如何在MongoDB.中执行CRUD操作

当您准备好使用数据库构建您的应用程序时,请尝试遵循以下常见应用程序堆栈设置的教程:

如果您更喜欢使用完全托管的数据库构建您的应用程序,请查看针对托管MongoDB clustersMySQLPostgreSQL托管,以及托管Redis.]的DigitalOcean产品您也可以在DigitalOcean Marketplace.]中选择一键安装的常用数据库选项

凭借新掌握的数据库知识,您还可以使用containers和[security](https://www.digitalocean.com/community/tutorial_series/getting-started-with-cloud-computing Security).继续您的云之旅如果您还没有,请查看我们在Cloud servers和[Web servers](https://andsky.com/tech/tutorials/web-servers-checkpoint what-s-next).]上的介绍性文章

Published At
Categories with 技术
comments powered by Disqus