本記事では、mysql2 と OceanBase Cloud クラウドデータベースを使用してアプリケーションを構築し、テーブルの作成、データの挿入、データのクエリなどの基本操作を実行する方法について説明します。
前提条件
- Ruby および RubyGems がインストールされていること
- OceanBase Cloud クラウドデータベースのアカウントを登録し、クラスタインスタンスと MySQL互換モード のテナントを作成していること。詳細は クラスタインスタンスの作成 および テナントの作成 をご参照ください。
操作手順
- Ruby および RubyGems のバージョンを確認する
- 必要な gem をインストールする
- OceanBase Cloud クラウドデータベースの接続情報を取得する
- サンプルプログラムを作成する
- サンプルプログラムを実行する
操作手順1:Ruby および RubyGems のバージョンを確認する
ターミナルを開き、以下のコマンドを実行して Ruby および RubyGems のバージョンを確認します。
ruby -v
gem -v
操作手順2:必要な gem をインストールする
gem を使用して mysql2 をインストールします。
gem install mysql2
操作手順3:OceanBase Cloud クラウドデータベースの接続情報を取得する
OceanBase Cloudコンソール にログインします。インスタンス一覧ページで対象インスタンスの情報を展開し、対象テナントの下で 接続 > 接続文字列を取得 を選択します。
詳細な操作については、接続文字列の取得 をご参照ください。
作成済みの OceanBase Cloud クラウドデータベースに基づいて、以下の URL の対応する情報を入力します。
mysql -h$host -P$port -u$user_name -p$password -D$database_nameパラメータ説明:
$host:OceanBase Cloud クラウドデータベースの接続アドレスを指定します。例:t********.********.oceanbase.cloud。$port:OceanBase Cloud クラウドデータベースの接続ポートを指定します。デフォルトは 3306 です。$database_name:アクセスするデータベース名を指定します。$user_name:データベースにアクセスするアカウントを指定します。$password:アカウントのパスワードを指定します。
操作手順4:サンプルプログラムを作成する
設定ファイル
config.rbを作成します。PASSWORD = ENV['OB_PASSWORD'] || 'your_password' CLIENT_CONFIG = { host: 'your_host', port: your_port, username: 'your_username', password: PASSWORD, all_databases: true }サンプルプログラム
main.rbを作成します。require 'mysql2' require_relative 'config'
# 接続を作成 client = Mysql2::Client.new(CLIENT_CONFIG)
db_name = "ruby_test_db"
client.query("CREATE DATABASE IF NOT EXISTS #{db_name}")
client.query("USE #{db_name}")
puts "Database '#{db_name}' selected"
client.query("DROP TABLE IF EXISTS users")
client.query("CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)")
sample_names = ["Alice", "Bob", "Charlie", "David"]
sample_names.each do |name|
client.query("INSERT INTO users (name) VALUES ('#{name}')")
end
puts "Table created and sample data inserted successfully"
puts "Inserted #{sample_names.length} sample records"
results = client.query("SELECT * FROM users")
puts "\nUsers:"
results.each do |row|
puts "#{row['id']}: #{row['name']} (created: #{row['created_at']})"
end
client.close
```
操作手順5:サンプルプログラムを実行する
プログラムを実行します。
ruby main.rb期待される戻り値:
Database 'ruby_test_db' selected Table created and sample data inserted successfully Inserted 4 sample records Users: 1: Alice (created: 2025-05-20 17:56:22 +0800) 2: Bob (created: 2025-05-20 17:56:22 +0800) 3: Charlie (created: 2025-05-20 17:56:22 +0800) 4: David (created: 2025-05-20 17:56:22 +0800)
よくある質問
- 接続エラー:データベースに接続できない場合は、以下を確認してください。
- データベースのアドレスとポートが正しいか
- ユーザー名とパスワードが正しいか
- ネットワーク接続が正常か
権限エラー:権限に関連するエラーが発生した場合は、ユーザーが必要な操作を実行するための十分な権限を持っていることを確認してください。
SQL構文エラー:SQL文に構文エラーがある場合は、SQL文の構文が正しいか確認してください。
パフォーマンス最適化の推奨事項
- 接続プールを使用してデータベース接続を管理する
- プリペアドステートメント(prepared statements)を使用する
- クエリのタイムアウト時間を適切に設定する
- バッチ処理操作を使用してパフォーマンスを向上させる