知人の会社の顧客販売管理ソフトをスクラッチで構築しているのですが、データベースのバージョンアップを行う機会があったので備忘録替わりに記録を残します。
最初の構築は2007年頃でしたがオープンソースで行ロックができるデータベースを探していてPostgreSqlへたどり着き使用しています。
■ダウンロードとインストール
PostgresqlはこちらのダウンロードサイトからWindows64bit版をダウンロードします。
ダウンロードしたインストーラーを起動します。
インストーラが起動したらウィザードにしたがって進めていきます。
インストールするディレクトリを聞かれます。デフォルトだとProgramFiles配下のバージョン番号付きフォルダを指定されます。私は何となくディレクトリ直下にバージョン番号無しにフォルダを作成してインストールしています。
インストールするコンポーネントを選択します。
StackBuilderはODBCコネクタ等のインストールが必要なければチェックを外します。
データベースのデータを保存するディレクトリを指定します。ここはデフォルトのままでOKです。
データベースのSuperUserであるPostgresのパスワードを入力します。
外部から接続するポート番号を指定します。通常はデフォルトのままでOKです。
データベースのLocale(言語)を設定します。日本語PCであればDefaultLocaleのままでOKです。
インストール内容の確認画面が表示されるので、Nextを押して進めます。
インストール前の最終確認画面が表示されますのでNextを押してインストールを開始します。
インストールが開始されますので完了まで待ちます。
インストール完了画面が表示されますのでFinishを押して画面を閉じます。
PostgreSqlのインストールはこれで完了です。
■設定ファイルの変更
インストールが完了したデフォルト状態では外部からのアクセスが制限されています。
下記ファイルの設定を変更して外部からのアクセスを許可します。
インストールしたDBのDATAディレクトリの中にある下記2つのファイルを修正します。
〇pg_hba.conf
※外部からのACL(アクセスコントロールリスト)を管理するファイル
〇postgresql.conf
※PostgreSqlの性能調整等を行うファイル
まず pg_hba.conf から修正を行います。
ファイルを開くと下のほうに上図のようなACLが記載されています。
デフォルトだと自身からの接続(host all all 127.0.0.1/32 scram-sha-256)のみを許可する設定になっていますが自分の環境にあわせて変更します。
※今回の環境では host all all 192.168.0.0/16 password に変更します。
設定を書き換えたら保存します。
次に postgresql.conf を開きます。
postgresql.conf はDB本体の設定になります。
今回は数万~数十万程度のデータ量なのでほぼデフォルトのままですが、数千万~数億の単位になるとメモリやディスクアクセスの設定等を変えないと本来の性能を発揮できません。
オンラインレプリケーション等高度な設定も可能なので気になる方は調べてみるのもよいです。
注意は一点、上図の listen_addresses が *(アスタリスク)またはネットワークアドレスになっていないか、#でコメントアウトされている場合があり、そうすると自身からのアクセスしか受け付けなくなってしまいますので、必ず確認したほうが良いです。
今回はデフォルトで*だったのでそのまま保存しました。
ファイルの修正が終わったらコントロールパネル~管理ツール(Win11だとWindowsツール)からサービスを開き Postgresql のサービスを再起動します。
■PgAdmin によるデータベースへのログイン
PostgreSqlに標準で備わっているGUIのDB管理ツール PgAdmin を使用してユーザーの作成やデータベーススキーマの作成を行います。
スタートメニューの中にあるPogtresql フォルダの中にPgadminがありますので開きます。
Pgadminは初回起動時にログインパスワードの設定が必要なので、任意のパスワードを設定します。
パスワードを設定するとPgadminのメインメニューが表示されます。
左側のツリーにコントロールするサーバーの一覧が表示されます。Servers をクリックするとプルダウンで登録されているサーバーが表示されます。
最初はローカルデータベースのみ表示されていますが、Serversを右クリックしRegisterから他のサーバーを追加することができます。
今回はローカルサーバーなので、設定されているPostgresql15 を右クリックしてConnectを選択するか、プルダウンをドロップすると下図サーバーへのpostgresユーザーでのログイン画面が表示されます。
DBインストール時に設定した postgres ユーザーのパスワードを入力してOKを押してログインします。
ログインするとインストールした PostgreSql のデータベーススキーマやロール(ユーザー)が表示されます。
デフォルトのデータベースをそのまま使うのであれば、上図DatabaseツリーのPostgresからSchemas~Tablesを選びテーブルの作成が行えます。
今回は既存のデータベースのDmpファイルからのデータベース作成なので下記コマンドを実行してデータベースをインポートしました。
–既存データベースでのバックアップ
C:\PostgreSQL\bin\pg_dump.exe -h [対象のサーバーIP] -p 5432 -U postgres -c -v -j 4 -Z 2 -Fd -f “データ保存先Path”
–新規データベースでのインポート
C:\PostgreSQL\bin\pg_restore.exe -h [対象のサーバーIP] -p 5432 -U postgres -d postgres -v -j 4 -Fd “データ保存先Path”
このような感じで比較的簡単にデータベースの構築ができます。
オープンソースでWindowsもLinuxも対応していてドライバ類も豊富に情報があるのでおすすめのデータベースです。
■ChatGPTによるPostgresqlのレビュー
PostgreSQLは、強力で信頼性の高いオープンソースのリレーショナルデータベース管理システム(RDBMS)です。以下に、その特徴と利点、およびいくつかの注意点を挙げます。
特徴と利点:
- 機能の豊富さ:PostgreSQLは非常に多機能なデータベースシステムであり、トランザクションのサポート、外部キー制約、サブクエリ、ビュー、ストアドプロシージャ、トリガなど、幅広い機能を提供しています。これにより、複雑なデータモデルやビジネスロジックを扱うことができます。
- 拡張性とスケーラビリティ:PostgreSQLは非常に拡張性があり、大規模なデータベースや高トラフィックのアプリケーションでも優れたパフォーマンスを発揮します。さまざまなインデックス、パーティショニング、並列クエリ処理、分散データベースのサポートなど、スケーラビリティに関連する機能が豊富に備わっています。
- データの信頼性と整合性:PostgreSQLはACID(原子性、一貫性、独立性、耐久性)プロパティを満たすトランザクションをサポートしており、データの信頼性と整合性を確保します。また、クラッシュリカバリやデータのバックアップ/リストアなど、データの安全性に関する機能も備えています。
- クロスプラットフォーム対応:PostgreSQLは、さまざまなプラットフォーム(Windows、Linux、macOSなど)で動作することができます。これにより、開発者は環境や要件に応じて柔軟に選択することができます。
- アクティブなコミュニティとサポート:PostgreSQLは、広範な開発者コミュニティに支えられており、アクティブに開発が進められています。バグ修正やセキュリティアップデートなどが継続的に行われており、問題が発生した場合にもサポートを受けることができます。
PostgreSQLの注意点をいくつか挙げます。
- 複雑なセットアップと管理: PostgreSQLは非常に柔軟な設定オプションを提供していますが、その反面、初心者にとってはセットアップと管理がやや複雑になることがあります。適切な設定やパフォーマンスチューニングを行うためには、一定の知識と経験が必要です。
- リソース消費: PostgreSQLは高機能なデータベースシステムであり、大規模なデータベースや高トラフィックのアプリケーションには適していますが、それに伴いリソース消費も増加します。メモリやディスクスペースの適切な管理が必要です。
- スケーラビリティの制約: PostgreSQLはスケーラビリティに関しては強力ですが、一部の競合するデータベースシステムに比べて、水平スケーリング(分散データベース)のサポートが限定的です。大規模なクラスタ環境での運用を検討する場合、追加のツールやアーキテクチャの構築が必要になる場合があります。
- ドキュメンテーションの一貫性: PostgreSQLの公式ドキュメンテーションは非常に充実していますが、一部の項目やトピックにおいて一貫性が欠けることがあります。そのため、特定の機能や設定に関する情報を見つける際には、追加の調査やコミュニティの支援が必要な場合があります。
- ツールとエコシステムの選択肢の制約: PostgreSQLは非常に人気のあるデータベースシステムであり、多くのツールやフレームワークが利用可能ですが、一部の最新のトレンドやテクノロジーに関しては、他のデータベースシステムに比べて選択肢が制約される場合があります。
これらの注意点を考慮に入れつつ、PostgreSQLは堅牢で信頼性の高いデータベースシステムであり、多くのユーザーによって支持されています。