繁体   English   中英

数据库和前端:分析数据的负载平衡

[英]databases and frontend: load balancing for analyzing data

我有一个抓取工具,可以在一天内从不同来源获取新闻文章。

我想在我的页面上显示“过去 30 天(源 X 中)最常用的单词”之类的数据。 现在,我已将文章保存到我的数据库中,其中包含文章发布的时间戳和内容字符串。 使用一些数据集可以正常工作,但我不明白如何平衡负载,前端具有最大的灵活性但没有太多数据可以计算。

我认为您可以运行一个脚本,该脚本从一天中获取所有文章并创建一个包含每个单词及其计数的新表。 我在这里遇到了两点:

1 - 我如何为此创建一个表? 由于每篇文章都有不同的长度和不同的单词集,我需要一个包含与最长文章中的单词数一样多的字段的表格。 我可以说我只会保存前 20 个,但我不太喜欢这个主意。

2 - 如果脚本从一天中获取所有文章并计算 word_counts,我的最小分辨率为 1 天。 所以我将无法进一步区分。 我选择了每天运行的脚本,以减少我需要按需发送到前台的数据。

不要为前 20 个单词中的每一个创建一个包含单独列的表。 请。 我祈求你。 只是不要。

两种可能的方法。

  1. 在您的 DBMS 中使用全文搜索功能。 你没有告诉我们你使用的是哪一个,所以很难更具体。

  2. 预处理:创建一个包含article_idword_numberword列的表。 该表将有大量行,每篇文章中的每个单词都有一个行。 但这没关系。 SQL 数据库用于处理包含简单行的大量表。

表上的唯一键包含两列: article_idword_number 用于搜索的非唯一键应包含wordarticle_idword_number

当您收到传入的文章时,为其分配一个article_id编号。 然后将其分解为单词并将每个单词插入表格中。

当您搜索一个单词时,请执行SELECT article_id FROM words WHERE word=? . 快速地。 并且您可以使用 SQL 集合操作来执行更复杂的搜索。

从存档中删除文章时,删除具有该article_id值的行。

要获得频率,请执行SELECT COUNT(*) frequency, word FROM words GROUP BY word ORDER BY 1 DESC LIMIT 50

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM