Вопрос: чат: сохранение непосредственно в базе данных или текстовом файле?
Ответ: Если все, что у вас есть, это произвольный текст чата, текстовый файл, вероятно, идеально подходит.
Обоснование: Какой возможный SQL-запрос вы бы использовали для этих данных?
В лучшем случае вы можете использовать что-то вроде grep
для сканирования файла.
Зачем беспокоиться о базе данных, если у вас нет действительно сложных данных с множеством интересных атрибутов?
Пример:
select username,count(*) as most_active_users from chatroomxxx group by username limit 0,10;
Python:
user_fq = collections.defaultdict( int )
for path, dirs, files in os.walk( 'path/to/chat/logs' ):
for fn in files:
with open( os.path.join( path, fn ), "r" ) as source:
for line in source:
user, timestamp, text = line.split('\t')
user_fq[user] += 1
fq_user = collections.defaultdict( list )
for user, fq in user_fq.items():
fq_user[fq].append( user )
top = []
for fq in sorted( fq_user, reverse=True ):
top.extend( fq_user[fq] )
if len(top) > 10: break
Дело не в том, что Python столь же лаконичен, как SQL. Дело в том, что запрос является относительно простым сбором данных из текстовых файлов.
И простой сбор данных из текстовых файлов БЫСТРО. Гораздо быстрее, чем база данных. И с практически нулевыми накладными расходами.
Просто напишите строки в файлы. Сканируйте файлы с помощью простых скриптов. Нет накладных расходов.