數據庫檢查點

介紹

這個檢查點旨在幫助您評估從我們對數據庫的入門文章中學到的知識,其中我們定義了數據庫並介紹了常見的數據庫管理系統。您可以使用此檢查點來測試有關這些主題的知識,查閱關鍵術語和命令,並找到持續學習的資源。

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.

在這個檢查點中,您將找到兩個部分,總結了入門文章中的中心思想:對數據庫是什麼的簡要解釋(包括關於關聯和非關聯數據庫的子部分)和如何通過命令行或圖形用戶界面與您的數據庫管理系統進行交互的部分。在這些部分中,有互動元素可幫助您測試知識。在這個檢查點的最後,您將找到有關數據庫管理系統、完全管理的數據庫以及使用後端數據庫構建應用程序的持續學習機會。

資源

什麼是資料庫?

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,並允許您使用該列來識別表中的每個個別行。
  • 外鍵要求給定列中的每個條目必須已經存在於另一個表中的特定列中。
  • 唯一禁止將任何重複值添加到給定列中。
  • 檢查定義了對列的要求,稱為謂詞,該要求要求將輸入到其中的每個值都要滿足。
  • NOT NULL禁止將任何NULL值添加到給定列中。

一些使用SQL構建的開源關聯數據庫管理系統包括MySQLMariaDBPostgreSQLSQLite。通過理解關聯數據庫繼續學習關於關聯數據庫的知識,並使用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?

Elastic堆疊建立在Elasticsearch周圍,它既是搜索引擎又是文檔導向的數據庫。

如果您使用應用程序堆疊設置遠程服務器,建議加密數據以保護系統免受惡意干擾。您可以使用傳輸層安全性(TLS)加密通信,這將將運動中的數據轉換為只能由正確密鑰解密的密文。除非使用提供靜態數據在靜止時加密的DBMS,否則存儲在數據庫中的靜態數據將保持未加密。

要管理數據庫,您可以選擇直接從命令行界面或通過圖形用戶界面進行。

使用DBMS的命令行

您開始使用我們的 Linux 命令行,並通過我們的 雲服務入門文章配置了一個網絡服務器,同時使用了我們的 網絡服務器解決方案入門文章。通過 數據庫文章,您可以繼續熟悉命令行,使用命令如下:

  • grep 用於在純文本數據中搜索特定的文本或字符串。
  • netstat 用於檢查網絡配置,使用標誌 -lnp 顯示正在監聽的套接字 (-l),數字地址 (-n),以及每個套接字的進程ID和名稱 (-p)。
  • systemctl 用於控制 systemd 服務。

您還嘗試了不同的數據庫管理系統的命令行工具,以便與數據庫安裝進行交互。命令行工具使您可以在數據庫服務器上執行命令,並從終端窗口進行交互操作。以下表格列出了常見的數據庫管理系統及其相應的命令行工具:

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 从现有表中删除约束。

你可以继续使用 如何使用 SQL 系列来提升你的 MySQL 数据库技能。

使用Redis,您使用以下命令安裝並保護了Redis,並且嘗試重新命名命令:

  • auth用於驗證客戶端以訪問數據庫。
  • exitquit用於退出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 是用來描述以下四個基本數據操作的首字母縮寫:

  • C建立
  • R讀取
  • U更新
  • D刪除

雖然您可以選擇直接從命令列管理您的資料庫,但您也可以對許多常見的資料庫管理系統使用圖形用戶介面 (GUI)。

使用圖形用戶介面

如果您決定不使用設計的 CLI 工具,有許多不同的 GUI 工具可用於操作您的資料庫。

要在網頁上管理 MySQL,您可以使用 phpMyAdmin,透過在許多不同的作業系統上 安裝和保護 phpMyAdmin,或是 遠端連接到 MySQL 管理的資料庫。您也可以使用 MySQL Workbench遠端連接到 MySQL 伺服器

與 phpMyAdmin 類似,pgAdmin 是用於管理 PostgreSQL 的網頁界面。您可以 安裝並配置 pgAdmin 以服務器模式運行,或使用它來 使用 pgAgent 定期備份

對於 MongoDB,您可能考慮使用 MongoDB Compass 作為訪問您的資料庫的圖形界面。

無論您選擇使用命令行還是圖形界面來管理您的資料庫,您現在都有必要的工具來管理您的資料庫系統。

接下來呢?

擁有更深入的數據庫和流行的數據庫管理系統的了解,您可以存儲和管理數據,或者構建使用數據庫系統的應用程序。

有關使用特定數據庫管理系統的更多信息,您可以關注我們的如何使用SQL如何使用MongoDB管理數據系列。如果您在使用MySQL時遇到問題,可以使用如何排除MySQL中的問題進行調試。對於MongoDB問題,請評估您的問題與如何在MongoDB中執行CRUD操作有關。

當您準備好使用數據庫構建應用程序時,請嘗試按照以下常見應用程序堆棧設置的教程進行操作:

如果您更喜歡使用完全管理的數據庫來構建應用程序,請查看DigitalOcean提供的托管MongoDB集群、MySQL或PostgreSQL托管以及托管Redis的選項。您還可以在DigitalOcean Marketplace中選擇一個流行的數據庫選項,以便一鍵安裝。

有了您對數據庫的新知識,您還可以通過容器和安全性繼續您的雲之旅。如果您還沒有,請查看我們關於雲服務器和Web服務器的入門文章。

Source:
https://www.digitalocean.com/community/tutorials/databases-checkpoint