我正在开发一个项目,从 Telegram 组中获取消息并将其存储在 PostgreSQL 数据库中以供以后分析,主要是为了解析波斯语/波斯语消息以微调大型语言模型。这些消息是
<class 'telethon.tl.patched.Message'>
的实例。我设计了一个初始架构,其中包括用户、通道(组)和消息的表。我的主要目标是有效存储消息、跟踪对特定消息的回复并捕获反应。
这是我迄今为止提出的架构:
CREATE TABLE Users (
user_id BIGINT PRIMARY KEY,
username VARCHAR(255)
);
CREATE TABLE Channels (
channel_id BIGINT PRIMARY KEY,
channel_name VARCHAR(255)
);
CREATE TABLE Messages (
message_id INTEGER PRIMARY KEY,
channel_id BIGINT,
from_user_id BIGINT,
date TIMESTAMP WITH TIME ZONE,
edit_date TIMESTAMP WITH TIME ZONE,
message_text TEXT,
reply_to_message_id INTEGER,
reactions JSONB,
FOREIGN KEY (channel_id) REFERENCES Channels(channel_id),
FOREIGN KEY (from_user_id) REFERENCES Users(user_id)
);
此模式旨在捕获消息的基本元素,包括它们与用户和渠道的关系以及任何相关的回复或反应。
问题和注意事项:
reply_to_message_id
字段还是引入新的表格或机制?reactions
字段是一种 JSONB 类型,旨在存储对消息的各种反应。考虑到潜在反应分析的需要,JSONB 是这里的最佳选择吗?我正在寻求有关完善此架构的建议,以最适合我的项目的需求,特别是在可扩展性、效率以及执行复杂查询以进行分析的能力方面。
其他想法: