簡體   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