PC-KEIBA DatabaseをAWSで使う

マニュアル

この記事の内容はエンジニア向けで、一般ユーザー様にとっては必須ではありません。AWSを使わない方は、読み飛ばしていただいて大丈夫です。

PC-KEIBA DatabaseをAWSで使う

この記事では、「PC-KEIBA Database」を使うために必要なAWSの設定について解説します。主に、AWS上のデータベース環境の構築方法と、クライアントからのデータ移行手順をご紹介します。自分用の備忘録も兼ねていますが、これからAWSを使ってみたい方にも、きっと参考になるはずです。

AWSってなに?

「AWS(アマゾン ウェブ サービス)」とは、Amazonが提供するインターネット上のコンピューターサービスです。パソコンの中にあるソフトやファイルを、ネットを通じてどこからでも使えるようにする、そんなイメージです。

企業やアプリの運営者が「サーバー」や「データ」を置く場所として使っているのもこのAWSです。ただ、AWSは自由度が高い分、設定や操作も複雑で最初はかなり戸惑います。正直、自分もChatGPTが無ければ、AWSの環境なんてとても作れなかったと思います(笑)

逆に言えば、分からないことはChatGPTに聞けばいい。プランの選び方から接続方法まで、ちゃんと導いてくれるので安心です。

AWSのアカウントを作る

まずは「AWS」の公式サイトから、アカウントを作成しましょう。メールアドレス、携帯番号、クレジットカード、そして画像認証など、本人確認の項目が盛りだくさん。ちょっとした審査を受けているような気分になります(笑)

Aurora DBを作る

次に、以下の手順でAurora DBを作ります。

  1. WebブラウザでAWSマネジメントコンソールにログイン
  2. 検索バーに「Aurora and RDS」と入力して、「Aurora and RDS」を選択
  3. 左のメニューから「データベース」をクリック
  4. 右上のリストから「リージョン」を選択
  5. 右上の「データベースの作成」をクリック

Aurora PostgreSQLの作成

設定が必要なのは、たぶん以下の項目だけだったと思います。個人利用であれば、最小限の設定で十分です。メモリ1GBでも問題なく動作します。それ以外の項目は、初期設定のままで問題ありません。

  • エンジンのタイプ:PostgreSQL
  • テンプレート:開発/テスト
  • DBクラスター識別子:(任意の名前を設定)
  • 認証情報管理:セルフマネージド
  • インスタンスの設定:db.t3.micro
  • パブリックアクセス:あり
  • モニタリング:データベースインサイト – スタンダード

画面の一番下に表示される「概算月間コスト」を確認しながら、インスタンスのスペックを自分の予算に合わせて調整しましょう。設定に迷ったときは、ChatGPTに聞けば大丈夫です。

なお、「PC-KEIBA Database」を使う場合、データベースはPostgreSQL一択です。

また、最も注意が必要なのは「リージョン」の設定です。東京または大阪を選ぶようにしてください。初期値の「バージニア北部」のままだと、距離の影響で通信が遅くなり、パフォーマンスが大きく低下します。

「リージョン」は、AWSが世界のどこにデータセンター(大きなコンピュータ施設)を置いているかを表す場所のことです。

Aurora DBに接続する(PC-KEIBA Database)

PC-KEIBA Database の接続設定

  1. サーバー名:Aurora DBのエンドポイント
  2. ポート番号:5432
  3. SSL:チェックを入れる
  4. データベース名:pckeiba
  5. ユーザ名:postgres
  6. パスワード:Aurora DBのパスワード

「接続テスト」ボタンをクリック。

データベースの作成

接続テストが成功したら、画面右下の「実行」ボタンをクリックします。

データベースの作成・更新チェック処理が終了するまで少し待ちます。

次のメッセージが出てきたら「OK」ボタンをクリックします。

Aurora DBに接続する(A5:SQL Mk-2)

ルート証明書をダウンロード

Amazon RDS のルート証明書をダウンロードします。東京または大阪リージョンの「証明書バンドル(PEM)」を、以下のリンクからダウンロードし、任意の場所に保存してください。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.ClientCertification

A5:SQL Mk-2 の接続設定

  1. サーバー名:Aurora DBのエンドポイント
  2. データベース名:pckeiba
  3. ユーザID:postgres
  4. パスワード:Aurora DBのパスワード
  1. SSL モード:必須
  2. CA Cert:「証明書バンドル(PEM)」のパス
  3. サーバー証明書を信用する:チェックを入れる

「テスト接続」ボタンをクリック。

Windowsで psql を使えるようにする

Windows環境で最も簡単にTSV出力するために、「psql」を使えるようにします。

psql のインストール場所を確認

通常、以下のフォルダに psql.exe が入っています。

C:\Program Files\PostgreSQL\16\bin
  • 16 の部分はバージョンによって異なります(例:14, 15など)
  • 中に psql.exe があることを確認してください。

環境変数「PATH」に bin フォルダを追加

  1. 「スタート」メニューで「環境変数」と検索して「環境変数を編集」をクリック
  2. 「ユーザー環境変数」または「システム環境変数」の Path を選択し、「編集」をクリック
  3. 「新規」ボタンをクリックし、以下を追加
C:\Program Files\PostgreSQL\16\bin

「OK」を押してすべて閉じる。

クライアントDBからのTSVエクスポート

ここからは、クライアントからAurora DBへのデータ移行手順を解説します。データ移行には他にもさまざまな方法がありますが、ここではシンプルで分かりやすい方法に絞ってご紹介します。

TSVエクスポートするコマンド

\copy (クエリ) TO 'ファイルパス' WITH (オプション);

このコマンドは「pgAdmin」や「A5:SQL Mk-2」などのクライアントツールでは、ファイルの書き込み権限の制約によりエラーが発生する場合があります。

TSVエクスポートのSQLを作る

SQLはセミコロンで区切ることで、複数の処理をまとめて一度に実行できます。

例えば、JRA-VANの「馬毎レース情報」テーブルから2024年1月~2月分のデータをTSVファイルに出力するには、次のように記述します。

\copy (SELECT * FROM jvd_se WHERE kaisai_nen || kaisai_tsukihi LIKE '202401%') TO 'C:\Data\jvd_se_202401.tsv' WITH (FORMAT csv, DELIMITER E'\t', ENCODING 'UTF8');
\copy (SELECT * FROM jvd_se WHERE kaisai_nen || kaisai_tsukihi LIKE '202402%') TO 'C:\Data\jvd_se_202402.tsv' WITH (FORMAT csv, DELIMITER E'\t', ENCODING 'UTF8');

このSQLをファイルに保存しておきましょう。

Aurora DBのスペックにもよりますが、データは年ごとや月ごとに分割し、少しずつ出力するのが適切です。一度に大量のレコードを処理しようとすると、かえって時間がかかることがあります。管理人@PC-KEIBAは、目安として5万件単位で作業を行いました。

バッチでSQLを実行する

バッチファイルを次のように記述して保存し、ダブルクリックで起動するとファイル出力が行われます。

set PGPASSWORD=postgres
psql -U postgres -d pckeiba -f (※f)
pause
  • PGPASSWORD:パスワード
  • U:ユーザID
  • d:データベース名
  • ※fSQLのファイル名

ちなみに、Aurora DBへのデータ移行よりも、クライアント側でのファイル出力処理のほうが時間がかかります。

Aurora DBへのTSVインポート

TSVインポートするコマンド

\copy テーブル名 FROM 'ファイルパス' WITH (オプション);

TSVインポートのSQLを作る

SQLはセミコロンで区切ることで、複数の処理をまとめて一度に実行できます。

\copy jvd_se FROM 'C:/Data/jvd_se_202401.tsv' WITH (FORMAT csv, DELIMITER E'\t', NULL '', HEADER false, ENCODING 'UTF8');
\copy jvd_se FROM 'C:/Data/jvd_se_202402.tsv' WITH (FORMAT csv, DELIMITER E'\t', NULL '', HEADER false, ENCODING 'UTF8');

Aurora PostgreSQLはサーバー側の copy は非対応だが、クライアント側の copy は可能。

このSQLをファイルに保存しておきましょう。

バッチでSQLを実行する

バッチファイルを次のように記述して保存し、ダブルクリックで起動するとデータ移行が行われます。

set PGPASSWORD=(※P)
psql -U postgres -d pckeiba -h (※h) --set client_encoding=UTF8 -f (※f)
pause
  • ※PAurora DBのパスワード
  • U:Aurora DBのユーザID
  • d:Aurora DBのデータベース名
  • ※hAurora DBのエンドポイント
  • ※fSQLのファイル名

以上、「PC-KEIBA DatabaseをAWSで使う」ための手順でした。