データベースのチェックポイント
イントロダクション
このチェックポイントは、データベースに関する初級記事から学んだことを評価するためのものです。データベースの定義や一般的なデータベース管理システムの紹介を行っています。このチェックポイントを使用して、これらのトピックに関する知識をテストしたり、キーワードやコマンドを repasar したり、継続的な学習のためのリソースを見つけることができます。
データベースとは、情報やデータが論理的にモデル化された集合のことを指します。ウェブサイトやアプリケーション、クラウドのコンテキストで「データベース」という言葉が使われると、通常はコンピュータに保存されたデータを管理するためのコンピュータプログラムを指します。これらのプログラムは、データベース管理システム(DBMS)と呼ばれ、ウェブサーバーやフロントエンドフレームワークなどの他のプログラムと組み合わせることで、本番環境で使用可能なアプリケーションを構築することができます。
このチェックポイントでは、導入記事の中心的なアイデアを要約した2つのセクションがあります。まず、データベースについての簡単な説明(関係型データベースと非関係型データベースの各サブセクションを含む)と、コマンドラインやグラフィカルユーザーインターフェースを介してDBMSとの対話方法についてのセクションです。それぞれのセクションには、知識をテストするための対話型コンポーネントがあります。このチェックポイントの最後には、データベース管理システム、フルマネージドデータベース、バックエンドデータベースを使ったアプリの構築に関する継続的な学習の機会があります。
資源
- An Introduction to Databases
- Understanding SQL Constraints
- SQLite vs MySQL vs PostgreSQL: A Comparison Of Relational Database Management Systems
- A Comparison of NoSQL Database Management Systems and Models
- How To Install and Secure Redis on Ubuntu 22.04
- How To Perform CRUD Operations in MongoDB
データベースとは何ですか? (What is a database?)
データベースは、情報の論理的にモデル化されたコレクションであり、データベース管理システムは、多くの人が「データベースってこんな感じかな」と思うときに思い浮かべるものです。データベース管理システム(DBMS)を使用して、情報と対話し、データベースに保存された情報にアクセスしたり、操作したりすることができます。
Info
以下の用語を定義し、ドロップダウン機能を使用して確認してください。
レプリケーション
レプリケーションは、複数の別々のデータベース間でデータを同期する実践を指します。この実践は冗長性を提供し、拡張性を向上させ、読み取りレイテンシを削減します。
シャーディング
データベースのシャーディングとは、データを論理的なシャードと呼ばれるチャンクに分割し、物理的なシャードと呼ばれる別々のノードに分散させるアーキテクチャの実践です。この実践の詳細については、「データベースのシャーディングの理解」の記事をご覧ください。
データベースシステムには、一般的に使用される関係モデルが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について学ぶことができます。
関係データベース
リレーショナルデータベースは、テーブルとして認識できる関係を通じて情報を整理します。
Info
自分自身を確認してください
関係を構成する要素は何ですか?
関係は、それぞれのタプルまたは表の行ごとに同じ属性または列を共有するタプルの集まりです。タプルは表が保持するデータの種類の一意のインスタンスであり、属性は列に許可されるデータ型を指定します。
プライマリキーと外部キーの違いは何ですか?
プライマリキーは、関係データベースの各行を一意に識別する列を指し、外部キーは関係を作成するために第二の関係に挿入されるプライマリキーのコピーです。
データベースに情報が格納され、リレーションに整理されている場合、情報に対して構造的なリクエストを行うクエリを通じてアクセスすることができます。多くの関係データベースでは、クエリを管理するためにStructured Query Language(通称SQL)が使用されています。
データベースを設計する際には、SQLの制約を使うことができます。これらの制約は、テーブル内のデータに対して行える変更に制限を加えます。
Info
自分自身をチェックしてください
なぜデータベースに制約を課すのでしょうか?
ビジネスルール:制約はデータベース管理者が定義されたポリシーや手順に準拠し、ビジネスのニーズと期待に対応するために使用されます。
データの整合性:データの入力には入力エラーが発生しやすいため、制約は正しいデータを確保するための追加のパラメータを提供します。
SQL標準によって形式的に定義されている5つの制約は何ですか?
PRIMARY KEYは、指定された列のすべてのエントリが一意でありNULLでないことを要求し、その列を使用してテーブル内の各個々の行を識別することができます。
FOREIGN KEYは、指定された列のすべてのエントリが他のテーブルの特定の列に既に存在することを要求します。
UNIQUEは指定された列に重複する値が追加されないようにします。
CHECKは、列に対して要件(プレディケートと呼ばれる)を定義し、それに入力されるすべての値が満たす必要があることを示します。
NOT NULLは指定された列にNULL値が追加されないようにします。
いくつかのSQLを使用したオープンソースの関係データベース管理システムには、MySQL、MariaDB、PostgreSQL、およびSQLiteがあります。関係データベースについて理解を深めるには、「Understanding Relational Databases」を学び、一般的な関係DBMSについては「SQLite vs MySQL vs PostgreSQL: 関係データベース管理システムの比較」を確認してください。
Info
各記事を通じて、関連データベースについての用語を学んできました。以下の用語を定義し、自分の答えを確認するためにドロップダウン機能を使ってください。
制約(Constraint)
制約とは、列やテーブルに適用されるルールであり、それによって入力できるデータを制限します。
データ型(Data Types)
データ型は、列に許可されるエントリーの種類を規定します。
オブジェクトデータベース(Object Database)
オブジェクトデータベースは、情報のためにオブジェクト指向の構造を使用します。PostgreSQLは、一部のオブジェクトデータベースの特徴を取り入れた関連データベースです。
サーバーレス(Serverless)
サーバーレスデータベース(SQLiteなど)は、データベースへアクセスするプロセスが直接データベースディスクファイルに書き込みや読み取りができる仕組みです。これは、他の関連データベースエンジンで実装されているプロセス間通信とは異なる動作です。サーバーレスアプリケーションを実行するために、サーバーレス関数を作成することもできます。
符号付き整数および符号なし整数(Signed and Unsigned Integers)
一部の数値データ型は符号付きであり、正および負の数を表すことができますが、他の数値データ型は符号なしであり、正の数のみを表すことができます。
今、あなたはリレーショナルデータベースについて知っているので、その反対となる非リレーショナルデータベースを理解することができます。
関係ないデータベースとNoSQLデータベース
データを構造なしで保存する必要がある場合、非関係型データベースが別のモデルを提供します。非関係型データベースはSQLを使用しないため、NoSQLデータベースとも呼ばれることがあります。
非関連データベースには、キー・バリューストア、カラム指向データベース、ドキュメントストア、グラフデータベースなど、さまざまな利用可能なオプションがあります。これらのモデルは、関連データベースの使用に関連する潜在的な問題、例えば水平スケーリング、ノード間の最終的な整合性、および非構造化データの管理に対応しています。
Info
非関係型データベースの用語を知っておく
各非関係型データベースモデルには、それをユニークにする特性があります。モデルのタイプを定義し、ドロップダウン機能を使用して確認してください。
キー・バリューデータベース
キー・バリューデータベースは、キーと関連する値を含む連想配列を格納し管理します。キーは一意の識別子であり、それに関連する値を取得します。
カラム指向データベース
カラム指向データベースは、データをカラム単位で格納するため、列指向です。データはレコードの順序で表示されます。1つのカラムの最初のエントリーは他のカラムの最初のエントリーに関連付けられます。
ドキュメント指向データベース
ドキュメント指向データベースは、ノンSQLデータベースであり、データを文書の形式で格納します。各文書にはデータを構造化するためのメタデータが含まれており、APIまたはクエリ言語を使用して文書を取得することができます。
グラフデータベース
グラフデータベースは文書指向データベースのサブカテゴリであり、このタイプのデータベースは文書間の関係を強調します。
以下のインタラクティブなドロップダウン機能を使って、人気のある非関係型データベース管理システムがどのようなデータベースモデルと一致するかを知ることができます。
Info
自己確認してください。以下のデータベース管理システムをそれぞれ対応する操作データベースモデルにマッチさせてください。
– Redis
– Couchbase
– Cassandra
– OrientDB
– MongoDB
– Neo4j
– MemcacheDB
– Apache HBase
ドロップダウン機能を使って回答を比較してください。
操作データベースモデル
例えばのDBMS
– キーバリューストア
– Redis、MemcacheDB
– カラム指向データベース
– Cassandra、Apache HBase
– ドキュメントストア
– MongoDB、Couchbase
– グラフデータベース
– OrientDB、Neo4j
リレーショナルデータベースを使用しているか、非リレーショナルデータベースを使用しているかに関わらず、おそらくデータベース管理システムを含むアプリケーションを構築しているでしょう。
アプリケーションスタックの構築
データベース管理システムは、一般的にはより大きなアプリケーションの重要な要素として展開されます。これらのアプリケーションは時々、LAMPスタックやElasticスタックなどと呼ばれます。
Info
回答を得るためにドロップダウン機能を使用してください。
LAMPスタックは何で構成されていますか?
LAMPは、このスタックを構成する技術の頭文字です:
Linuxオペレーティングシステム
Apache Webサーバー
MySQLデータベース
PHPによる動的コンテンツ処理
L*MPの他にもLAMPスタックの代替オプションがあります。例えば、LEMPスタックではEはNginxを意味し、LOMPスタックではOはOpenLiteSpeedを意味します。
Elasticスタックは何で構成されていますか?
Elasticスタックは、Elasticsearchを中心に構築されており、これは検索エンジンとドキュメント指向のデータベースの両方です。
アプリケーションスタックを使用したリモートサーバーを設定する場合、システムを意図しない干渉から保護するためにデータを暗号化することをおすすめします。通信を暗号化するにはトランスポートレイヤーセキュリティ(TLS)を使用して、データを暗号化し、適切な暗号によってのみ復号できるようにします。データベースに保存されている静的データは、データ静止状態の暗号化を提供するDBMSを使用しない限り、暗号化されません。
データベースを管理する際は、コマンドラインインターフェースまたはグラフィカルユーザーインターフェースのいずれかを選択して直接行うことができます。
DBMSとコマンドラインを使用すること
クラウドサーバーの導入記事を通じてLinuxのコマンドラインを使い始め、ウェブサーバーソリューションの導入記事でウェブサーバーを設定しました。データベースの記事を通じて、コマンドラインのコマンドを使いながら徐々に慣れていきました。
- grep to search plain-text data for a specific text or string.
- netstat to check network configuration with the flags -lnp to show listening sockets (-l), numeric addresses (-n), and the PID and name of the program for each socket (-p).
- systemctl to control the systemd service.
データベースのインストールとの対話的な操作を目的として、異なるデータベース管理システムに付属しているコマンドラインツールも試してみました。CLIツールを使用することで、ターミナルウィンドウからデータベースサーバー上でコマンドを実行し、インタラクティブに作業することができます。以下の表には一般的なDBMSとそれに関連するCLIツールがリストされています。
DBMS | CLI tool |
---|---|
MongoDB | MongoDB shell |
MySQL | mysql |
PostgreSQL | psql |
Redis | redis-cli |
いくつかのデータベース管理システムには、Redisの「Redli」のようなサードパーティのコマンドラインクライアントもあります。
データベースシステムとの操作を行うためにコマンドラインを使用する際には、データベースごとに特定のサーバープロンプトを開きます。通常、そのデータベース管理システムに関連付けられているユーザーアカウントと紐づいています。例えば、MySQLのサーバープロンプトを開き、MySQLのユーザーアカウントでログインすると、次のようなデータベースプロンプトが表示されます。
各DBMSのコマンドラインクライアントは、コマンドの構文に独自のルールを持っています。
SQLの制約について学んだ後は、これらのコマンドを実行することで、MySQLデータベースと一緒にその制約を使用することができます。
- CREATE DATABASE to create a database.
- USE to select a database.
- CREATE TABLE to create a table with specifications for the columns and constraints applied to those columns.
- ALTER TABLE with ADD to add constraints to an existing table and with DROP CONSTRAINT to delete a constraint from an existing table.
「How To Use SQL」シリーズで、MySQLデータベースのスキルをさらに向上させることができます。
Redisを使用して、次のコマンドを使ってRedisをインストールしてセキュリティーを確保し、コマンドの名前変更を試しました。
- auth to authenticate clients for database access.
- exit and quit to exit the Redis-CLI prompt.
- get to retrieve the key value.
- ping to test connectivity.
- set to set keys.
そして、MongoDBシェルでは、次のクエリフィルタリング方法を使用して、バイナリJSON(BSONとしても知られています)を使ってCRUD操作を実行しました。
- count method to check the object count in a specified collection.
- deleteOne to remove the first document that matches the specifications.
- deleteMany to remove multiple objects at once.
- find to retrieve documents in your MongoDB database with the pretty printing feature to make the lines more readable.
- insertOne method to create individual documents.
- insertManymethod to insert multiple documents in a single operation or collection.
- ObjectId object datatype for storing object identifiers.
- updateOne to update a single document with specified keys.
- updateMany to update every document in a collection that matches the specified filters.
多くのデータベース管理システムで、おそらくCRUD操作を使用してデータとやり取りすることになるでしょう。
Info
自分で確認してください
CRUDは何を表していますか?
CRUDとは、以下の4つの基本的なデータ操作を表す頭字語です:
作成(Create)
読み取り(Read)
更新(Update)
削除(Delete)
データベースの管理はコマンドラインから直接行うこともできますが、一般的なデータベース管理システムでは、グラフィカルユーザーインターフェース(GUI)を使用することもできます。
グラフィカルユーザーインターフェースを使用する
設計されたCLIツールを使用しない場合、データベースで作業するためのさまざまなGUIツールがあります。
ウェブ上でMySQL管理を処理するためには、phpMyAdminを使用することができます。phpMyAdminを多種多様なオペレーティングシステムにインストールし、セキュリティを確保するか、またはMySQL Managed Databaseにリモート接続することができます。また、MySQL Workbenchを使用してリモートでMySQLサーバーに接続することもできます。
phpMyAdminに似たように、pgAdminはPostgreSQLを管理するためのWebインターフェースです。pgAdminはサーバーモードでインストールおよび設定することもできますし、pgAgentを使用して自動バックアップをスケジュールすることもできます。
MongoDBを使用する場合は、データベースにアクセスするためのグラフィカルインターフェイスとしてMongoDB Compassを考慮することができます。
データベースを管理するためにコマンドラインを使用することを選ぶか、グラフィカルインターフェースを使用するかに関わらず、データベースシステムを管理するための必要なツールが備わっています。
次は何ですか? (Tsugi wa nan desu ka?)
データベースや人気のあるデータベース管理システムをより深く理解することで、データを保管したり管理したり、データベースシステムを使用したアプリケーションを作成することができます。
特定のデータベース管理システムの操作方法については、弊社の「SQLの使用方法」と「MongoDBでのデータ管理方法」シリーズを参考にしてください。MySQLに関する問題が発生した場合は、「MySQLの問題のトラブルシューティング方法」でデバッグすることができます。MongoDBの問題については、「MongoDBでのCRUD操作の実行方法」との関連性を評価してください。
データベースを使用してアプリを作成する準備が整ったら、以下のチュートリアルを試して共通のアプリケーションスタックセットアップを学んでみてください。
- How To Install Linux, Apache, MySQL, PHP (LAMP) Stack on Ubuntu 22.04
- How To Install Linux, Nginx, MySQL, PHP (LEMP stack) on Ubuntu 22.04
- How To Install Linux, OpenLiteSpeed, MariaDB, PHP (LOMP stack) on Ubuntu 22.04
完全に管理されたデータベースでアプリを構築することを好む場合、Silicon Cloudの提供する管理されたMongoDBクラスター、MySQLまたはPostgreSQLホスティング、そして管理されたRedisをご確認ください。また、Silicon Cloudマーケットプレイスでは、人気のあるデータベースオプションを1クリックでインストールすることも選択できます。
データベースの知識を持つことで、コンテナとセキュリティでもクラウドの旅を続けることができます。まだ読んでいなければ、クラウドサーバーやウェブサーバーの入門記事もチェックしてみてください。