本記事では、SequelとOceanBase Cloudを使用してアプリケーションを構築し、テーブルの作成、データの挿入、データのクエリなどの基本操作を実行する方法について説明します。
前提条件
- RubyおよびRubyGemsがインストールされていること
- OceanBase Cloudのアカウントを登録し、クラスタインスタンスとMySQL互換モードのテナントを作成していること。詳細は、クラスタインスタンスの作成およびテナントの作成をご参照ください。
操作手順
- RubyおよびRubyGemsのバージョンの確認
- 必要なgemのインストール
- OceanBase Cloudの接続情報の取得
- サンプルプログラムの作成
- サンプルプログラムの実行
操作手順1:RubyおよびRubyGemsのバージョンの確認
ターミナルを開き、以下のコマンドを実行してRubyおよびRubyGemsのバージョンを確認します。
ruby -v
gem -v
操作手順2:必要なgemのインストール
gemを使用してSequelとmysql2をインストールします。
gem install sequel 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 = { adapter: 'mysql2', host: 'your_host', port: your_port, username: 'your_username', password: PASSWORD, all_databases: true }サンプルプログラム
main.rbを作成します。require 'sequel' require 'sequel/adapters/mysql2' require File.expand_path('config.rb', __dir__) # 接続の作成 db = Sequel.connect(CLIENT_CONFIG) # データベースの作成 db_name = "ruby_test_db" db.run("CREATE DATABASE IF NOT EXISTS #{db_name}") db.disconnect # 新しいデータベースへの再接続 CLIENT_CONFIG[:database] = db_name db = Sequel.connect(CLIENT_CONFIG) puts "Database '#{db_name}' selected" # テーブルの作成 db.run("DROP TABLE IF EXISTS users") db.run("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| db.run("INSERT INTO users (name) VALUES ('#{name}')") end puts "Table created and sample data inserted successfully" puts "Inserted #{sample_names.size} sample records" # すべてのデータのクエリと表示 results = db[:users] puts "\nUsers:" results.each do |row| puts "ID: #{row[:id]}, Name: #{row[:name]}, Created at: #{row[:created_at]}" end
# 接続のクローズ db.disconnect ```
操作手順5:サンプルプログラムの実行
プログラムを実行します。
ruby main.rb
期待される戻り値:
```shell
Database 'ruby_test_db' selected
Table created and sample data inserted successfully
Inserted 4 sample records
Users:
ID: 1, Name: Alice, Created at: 2025-05-21 15:20:06 +0800
ID: 2, Name: Bob, Created at: 2025-05-21 15:20:06 +0800
ID: 3, Name: Charlie, Created at: 2025-05-21 15:20:06 +0800
ID: 4, Name: David, Created at: 2025-05-21 15:20:06 +0800
```
よくある質問
- 接続エラー:データベースに接続できない場合は、以下を確認してください。
- データベースのアドレスとポートが正しいか
- ユーザー名とパスワードが正しいか
- ネットワーク接続が正常か
権限エラー:権限に関連するエラーが発生した場合は、ユーザーが必要な操作を実行するための十分な権限を持っていることを確認してください。
SQL構文エラー:SQL文に構文エラーがある場合は、SQL文の構文が正しいか確認してください。
パフォーマンス最適化の推奨事項
- Sequelのバッチ処理操作を使用する
- 接続プールを使用してデータベース接続を管理する
- プリペアドクエリを使用する
- キャッシュを適切に使用する
- データベースのインデックスを最適化する