本記事では、RustとOB Cloudクラウドデータベースを使用してアプリケーションを構築し、テーブルの作成、データの挿入、クエリなどの基本的な操作を実行する方法を紹介します。
前提条件
- Rustツールチェイン(rustup)とCargoがインストール済みであること。
- OB Cloudクラウドデータベースのアカウントに登録されており、クラスタインスタンスとMySQL互換モードのテナントが作成されていること。詳細については、クラスタインスタンスの作成およびテナントの作成をご参照ください。
操作手順
- RustとCargoのバージョンを確認する
- 必要な依存関係をインストールする
- OB Cloudクラウドデータベース接続情報を取得する
config.rsファイル内のデータベース接続情報を修正するmain.rsファイルを実行する- 対話型コマンドラインインターフェースで対応する操作を実行する
ステップ1:RustとCargoのバージョンを確認する
ターミナルを開き、以下のコマンドを実行してRustとCargoのバージョンを確認します:
rustc --version
cargo --version
ステップ2:プロジェクトを作成し、必要な依存関係をインストールする
新しいRustプロジェクトを作成します:
cargo new oceanbase_demo cd oceanbase_democargoを使用してmysqlクレートをインストールします:cargo add mysql(オプション)非同期操作を使用する場合は、
mysql_asyncクレートをインストールできます:cargo add mysql_async
ステップ3:OB Cloudクラウドデータベース接続情報を取得する
OB Cloudクラウドデータベースコンソールにログインします。インスタンスリストページで、対象インスタンスの情報を展開し、対象テナントで、接続 > 接続文字列を取得 を選択します。
詳細な操作については、接続文字列の取得をご参照ください。
作成済みのOB Cloudデータベースに基づいて、以下のURLの対応する情報を入力します。
mysql -h$host -P$port -u$user_name -p$password -D$database_nameパラメータ説明:
$host:OB Cloudデータベースの接続アドレスを指定します。例:t********.********.oceanbase.cloud。$port:OB Cloudデータベースの接続ポートを指定します。デフォルトは3306です。$database_name:アクセスするデータベースの名前です。$user_name:データベースにアクセスするアカウントを指定します。$password:アカウントのパスワードを指定します。
ステップ4:main.rsファイル内のデータベース接続情報を修正する
ステップ3の情報に基づいて、main.rs ファイル内のデータベース接続情報を修正します。
oceanbase_demoプロジェクトフォルダに移動します。main.rsファイルにデータベース接続情報を追加または変更します。main.rsに完全なサンプルコードを以下のように追加します:use mysql::*; use mysql::prelude::*; fn main() -> Result<(), Box<dyn std::error::Error>> { const OCEANBASE_CONFIG: &str = "mysql://`$user_name`:`$password`@$host:$port/$database_name?charset=utf8mb4"; // Establish connection println!("Connecting to database..."); let pool = Pool::new(DB_URL)?; let mut conn = pool.get_conn()?; println!("Connected successfully!"); // Create table conn.query_drop( r"CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )" )?; println!("Table created successfully!"); // Insert sample data conn.exec_batch( r"INSERT INTO users (name, email) VALUES (?, ?)", vec![ ("Alice", "alice@example.com"), ("Bob", "bob@example.com"), ("Charlie", "charlie@example.com"), ] )?; println!("Sample data inserted successfully!"); // Query and display the data let selected_users = conn .query_map( "SELECT id, name, email FROM users", |(id, name, email)| { User { id, name, email } } )?; println!("\nCurrent users in database:"); for user in selected_users { println!("ID: {}, Name: {}, Email: {}", user.id, user.name, user.email); } Ok(()) } // Structure to hold user data struct User { id: i32, name: String, email: String, }
ステップ5:main.rsファイルを実行する
oceanbase_demoプロジェクトディレクトリに移動します:cd oceanbase_demo以下のコマンドを実行してプログラムを起動します:
cargo run実行結果は次のとおりです:
Connecting to database... Connected successfully! Table created successfully! Sample data inserted successfully! Current users in database: ID: 1, Name: Alice, Email: alice@example.com ID: 2, Name: Bob, Email: bob@example.com ID: 3, Name: Charlie, Email: charlie@example.com ID: 4, Name: Alice, Email: alice@example.com ID: 5, Name: Bob, Email: bob@example.com ID: 6, Name: Charlie, Email: charlie@example.com
よくある質問
接続エラー:データベースに接続できない場合は、次のことを確認してください:
- データベースのアドレスとポートが正しいかどうか
- ユーザー名とパスワードが正しいかどうか
- ネットワークが正常に接続されているかどうか
権限エラー:権限に関連するエラーが発生した場合は、ユーザーが必要な操作を実行するために十分な権限を持っていることを確認してください。
SQL構文エラー:SQLステートメントに構文エラーがある場合は、SQLステートメントの構文が正しいかどうか確認してください。
データ型エラー:挿入するデータ型がテーブル定義と一致しない場合は、挿入するデータ型が正しいことを確認してください。
パフォーマンス最適化の推奨事項
- 接続プールを使用してデータベース接続を管理します。
- 非同期操作を使用して並行処理のパフォーマンスを向上させます。
- バッチ処理操作を使用してデータ挿入の効率を向上させます。
- データベース接続のタイムアウト時間を適切に設定します。