介绍
此检查点旨在帮助您评估您从我们的数据库入门文章中学到的内容,其中我们定义了数据库并介绍了常见的数据库管理系统。您可以使用此检查点测试您在这些主题上的知识,复习关键术语和命令,并查找继续学习的资源。
A database is any logically modeled collection of information or data. When people refer to a “database” in the context of websites, applications, and the cloud, they often mean a computer program that manages data stored on a computer. These programs, known formally as database management systems (DBMS), can be combined with other programs (like a web server and a front-end framework) to form production-ready applications.
在此检查点中,您将找到两个部分,总结了入门文章中的主要观点:关于数据库是什么的简要解释(包括关系数据库和非关系数据库的子部分),以及如何通过命令行或图形用户界面与您的数据库管理系统进行交互的部分。在这两个部分中,都有互动组件,帮助您测试自己的知识。在此检查点的结尾,您将找到有关继续学习数据库管理系统、完全托管的数据库以及使用后端数据库构建应用程序的机会。
资源
- 数据库简介
- 理解SQL约束
- SQLite vs MySQL vs PostgreSQL:关系型数据库管理系统的比较
- A Comparison of NoSQL Database Management Systems and Models
- 在Ubuntu 22.04上安装和保护Redis
- 如何在MongoDB中执行CRUD操作
什么是数据库?
A database is any logically modeled collection of information, and a database management system is what most people think of when they think “I know what a database is!” You use a database management system (DBMS), which is a computer program designed to interact with the information, to access and manipulate the information stored in your database.
需要了解的术语
定义以下术语,然后使用下拉功能检查您的工作。
Replication
复制是指在多个独立数据库之间同步数据的实践。这种做法提供了冗余性,提高了可伸缩性,并减少了读取延迟。
Sharding
数据库分片是一种将数据分割成称为逻辑分片的块的架构实践,这些块分布在称为物理分片的单独节点上。有关这种实践的更多信息,您可以查阅我们关于理解数据库分片的文章。
有三种常见的关系模型用于数据库系统:
Relational Model | Relationship |
---|---|
One-to-one | In a one-to-one relationship, rows in one table (sometimes called the parent table) are related to one and only one row in another table (sometimes called the child table). |
One-to-many | In a one-to-many relationship, a row in the initial table (sometimes called the parent table) can relate to multiple rows in another table (sometimes called the child table). |
Many-to-many | In a many-to-many relationship, rows in one table can related to multiple rows in the other table, and vice versa. While these tables may also be referred to as parent and child tables, the multidirectional relationship does not necessitate a hierarchical relationship. |
这些关系模型规定了数据库之间的关系。
数据库管理分为两类:关系型和非关系型数据库。在以下子节中,您将了解每种类型以及这些类型的常见数据库管理系统。
关系型数据库
A relational database organizes information through relations, which you might recognize as a table.
自测
What are the elements that make up a relation?
A relation is a set of tuples, or rows in a table, with each tuple sharing a set of attributes, or columns. A tuple is a unique instance of what type of data the table holds, whereas an attribute specifies the data type for what is allowed in the column.
What is the difference between a primary key and a foreign key?
A primary key refers to the column that will uniquely identify each row in a relational table, whereas a foreign key is a copy of the primary key inserted into a second relation in order to create a relationship between two tables.
当信息存储在数据库中并以关系方式组织时,可以通过查询来访问信息,这些查询提出对信息的结构化请求。许多关系型数据库使用通常称为SQL的结构化查询语言来管理对数据库的查询。
在设计数据库时,您可以使用SQL 约束。这些约束对表中的数据可以进行哪些更改施加了限制。
自测
Why might you impose constraints on your database?
- 业务规则:约束使数据库管理员能够确保数据库符合定义的符合业务需求和期望的政策和程序。
- 数据完整性:数据输入容易出现错误,因此约束提供了额外的参数来确保正确的数据。
What are the five constraints that are formally defined by the SQL standard?
主键
要求给定列中的每个条目都是唯一的且不为NULL
,并允许您使用该列来标识表中的每个单独行。外键
要求给定列中的每个条目必须已经存在于另一个表的特定列中。唯一
禁止将任何重复值添加到给定列中。检查
定义了对列的要求,称为谓词,要求输入到其中的每个值都必须满足。非空
禁止将任何NULL
值添加到给定列中。
一些使用SQL构建的开源关系数据库管理系统包括MySQL、MariaDB、PostgreSQL和SQLite。继续学习关系数据库,请阅读理解关系数据库,并使用SQLite vs MySQL vs PostgreSQL: 关系数据库管理系统比较来了解常见的关系DBMS。
了解的关系数据库术语
通过每篇文章,您已经掌握了关于关系数据库的词汇。请定义以下每个术语,然后使用下拉功能来检查您的答案。
Constraint
A constraint is any rule applied to a column or table that limits what data can be entered into it.
Data Types
A data type dictates what kind of entries are allowed in a column.
Object Database
一个对象数据库使用面向对象的结构存储信息。PostgreSQL是一个关系型数据库,融合了一些来自对象数据库的特性。
Serverless
A serverless database, like SQLite, allows any process that accesses the database to write and write to the database disk file directly. This behavior is in contrast to the interprocess communication that is implemented by other relational database engines.
您可以编写一个无服务器函数来实践运行无服务器应用程序。
Signed and Unsigned Integers
一些数值数据类型是有符号的,这意味着它们可以表示正数和负数,而其他一些是无符号的,只能表示正数。
现在您已经了解了关系型数据库,您可以理解它们的对应物:非关系型数据库。
非关系型和NoSQL数据库
如果您需要以非结构化的方式存储数据,非关系型数据库提供了一种替代模型。因为非关系型数据库不使用SQL,有时被称为NoSQL数据库。
有各种可用的非关系型数据库选项,例如键值存储,列式数据库,文档存储和图数据库。这些模型各自解决了使用关系型数据库可能遇到的问题,包括水平扩展、节点间最终一致性以及非结构化数据管理。
了解的非关系型数据库术语
每种非关系型数据库模型都具有使其独特的特定特征。定义模型类型,然后使用下拉功能检查您的工作。
Key-value databases
键值数据库存储和管理关联数组,其中包含键值对,其中键是检索其关联值的唯一标识符。
Columnar databases
列式数据库是面向列的,这意味着它们将数据存储在列中。数据按照记录顺序显示,其中一列中的第一个条目与其他列中的第一个条目相关联。
Document-oriented databases
也被称为文档存储,这些是以文档形式存储数据的NoSQL数据库。每个文档包含用于结构化数据的元数据,并且可以使用API或查询语言检索文档。
Graph databases
图数据库是文档存储的一个子类,这种类型的数据库突出显示文档之间的关系。
您可以使用以下交互式下拉功能检查哪些流行的非关系型数据库管理系统与数据库模型类型相匹配。
检查自己
匹配以下数据库管理系统与其操作数据库模型。
- Redis
- Couchbase
- Cassandra
- OrientDB
- MongoDB
- Neo4j
- MemcacheDB
- Apache HBase
Compare your answers using the dropdown feature.
Operational Database Model | Example DBMSs |
---|---|
Key-value store | Redis, MemcacheDB |
Columnar database | Cassandra, Apache HBase |
Document store | MongoDB, Couchbase |
Graph database | OrientDB, Neo4j |
无论您使用关系型数据库还是非关系型数据库,您可能正在构建一个包含数据库管理系统的应用程序堆栈的应用程序。
构建应用程序堆栈
数据库管理系统通常部署为更大应用程序的重要组成部分。这些应用有时被称为堆栈,如LAMP堆栈或Elastic堆栈。
自查
使用下拉功能获取答案。
What makes up a LAMP stack?
LAMP是构成此堆栈的技术的首字母缩写:
- Linux操作系统
- Apache Web服务器
- MySQL数据库
- PHP用于动态内容处理
还有其他的L*MP选项,比如LEMP堆栈,其中E代表Nginx,或者LOMP堆栈,其中O代表OpenLiteSpeed。
What makes up Elastic stack?
弹性堆栈是围绕Elasticsearch构建的,它既是搜索引擎又是面向文档的数据库。
如果您使用应用程序堆栈设置远程服务器,则建议加密数据以保护系统免受恶意干扰。您可以使用传输层安全(TLS)加密通信,这将将数据转换为只能由正确密码解密的密文。存储在数据库中的静态数据将保持未加密,除非使用提供静态数据加密的数据库管理系统。
要管理您的数据库,您可以选择直接从命令行界面或通过图形用户界面进行。
使用命令行与您的数据库管理系统
你开始使用我们的云服务器入门文章使用Linux命令行,并使用Web服务器解决方案入门文章配置了Web服务器。通过数据库文章,你继续使用命令行来开发熟悉度,使用命令如下:
grep
用于在纯文本数据中搜索特定文本或字符串。netstat
用于使用标志-lnp
检查网络配置,以显示监听套接字(-l
)、数值地址(-n
)以及每个套接字的PID和程序名称(-p
)。systemctl
用于控制systemd
服务。
你还尝试了不同数据库管理系统附带的命令行工具,以便与数据库安装进行交互。CLI工具使你能够在数据库服务器上执行命令,并从终端窗口进行交互。以下表格列出了常见的DBMS及其关联的CLI工具:
DBMS | CLI tool |
---|---|
MongoDB | MongoDB shell |
MySQL | mysql |
PostgreSQL | psql |
Redis | redis-cli |
有些数据库管理系统还有第三方命令行客户端,比如用于Redis的Redli。
当您使用命令行与数据库系统交互时,会打开一个特定于数据库的服务器提示符,通常与您在该数据库管理系统的用户账户关联。例如,如果您打开了一个MySQL服务器提示符并使用MySQL用户登录,您会看到如下的数据库提示:
-
每个数据库管理系统的命令行客户端都有其自己的命令语法。
学习了SQL约束之后,您可以通过运行以下命令在MySQL数据库中使用这些约束:
CREATE DATABASE
创建数据库。USE
选择数据库。CREATE TABLE
创建具有列规格和应用于这些列的约束的表。ALTER TABLE
使用ADD
向现有表添加约束,使用DROP CONSTRAINT
从现有表中删除约束。
您可以继续发展您的MySQL数据库技能,参考如何使用SQL系列。
使用Redis,您可以使用以下命令安装和保护Redis,并尝试重命名命令:
auth
用于验证客户端以访问数据库。exit
和quit
用于退出Redis-CLI提示符。get
用于检索键值。ping
用于测试连接性。set
用于设置键。
而在MongoDB shell中,您使用了二进制JSON(称为BSON)来运行CRUD操作,使用以下查询过滤方法:
count
方法来检查指定集合中的对象数量。deleteOne
用于删除符合规格的第一个文档。deleteMany
用于一次删除多个对象。find
用于检索MongoDB数据库中的文档,使用pretty
打印功能使行更易读。insertOne
方法用于创建单个文档。insertMany
方法用于一次操作或集合中插入多个文档。ObjectId
对象数据类型用于存储对象标识符。updateOne
用于更新具有指定键的单个文档。updateMany
用于更新与指定过滤器匹配的集合中的每个文档。
您可能会使用CRUD操作与许多数据库管理系统交互。
检查自己
What does CRUD stand for?
CRUD是用于描述以下四个基本数据操作的首字母缩写:
- 创建
- 读取
- 更新
- 删除
虽然您可以选择直接从命令行管理数据库,但您也可以使用图形用户界面(GUI)来管理许多常见的数据库管理系统。
使用图形用户界面
如果您决定不使用设计的CLI工具,有许多不同的GUI工具可用于处理您的数据库。
要在网络上处理MySQL管理,您可以使用phpMyAdmin通过在许多不同的操作系统上安装和保护phpMyAdmin或远程连接到MySQL托管数据库。 您也可以使用MySQL Workbench来远程连接到MySQL服务器。
类似于phpMyAdmin,pgAdmin是用于管理PostgreSQL的Web界面。 您可以在服务器模式下安装和配置pgAdmin,或者使用它使用pgAgent安排自动备份。
对于MongoDB,您可以考虑使用MongoDB Compass作为访问数据库的图形界面。
无论您选择使用命令行还是图形界面来管理数据库,您现在都具备了管理数据库系统所需的工具。
接下来呢?
通过更深入地了解数据库和流行的数据库管理系统,您可以存储和管理数据,或构建使用数据库系统的应用程序。
有关使用特定数据库管理系统的更多信息,请查看我们的如何使用SQL和如何使用MongoDB管理数据系列。如果在使用MySQL时遇到问题,可以使用如何排除MySQL问题进行调试。对于MongoDB的问题,请评估您的问题与如何在MongoDB中执行CRUD操作相关联。
当您准备使用数据库构建应用程序时,请尝试按照以下教程进行常见应用程序堆栈设置:
- 如何在Ubuntu 22.04上安装Linux、Apache、MySQL、PHP(LAMP)堆栈
- 如何在Ubuntu 22.04上安装Linux、Nginx、MySQL、PHP(LEMP堆栈)。
- 如何在Ubuntu 22.04上安装Linux、OpenLiteSpeed、MariaDB、PHP(LOMP堆栈)
如果您喜欢使用完全托管的数据库构建应用程序,请查看DigitalOcean提供的托管MongoDB集群、MySQL或PostgreSQL托管以及托管Redis。您还可以选择DigitalOcean Marketplace中的热门数据库选项进行一键安装。
有了您对数据库的新知识,您还可以继续您的云之旅,了解容器和安全性。如果您还没有,请查看我们关于云服务器和Web服务器的入门文章。云服务器和web服务器。
Source:
https://www.digitalocean.com/community/tutorials/databases-checkpoint