本記事では、mysql2とOceanBaseデータベースを使用してアプリケーションを構築し、テーブルの作成、データの挿入、クエリなどの基本操作を実行する方法を紹介します。
前提条件
- RubyとRubyGemsがインストール済みであること。
- OceanBaseデータベースがインストール済みで、MySQLモードのテナントが作成されていること。
操作手順
- RubyとRubyGemsのバージョンを確認する
- 必要なgemをインストールする
- OceanBaseデータベース接続情報を取得する
- サンプルプログラムを作成する
- サンプルプログラムを実行する
ステップ1:RubyとRubyGemsのバージョンを確認する
ターミナルを開き、以下のコマンドを実行してRubyとRubyGemsのバージョンを確認します:
ruby -v
gem -v
ステップ2:必要なgemをインストールする
gem を使用してmysql2をインストールします:
gem install mysql2
ステップ3:OceanBaseデータベース接続情報を取得する
OceanBaseデータベースのデプロイ担当者または管理者から、該当するデータベース接続文字列を取得します。
mysql -h$host -P$port -u$user_name -p$password -D$database_name
パラメータの説明:
$host:OceanBaseデータベースへの接続IPアドレスを提供する$port:OceanBaseデータベースへの接続ポートを提供する$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)を使用する
- クエリのタイムアウト時間を適切に設定する
- バッチ処理操作を使用してパフォーマンスを向上させる