n8nは、ネイティブAI機能を搭載したワークフロー自動化プラットフォームです。技術チームにはコードによる柔軟性を、そしてノーコードによる迅速さを提供します。400種類以上の連携機能、標準搭載されたAI機能、そしてフェアコードライセンスにより、データとデプロイメントを完全に制御しながら、強力な自動化を構築できます。
この記事では、n8nの強力な機能を活用して、チャットメッセージでOceanBaseデータベースを動作させるワークフローテンプレート「Chat to OceanBase」を構築する方法を紹介します。
前提条件
OceanBaseデータベースのデプロイが完了し、MySQLモードのユーザーテナントが作成されていること。テナント作成の詳細については、テナントの作成を参照してください。
本記事はDockerコンテナプラットフォーム上で行います。Dockerコンテナー環境がセットアップ済みであることを確認してください。
ステップ1:データベース接続情報を取得する
OceanBaseデータベースのデプロイ担当者または管理者に連絡し、対応するデータベース接続文字列を取得します。例:
obclient -h$host -P$port -u$user_name -p$password -D$database_name
パラメータの説明:
$host:OceanBaseデータベースへの接続IPアドレスです。OceanBaseデータベースプロキシ(OceanBase Database Proxy、ODP)経由で接続する場合はODPのアドレスを、直接接続する場合はOBServerノードのIPアドレスを使用します。$port:OceanBaseデータベースの接続ポートです。ODP経由の接続ではデフォルトで2883が使用されますが、ODPのデプロイ時にカスタマイズ可能です。直接接続の場合はデフォルトで2881が使用され、OceanBaseデータベースのデプロイ時にカスタマイズできます。$database_name:アクセスするデータベースの名前です。注意
テナントに接続するユーザーは、データベースに対する
CREATE、INSERT、DROP、およびSELECT権限が付与されていなければなりません。ユーザー権限の詳細については、MySQLモードの権限分類を参照してください。$user_name:テナントへの接続アカウントです。ODP経由で接続する場合の一般的な形式はユーザー名@テナント名#クラスタ名またはクラスタ名:テナント名:ユーザー名。直接接続の場合はユーザー名@テナント名となります。$password:アカウントのパスワードです。
接続文字列の詳細については、OBClientを使用してOceanBaseテナントに接続するを参照してください。
ステップ2:テストテーブルの作成とデータ挿入
ワークフローの構築を始める前に、まずOceanBaseデータベースに書籍情報を格納するためのサンプルテーブルを作成し、サンプルデータをいくつか挿入します。
CREATE TABLE books (
id VARCHAR(255) PRIMARY KEY,
isbn13 VARCHAR(255),
author TEXT,
title VARCHAR(255),
publisher VARCHAR(255),
category TEXT,
pages INT,
price DECIMAL(10,2),
format VARCHAR(50),
rating DECIMAL(3,1),
release_year YEAR
);
INSERT INTO books (
id, isbn13, author, title, publisher, category, pages, price, format, rating, release_year
) VALUES (
'database-internals',
'978-1492040347',
'"Alexander Petrov"',
'Database Internals: A deep-dive into how distributed data systems work',
'O\'Reilly',
'["databases","information systems"]',
350,
47.28,
'paperback',
4.5,
2019
);
INSERT INTO books (
id, isbn13, author, title, publisher, category, pages, price, format, rating, release_year
) VALUES (
'designing-data-intensive-applications',
'978-1449373320',
'"Martin Kleppmann"',
'Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems',
'O\'Reilly',
'["databases"]',
590,
31.06,
'paperback',
4.4,
2017
);
INSERT INTO books (
id, isbn13, author, title, publisher, category, pages, price, format, rating, release_year
) VALUES (
'kafka-the-definitive-guide',
'978-1491936160',
'["Neha Narkhede", "Gwen Shapira", "Todd Palino"]',
'Kafka: The Definitive Guide: Real-time data and stream processing at scale',
'O\'Reilly',
'["databases"]',
297,
37.31,
'paperback',
3.9,
2017
);
INSERT INTO books (
id, isbn13, author, title, publisher, category, pages, price, format, rating, release_year
) VALUES (
'effective-java',
'978-1491936160',
'"Joshua Block"',
'Effective Java',
'Addison-Wesley',
'["programming languages", "java"]',
412,
27.91,
'paperback',
4.2,
2017
);
INSERT INTO books (
id, isbn13, author, title, publisher, category, pages, price, format, rating, release_year
) VALUES (
'daemon',
'978-1847249616',
'"Daniel Suarez"',
'Daemon',
'Quercus',
'["dystopia","novel"]',
448,
12.03,
'paperback',
4.0,
2011
);
INSERT INTO books (
id, isbn13, author, title, publisher, category, pages, price, format, rating, release_year
) VALUES (
'cryptonomicon',
'978-1847249616',
'"Neal Stephenson"',
'Cryptonomicon',
'Avon',
'["thriller", "novel"]',
1152,
6.99,
'paperback',
4.0,
2002
);
INSERT INTO books (
id, isbn13, author, title, publisher, category, pages, price, format, rating, release_year
) VALUES (
'garbage-collection-handbook',
'978-1420082791',
'["Richard Jones", "Antony Hosking", "Eliot Moss"]',
'The Garbage Collection Handbook: The Art of Automatic Memory Management',
'Taylor & Francis',
'["programming algorithms"]',
511,
87.85,
'paperback',
5.0,
2011
);
INSERT INTO books (
id, isbn13, author, title, publisher, category, pages, price, format, rating, release_year
) VALUES (
'radical-candor',
'978-1250258403',
'"Kim Scott"',
'Radical Candor: Be a Kick-Ass Boss Without Losing Your Humanity',
'Macmillan',
'["human resources","management", "new work"]',
404,
7.29,
'paperback',
4.0,
2018
);
ステップ3:ツールをデプロイする
n8nのプライベートデプロイ
n8nは、Node.jsをベースとしたワークフロー自動化プラットフォームで、豊富な連携機能と柔軟な拡張性を備えています。プライベート環境にデプロイすることで、ワークフローの実行環境を詳細に制御し、データのセキュリティとプライバシーを確保できます。このステップでは、Docker環境でn8nをデプロイする方法について説明します。
sudo docker run -d --name n8n -p 5678:5678 -e N8N_SECURE_COOKIE=false n8nio/n8n
Ollamaツールを使用したQwen3モデルのデプロイ
Ollamaは、オープンソースのAIモデルサーバーで、さまざまなAIモデルのデプロイと管理をサポートします。Ollamaを利用すれば、Qwen3モデルをローカル環境に簡単にデプロイし、AI Agentの機能を実装できます。ここでは、まずDocker環境でOllamaをデプロイし、その後Ollamaツールを用いてQwen3モデルをデプロイする手順を説明します。
# Docker環境でOllamaをデプロイ
sudo docker run -d -p 11434:11434 --name ollama ollama/ollama
# Qwen3モデルをデプロイ
sudo docker exec -it ollama sh -c 'ollama run qwen3:latest'
ステップ4:AI Agentワークフローを構築する
n8nは豊富なノードを提供しており、AI Agentワークフローを簡単に構築できます。このステップでは、n8nを使用して「Chat to OceanBase」データベースのワークフローテンプレートを構築する方法を説明します。合計5つのノードを追加する必要があり、具体的な手順は以下の通りです。
トリガーの追加
HTTPリクエストを受け取るために、HTTPトリガーノードを追加します。
AI Agentノードの追加
AI Agentのリクエストを処理するために、AI Agentノードを追加します。
Ollama Chat Modelノードの追加
モデルには無料の選択肢が複数ありますが、この例ではQwen3を使用します。モデルを選択した後、Ollamaアカウントを設定します。
Simple Memoryノードの追加
Simple Memoryノードは短期記憶の役割を果たし、チャット中の直近5回のやり取りを記憶します。
Toolノードの追加
Toolノードは、OceanBaseデータベースのデータベース操作を実行するために使用します。AI agent-toolの下にMySQLツールを追加します。
MySQLツールの設定は以下の通りです:
上図の
編集アイコンをクリックし、MySQLの接続情報を設定します。設定完了後、このウィンドウを閉じます。設定パネルの右上にある
Test stepをクリックして簡単なSQLでデータベース接続をテストするか、直接Back to canvasをクリックしてメイン画面に戻ることもできます。保存をクリックして、ワークフローの構築を完了します。
5つすべてのノードの設定が完了したら、「保存」をクリックしてワークフローの構築を完了させます。これでワークフローのテストを開始できます。
画面表示
構築が完了したワークフローの画面は以下の通りです。