紹介
このチェックポイントは、データベースの導入記事で学んだ内容を評価するためのものです。データベースの定義や一般的なデータベース管理システムの紹介が含まれていたデータベースの基本的な記事から学んだことを確認するために、このチェックポイントを使用できます。このチェックポイントを使用して、これらのトピックに関する知識をテストし、主要な用語やコマンドを復習し、引き続き学習するためのリソースを見つけることができます。
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.
このチェックポイントには、導入記事からの中心的なアイデアをまとめた2つのセクションがあります。データベースの概要についての簡単な説明(関連するリレーショナルおよび非リレーショナルデータベースのサブセクションを含む)と、コマンドラインまたはグラフィカルユーザーインターフェースを介してDBMSと対話する方法に関するセクションがあります。これらのセクションには、知識をテストするのに役立つ対話型のコンポーネントが含まれています。このチェックポイントの最後には、データベース管理システム、フルマネージドデータベース、およびバックエンドデータベースを使用したアプリの構築に関する継続的な学習の機会があります。
リソース
- データベースへの紹介
- 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
データベースシャーディングは、データを論理シャードと呼ばれるチャンクに分割し、物理シャードと呼ばれる別々のノードに分散するアーキテクチャの実践です。この実践について詳しくは、データベースシャーディングの理解をご覧ください。
データベースシステムには3つの一般的な関連モデルがあります:
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. |
これらの関連モデルは、データベース同士の関係を構造化します。
データベース管理には、リレーショナルと非リレーショナルの2つのカテゴリがあります。次のサブセクションでは、それぞれのタイプとそのタイプの一般的なDBMSについて学びます。
リレーショナルデータベース
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.
情報がデータベースに保存され、関係に整理されると、情報の構造化された要求を行うクエリを介してアクセスできます。多くのリレーショナルデータベースは、データベースへのクエリを管理するためにStructured Query Language、一般的にはSQLとして言及されるものを使用しています。
データベースを設計する際には、SQL 制約を使用できます。これらの制約は、テーブル内のデータに加える変更に制限を加えます。
自己チェック
Why might you impose constraints on your database?
- ビジネスルール:制約により、データベース管理者はビジネスのニーズと期待に沿ったポリシーと手順を定義し、データベースがそれに一致することを確認できます。
- データの整合性:データ入力には入力エラーが発生しやすいため、制約は正しいデータを確保するための追加のパラメータを提供します。
What are the five constraints that are formally defined by the SQL standard?
PRIMARY KEY
は指定された列のすべてのエントリが一意であり、かつNULL
ではないことを要求し、その列を使用してテーブル内の各行を識別できるようにします。FOREIGN KEY
は、指定された列のすべてのエントリが他のテーブルの特定の列に既に存在することを要求します。UNIQUE
は指定された列に重複する値を追加することを禁止します。CHECK
は、列に対する述語として知られる条件を定義し、それに準拠する必要があるすべての値を入力します。NOT NULL
は、指定された列にNULL
値を追加することを禁止します。
一部のオープンソースのSQLを使用したリレーショナルデータベース管理システムには、MySQL、MariaDB、PostgreSQL、およびSQLiteが含まれています。リレーショナルデータベースについての学習を続け、Understanding Relational Databasesで学習を深め、SQLite vs MySQL vs PostgreSQL: A Comparison Of Relational Database Management Systemsで一般的なリレーショナルDBMSを確認します。
Relational Database Terms To Know
これらの記事を通じて、リレーショナルデータベースに関する語彙を開発しました。次に、次の用語を定義し、ドロップダウン機能を使用して確認します。
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
カラム指向データベースは、データを列単位で保存します。データはレコード順で表示され、1つの列の最初のエントリは他の列の最初のエントリに関連付けられます。
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ウェブサーバ
- MySQLデータベース
- PHPによる動的コンテンツ処理
別のL*MPオプションもあります。たとえば、LEMPスタックでは、EはNginxを表します。また、LOMPスタックでは、OはOpenLiteSpeedを表します。
What makes up Elastic stack?
Elasticsearchを中心に構築されたElasticスタックは、検索エンジンと文書指向型データベースの両方です。
アプリケーションスタックをリモートサーバーに設定する場合、データを暗号化してシステムを悪意のある干渉から保護することが推奨されます。データの通信を暗号化するには、トランスポート層セキュリティ(TLS)を使用します。これにより、データが移動中に暗号文に変換され、正しい暗号でのみ復号化できるようになります。データベースに格納されている静的データは、データ静止状態暗号化を提供するDBMSを使用しない限り、暗号化されません。
データベースを管理するには、コマンドラインインターフェースまたはグラフィカルユーザインターフェースから直接行うことができます。
DBMSを使用したコマンドライン
あなたはLinuxコマンドラインを当社のクラウドサーバーの入門記事で使用し、Webサーバーソリューションの入門記事でWebサーバーを設定しました。 データベースの記事を通じて、
grep
を使用して特定のテキストや文字列を検索します。netstat
を使用してネットワーク構成を確認し、リスニングソケット(-l
)、数値アドレス(-n
)、および各ソケットのPIDとプログラム名を表示するフラグ-lnp
。systemctl
を使用してsystemd
サービスを制御します。
さらに、異なるデータベース管理システムに付属するコマンドラインツールを試して、データベースのインストールと対話する実験も行いました。CLIツールを使用すると、データベースサーバーでコマンドを実行し、ターミナルウィンドウから対話的に作業することができます。以下の表は一般的なDBMSとそれに関連するCLIツールを示しています。
DBMS | CLI tool |
---|---|
MongoDB | MongoDB shell |
MySQL | mysql |
PostgreSQL | psql |
Redis | redis-cli |
いくつかのデータベース管理システムには、サードパーティのコマンドラインクライアントもあります。例えば、Redisの場合はRedliがあります。
データベースシステムとやり取りするためにコマンドラインを使用すると、データベース固有のサーバープロンプトが開かれ、通常はそのデータベース管理システムのユーザーアカウントに関連付けられます。例えば、MySQLのサーバープロンプトを開いてMySQLユーザーでログインすると、次のようなデータベースプロンプトが表示されます:
-
各DBMSのコマンドラインクライアントには、コマンドの構文が固有のものがあります。
SQLの制約について学んだ後は、MySQLデータベースでこれらの制約を使用することができます。次のコマンドを実行して、MySQLデータベースで制約を使用します:
CREATE DATABASE
でデータベースを作成します。USE
でデータベースを選択します。CREATE TABLE
で列の仕様とそれらの列に適用される制約を持つテーブルを作成します。ALTER TABLE
とADD
を使用して既存のテーブルに制約を追加し、DROP CONSTRAINT
を使用して既存のテーブルから制約を削除します。
「SQLの使い方」シリーズを使ってMySQLデータベースのスキルをさらに向上させることができます。
Redisを使用して、次のコマンドでRedisをインストールしてセキュリティを確保し、コマンドの名前を変更して実験しました:
auth
は、データベースへのクライアントの認証に使用されます。exit
とquit
は、Redis-CLIプロンプトを終了します。get
はキーの値を取得します。ping
は接続をテストします。set
はキーを設定します。
また、MongoDBシェルでは、バイナリJSON(BSONとしても知られています)を使用して、次のクエリフィルタリングメソッドでCRUD操作を実行しました::
count
メソッドは指定されたコレクション内のオブジェクト数を確認します。deleteOne
は仕様に一致する最初のドキュメントを削除します。deleteMany
は複数のオブジェクトを一度に削除します。find
はMongoDBデータベース内のドキュメントを取得し、pretty
プリント機能を使用して行をより読みやすくします。insertOne
メソッドは個々のドキュメントを作成します。insertMany
メソッドは、単一の操作またはコレクションで複数のドキュメントを挿入します。ObjectId
オブジェクトデータ型は、オブジェクト識別子を格納するために使用されます。updateOne
は指定されたキーで単一のドキュメントを更新します。updateMany
は、指定されたフィルタと一致するコレクション内のすべてのドキュメントを更新するために使用されます。
おそらく、CRUD操作を使用して、多くのデータベース管理システムでデータとやり取りするでしょう。
自己確認
What does CRUD stand for?
CRUDは、次の4つの基本的なデータ操作を説明するために使用される頭字語です。
- Create
- Read
- Update
- Delete
コマンドラインからデータベースを直接管理することを選択することもできますが、多くの一般的なデータベース管理システムには、グラフィカルユーザインターフェース(GUI)も利用できます。
グラフィカルユーザインターフェースの使用
CLIツールを使用することに反対する場合、データベースを操作するためのさまざまなGUIツールがあります。
MySQLの管理をウェブ上で行うには、さまざまなオペレーティングシステムにphpMyAdminをインストールしてセキュアに設定するか、MySQL Managed Databaseにリモートで接続することができます。また、MySQL Workbenchを使用してリモートでMySQLサーバーに接続することもできます。
phpMyAdminと同様に、pgAdminはPostgreSQLを管理するためのウェブインターフェースです。サーバーモードで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をチェックしてください。人気のあるデータベースオプションを1クリックでインストールするためのDigitalOcean Marketplaceも選択できます。
データベースの新しい知識を活用して、コンテナとセキュリティのクラウドジャーニーを続けることもできます。まだであれば、クラウドサーバーとWebサーバーに関する入門記事もチェックしてください。cloud serversおよびweb servers。
Source:
https://www.digitalocean.com/community/tutorials/databases-checkpoint