PostgreSQLの機能と使用例
PostgreSQLは、オープンソースのオブジェクトリレーショナルデータベース管理システム(DBMS)です。これは、主にeコマースプラットフォーム、支払いトランザクション、およびさまざまなデータウェアハウジングソリューションに使用される高度なデータベース管理および分析システムです。 30年以上前から存在しており、毎年定期的に更新され、トリガー、ユーザー定義の型と関数、サブクエリなどのさまざまなSQL関数をサポートしています。
PostgreSQLは、世界で最も先進的なオープンソースデータベースの1つです。これは、いくつかの本番および開発のユースケースに適しています。パーティション化とクエリパフォーマンスの強化(特に大規模なデータセットに対して)、最適なスペース使用率のためのBツリーの強化、複数列の最一般値(MCV)統計、クエリのインライン化とチェックサム制御を備えた一般的なテーブル式など、多くの利点があります。
DigitalOcean上のUbuntu20.04に関するいくつかの言葉
Ubuntuは人気のあるオープンソースのデスクトップオペレーティングシステムです。 Ubuntu 20.04には、ZFSスナップショットを管理するツール、主要なカーネルバンプ、セキュリティの向上など、多数の最先端機能が含まれています。 DigitalOceanクラウドプラットフォームは、クラウドでアプリケーションを開発、管理、拡張するための堅牢なインフラストラクチャとグローバルな可用性を提供します。開発者は、コンピューティング、ストレージ、データベース、およびネットワーキング製品を使用して、Webおよびモバイルアプリケーション、ストリーミングサービス、ゲーム、SaaSソリューションなどを構築できます。共有プライベートネットワーキング、ワンクリックDevOpsツール、SSDハードドライブなどの機能を提供するDigitalOceanは、ミッションクリティカルなソリューションに柔軟で安全かつシンプルな選択肢です。
このチュートリアルでは、DigitalOceanUbuntu20.04にPostgreSQLをインストールする方法の詳細な手順を説明します。面倒なことはせずに、始めましょう!
|
PostgreSQLをインストールするための前提条件
DigitalOcean Ubuntu20.04へのPostgreSQL12の実際のインストールに飛び込む前に、システムが次の前提条件を満たしていることを確認する必要があります。
- 特定のサービスへの接続のみが許可されるようにするには、サーバーに少なくとも基本的なUFWファイアウォールが必要です。
- システムを新しいサーバーインスタンス用に更新し、再起動する必要があります。これを行うには、次のコマンドを使用します。
-
sudo apt update && sudo apt upgrade –y
-
sudo reboot
-
Ubuntu20.04DigitalOceanへのPostgreSQLのインストール
aptパッケージマネージャーシステムを使用して、Ubuntu20.04の公式/デフォルトリポジトリを使用してPostgreSQL12をインストールできます。これを行う前に、サーバーのローカルパッケージインデックスを更新しておく必要があります(上記の前提条件を参照)。
リポジトリには、次のようなさまざまなパッケージ(サードパーティのアドオンを含む)が含まれています。
- postgresql-client
- postgresql
- libpq-dev
- postgresql-server-dev
- pgadminパッケージ
次に、追加のユーティリティと機能を提供するpostgresql-contribモジュールとともに完全なPostgreSQL12パッケージをインストールします。これは、次のコマンドを実行してインストールできます。
sudo apt install postgresql postgresql-contrib –y
次に、次のコマンドを実行して、システムの再起動時にPostgreSQLサービスを開始します。
sudo systemctl start postgresql
システムの起動時にPostgreSQLサービスを自動的に開始するには、次のコマンドを実行します。
sudo systemctl enable postgresql
systemctl status postgresqlを実行して、PostgreSQLサービスが期待どおりに実行されていることを確認します。
sudo systemctl status postgresql
これにより、以下のスクリーンショットのように、PostgreSQLサービスのステータスが返され、アクティブと表示されます。
PostgreSQL初期化のカスタマイズ
インストール後、initdbコマンドを使用してデータベースクラスターを作成できます。 initdbコマンドは、rootユーザーからではなく、データベースユーザー内から実行する必要があります。 rootユーザーは、postgresユーザーがchown(所有者の変更コマンド)できる空のディレクトリを作成できます。このディレクトリには、データがテンプレートとして含まれ、デフォルトですべてのデータベースにコピーされます。 postgresユーザーから、適切なオプションとディレクトリ名を使用して次のコマンドを呼び出すことができます。
initdb [option...] [ --pgdata | -D ] directory
initdbコマンドは、さまざまなフラグを使用して認証されたユーザーとして実行し、特定のディレクトリにdbテンプレートを作成できます。
上のスクリーンショットに見られる特定のフラグのリストを以下に示します。
--encoding UTF8
(ロケールに基づいて任意にすることができます)。- Encodingフラグは、データベーステンプレートのエンコーディングを設定します。そのテンプレートを使用して作成されたすべてのデータベースも、個別に指定されていない限り、同じエンコード方法を使用します。さまざまな言語で利用できる多くのエンコード方法があります。
-
--pgdata test
(このフラグは、データベースデータを格納するための「test」という名前のディレクトリを作成します。)- データベースクラスタがデータを保存するディレクトリを指定します。
-A peer
(これは、pg_hba.confファイルで使用される認証方法を指定します。)- pg_hba.confで使用されるローカルユーザー(ホストおよびローカル回線)のデフォルトの認証方法を指定します。 initdbは、レプリケーション接続だけでなく非レプリケーションに対しても、指定された認証方法を使用してpg_hba.confエントリを事前入力します。
-
-k
(データチェックサムを使用してI / Oエラーをチェックします)- I / Oシステムの破損を検出するために、すべてのデータページのデータチェックサムを指定します。ただし、これによりデータベースの処理速度が低下します。
PostgreSQLデータベースの保護
インストール中に、postgresという名前の新しいユーザーがデフォルトで自動的に作成されます。このユーザーは完全なシステム権限を持っているため、強力なパスワードでユーザーアカウントを保護することが重要です。
sudo passwd postgres
次に、postgresユーザーアカウントに切り替えます。ユーザーにはsudo権限が必要です。
sudo su – postgres
PostgreSQLのバージョンは実行することで確認できます
psql -c "SELECT version();"
postgres
のパスワードを変更するには ユーザー使用コマンド:
psql -c "ALTER USER postgres WITH PASSWORD 'MyNewPassword'";
注:このパスワードは、postgres
の場合にのみ適用されます ユーザーはネットワーク経由でPostgreSQLに接続します。
Postgresデータベースにアクセスするには、次のコマンドでPostgreSQLデータベースにログインできます。
psql postgres
デフォルトでは、PostgreSQLはデータベースにアクセスするためにローカルシステムユーザーからのパスワード認証を必要としません。これは「ピア認証」と呼ばれます。ただし、パスワード認証はpg_hba.conf
内から有効にできます。 ファイル。
このpg_hba.conf
を編集するには ファイル、\q
を使用 postgresシェルを終了し、Linuxシェルに入るコマンド。 Linuxシェル内から、pg_hba.conf
を編集します。 ファイル。ファイルを編集する前に、必ずバックアップを取ってください。
sudo cp /etc/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf.bak
次に、nanoエディターを使用してファイルを編集します
nano /etc/postgresql/12/main/pg_hba.conf
「Unixドメインソケット接続のみ」でローカル回線を見つけて、METHOD
を変更します peer
の属性 md5
へ 。
PostgreSQLサービスをリロードして、新しい設定を適用します。
sudo systemctl reload postgresql
ここで、postgresという名前のユーザーが2人いることに注意してください。 1つはデータベースに接続してアクセスするためのLinuxユーザーであり、もう1つはデータベース内で管理者の役割を実行するために使用されるデータベースユーザーです。
PostgreSQLデータベースの構成
postgresql.confファイルの必要なパラメーターを変更することにより、リスンアドレスとポート用にPostgreSQLを手動で構成できます。
デフォルトでは、PostgreSQLポート5432が使用され、ローカルホストでリッスンします。これは、構成ファイルを編集することで変更できます。
sudo nano /etc/postgresql/12/main/postgresql.conf
変更を加えると、サービスが再開されます。
sudo systemctl restart postgresql
PostgreSQL12での新しい役割の作成
PostgreSQL 12での認証と承認は、「ロール」の概念を介して行われます。ここで、役割とは、ユーザーとグループの両方を指す柔軟な用語です。
次のコマンドを使用して、postgresユーザーにログインします。
sudo su postgres
新しいロールは、createrole –interactiveコマンドを使用してコマンドラインからインタラクティブに作成できます。ここで、–interactiveフラグを使用すると、新しい役割の名前と、この役割にスーパーユーザー権限を割り当てる必要があるかどうかを確認するプロンプトが作成されます。
新しいユーザーは、ユーザーpostgresqlシェルの外部で次のように新しい役割で作成できます。
createuser –interactive
newuserコマンドの出力は次のようになります。
PostgreSQLサーバーでのデータベースの作成と削除
PostgreSQL 12では、新しいロールが作成されるときに、ロールがデフォルトでデータベースに接続しようとするため、同じ名前の新しいデータベースが存在する必要があります。したがって、ユーザーliamが作成される前のセクションと同様に、次のコマンドを使用して、その名前のデータベースを作成できます。
createdb liam
PostgreSQL 12には、必要に応じてデータベースを作成するための複数のパスがあります。
- postgresアカウントからログインした場合:
postgres@server:~$ createdb liam
-
sudo
を使用する 、sudo –u postgres created liam
データベースを削除するには、
を使用できます。
dropdb liam
新しい役割でPostgresプロンプトを開く
Postgresデータベースおよびロールと同じ名前のLinuxユーザーを作成して、IDベースの認証でログインできます。
Linuxユーザーは、コマンドラインから次のように入力して作成できます(まだ存在しない場合)。
sudo adduser noah
ユーザーを作成したら、次のコマンドを使用してログインできます;
sudo -u noah psql
現在のデータベースとユーザー情報には、;
を使用してアクセスできます。
\conninfo
PostgreSQL管理
テーブルの作成と削除
SQLコマンドCREATE TABLE
データベース内に任意のテーブルを作成するために使用できます。コマンドでは、列のリストと各列のデータ型を指定する必要があります。
CREATE TABLE customers (customer_id int, first_name varchar(80), last_name varchar(80));
このコマンドは、「customers」という名前のテーブルを作成します。最初の列には、整数型の顧客IDが保持されます。 2列目と3列目は文字タイプで、最大80文字の顧客の名前と名前が含まれます。
この新しいテーブルは、\d
と入力すると表示されます。 。
次のように入力すると、テーブルを削除できます。
DROP TABLE customers;
テーブル内のデータの挿入、選択、および削除
データは行の形式でPostgreSQLテーブルに追加されます。各行は、個別のデータセットを表します。 INSERT INTOコマンドを使用して、データを行に挿入できます。コマンド名の後には、「テーブル名」(次の例ではcustomers)、キーワードVALUES、コンマで区切られた値のリストが続きます。
INSERT INTO customers VALUES (1, 'Owen', 'Buyer');
INSERT INTO customers VALUES (2, 'Luke', 'Seller');
表の内容は、SELECTコマンドを使用して表示できます。
SELECT * FROM customers;
DELETE
を使用して行を削除できます 指図。 WHERE
キーワードは、条件付きで行を選択するために使用されます。
DELETE FROM customers WHERE last_name = 'Seller';
すべての行を削除するには、次のように入力します。
SELECT * FROM customers;
テーブルからの列の追加と削除
PostgreSQL 12には、既存のテーブルに列を簡単に追加または削除する機能があります。
ALTER TABLE
コマンドはADD
と一緒に使用されます キーワードを使用して、既存のテーブルに列を追加します。このフィールドは、テーブル内の既存の行に対して空に設定されています。
ALTER TABLE customers ADD branch_id int;
同じコマンドがDROP
で使用されます 指定した列をテーブルから削除するキーワード。
ALTER TABLE customers DROP first_name;
テーブル内のデータの更新
テーブル内のレコードの追加と削除の他に、それらを変更することもできます。これは、UPDATE
を使用して実行できます 指図。新しい値で編集する必要がある列を指定する必要があります。
UPDATE customers SET last_name= 'Buyer' WHERE customer_id = '1';
本番環境に関する考慮事項
PostgreSQL 12は、実稼働環境で安全に使用できます。このデータベースは非常に安定しているため、大規模に実装しても問題はありません。詳細については、こちらの以前の記事を参照してください。
結論
このチュートリアルでは、DigitalOceanで実行されているUbuntu20.04サーバーでPostgreSQL12をセットアップする方法を説明しました。 PostgreSQL 12は、標準のBツリーインデックスのスペース管理の改善や、インデックスの同時再構築とインデックス作成のカバーなど、多くの新機能と高度な機能を備えた複雑なアプリケーションです。バージョン12は、インラインWITHクエリとICU提供の照合もサポートし、パーティショニングを改善し、テーブルストレージにさまざまなメソッドを作成して使用するためのプラグ可能なテーブルストレージインターフェイスを提供します。
PostgreSQLサーバーのセットアップと使用の基本を理解したので、マネージド代替を試してみませんか? ScaleGridのようなマネージドサービスを使用すると、ボタンをクリックするだけで、セットアップ、インストール、および構成プロセス全体を完了することができます。今日から30日間の無料トライアルを開始して、自分の目で確かめてください。クレジットカードは必要ありません。最初のデータベースを数分でセットアップできます。
ここでは、インストールの基本について説明し、一般的なデータベース管理の手順についても説明しました。このガイドがお役に立てば幸いです。