Хранение “голосов” в базе данных

Привет, ты можешь использовать регулярное выражение и попробовать этот сценарий. Вы также можете изменить регулярное выражение в соответствии с приведенными ниже примерами проверки:

import re

key_words = [ "one", "two", "three"]
regex  = "|".join(key_words)
log_lines = open("logcat", 'r')
lines = log_lines.readlines()
print filter(lambda x : re.search(regex,x), lines)

log_lines.close()
13
задан Don Jones 5 December 2008 в 01:12
поделиться

4 ответа

Лично, пока Вы имеете в распоряжении хорошие индексы, Вы идете об этом правильным путем. В зависимости от Вашего использования для производительности Вы могли бы постараться не поражать таблицу голосов, храня вторичную информацию количества, но в целом если необходимо отследить, КТО проголосовал за что-то, необходимо сделать это в способе, которым Вы перечислили.

Я не потрудился бы перемещаться в другую базу данных, если Вы ДЕЙСТВИТЕЛЬНО заинтересованы в SQL Server, Вы могли бы создать отдельную группу файлов для содержания его....., но скорее всего не необходимые.

7
ответ дан 1 December 2019 в 21:25
поделиться

Ну, да, но необходимо посмотреть на большее изображение. С миллионом частей СОДЕРЖАНИЯ:

(Размер Содержания)>> (Размер Голосов): где">>" означает "намного больше".

Если у Вас есть миллион частей содержания затем, это могло бы быть терабайтом данных, где, поскольку голоса составляют 400 МБ. Право грандиозного предприятия?

Я также добавил бы, если Вы волнуетесь по поводу масштабируемости, проверяете этот блог:

http://highscalability.com/

11
ответ дан 1 December 2019 в 21:25
поделиться

Если необходимо отследить, голосовал ли пользователь за конкретный объект, и если существуют различные значения голосования (так 1 звезда к 5 звездам, например), то это почти столь компактно, как это добирается.

Не забывайте, что для разумных скоростей доступа, необходимо будет индексировать данные (два индекса, вероятно - один с ContentID как ведущий столбец, один с идентификатором пользователя как ведущий столбец).

Необходимо будет решить, существует ли причина не сохранить таблицу отдельно от других таблиц. То, что это означает, зависит от DBMS, который Вы используете - с Informix, таблица была бы в той же базе данных, но сохраненный в другом dbspace, и Вам можно было бы сохранить индексы в двух других различных dbspaces.

4
ответ дан 1 December 2019 в 21:25
поделиться

Вы, вероятно, также захотите идентификатор автора содержания в таблице для более легкого обнаружения голосующего злоупотребления. (Да, это - по-видимому, избыточная информация. Альтернатива регулярно создает сводную таблицу для наблюдения, кто голосует по кого.)

Если это имеет значение таблица голосования perlmonks похожа на это:

 `vote_id` int(11) NOT NULL default '0',
 `voter_user` int(11) NOT NULL default '0',
 `voted_user` int(11) default NULL,
 `weight` int(11) NOT NULL default '0',
 `votetime` datetime NOT NULL default '0000-00-00 00:00:00',
 `ip` varchar(16) default NULL,
 PRIMARY KEY  (`vote_id`,`voter_user`),
 KEY `voter_user_idx` (`voter_user`,`votetime`),
 KEY `voted_user_idx` (`voted_user`,`votetime`)

(vote_id идентификатор содержания, IP является IP-адресом.)

4
ответ дан 1 December 2019 в 21:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: