過去の会話を使用して応答を生成するチャットボットを作成しています。現在、すべてのデータを保存するためにテキストファイルを使用していますが、ボットの複数のインスタンスが同時に使用できるように、代わりにデータベースを使用したいと考えています。
このデータベースをどのように構成する必要がありますか?
私の最初のアイデアは、のようなメインテーブルを維持することでしたcreate table Sessions (startTime INT,ip INT, botVersion REAL, length INT, tableName TEXT)
。次に、会話ごとに、create table <generated name>(timestamp INT, message TEXT)
その会話中に送受信されたすべてのメッセージを表示します。会話が終わったら、新しいテーブルの名前をに挿入しSessions(tableName)
ます。この方法でプログラムでテーブルを作成しても大丈夫ですか?ほとんどのSQLチュートリアルでは、プログラムの初期化時にテーブルが作成されることが示唆されているように思われるため、私は質問しています。
create table Messages(id INT, message TEXT)
これを行う別の方法は、送受信されたすべてのメッセージを格納する巨大なテーブルを用意することです。Sessions
会話が終わったら、その会話中に使用されたものを含む新しいエントリを追加してid
、特定の会話中に送信されたすべてのメッセージを検索できるようにします。これの利点の1つは、数百または数千のテーブルを用意する必要がないことだと思います。
ボットの各インスタンスが応答を生成する前に数千回の読み取りを行う可能性があるため(1回の書き込みになります)、同時実行性が低いにもかかわらず、SQLiteを使用することを計画しています。それでも、別のリレーショナルデータベースがこのタスクにより適している場合は、コメントしてください。
注:データベースへのチャットログの保存については、SOに関する他の質問がありますが、私は特に、チャットログをどのように構成する必要があるか、および上記のアイデアに関するフィードバックを探しています。