在关系数据库中存储聊天记录

时间:2013-01-21 00:13:25

标签: python sql database sqlite database-design

我正在编写一个聊天机器人,它使用过去的对话来生成其响应。目前我使用文本文件来存储所有数据,但我想使用数据库,以便机器人的多个实例可以同时使用它。

我应该如何构建这个数据库?

我的第一个想法是保留一个像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,以便我可以查找在特定对话期间发送的所有消息。我想这样做的一个好处是我不需要有数百或数千个表。

我计划使用SQLite尽管它的并发性低,因为bot的每个实例在生成响应之前可能会产生数千个读取(这将导致一次写入)。但是,如果另一个关系数据库更适合这项任务,请发表评论。

注意:关于在数据库中存储聊天记录还有其他问题,但我特别关注如何构建和反馈上述想法。

1 个答案:

答案 0 :(得分:1)

不要为每个对话使用不同的表格。而是在单个表格中添加“对话”列。