2013-02-14 159 views
0

在我到達之前,以前的開發人員創建了一個數據庫表,該表保存來自某個Web應用程序的搜索查詢的歷史列表,隨後在加載時加載上次保存的該用戶的搜索在頁面上。基本數據庫設計:保留「歷史記錄」表

問題是,這種搜索功能看到了大量的使用,每次搜索時,新的一行被寫入表中,實際上是無限的(舊的搜索似乎也沒有被清理)。到目前爲止,這個表格中有超過30萬個條目並計數。

我的問題是,這是一個安全的設計嗎?什麼是更好的選擇?我擔心存在這樣的限制,性能和必要性。

+0

這是「基本」?而且,這通常不是關於「歷史表」,而是關於歷史表無限增長。 – 2013-02-14 19:54:09

+0

當您考慮數據庫設計中高級概念的範圍時,是否保留數據庫表中的歷史列表似乎不是一個高級概念,並且還認爲表的創建者和我自己都不是數據庫專家,並希望一些指導開始使用歷史記錄表的概念。你會把它歸類爲「高級數據庫設計」嗎?我不確定我在哪裏指定這將是一個「一般」問題,除非你建議我應該在標題中加入這個問題。 – starmandeluxe 2013-02-14 20:24:27

+0

我只是不會認爲它是「基本」。 「中級」也許,但肯定不是「基本」。 – 2013-02-14 20:26:18

回答

2

這是一個安全的設計嗎?

肯定。由於表格目前已組成,您可以進行查詢並返回過去10個最受歡迎的搜索,以及過去6個月中最受歡迎的10個搜索。

什麼是更好的選擇?

如果您想消除重複項,您可以在搜索查詢文本中添加一個唯一索引。

我擔心存在這樣的限制,性能和必要性。

只有您的組織可以確定必要性。就限制和性能而言,我曾與數據倉庫合作,每天添加200萬行數據倉庫。你沒有說你關心哪個關係數據庫,但是現在大多數數據庫可以處理具有數萬億行的表格。

你能解釋一下爲什麼你認爲這是一個好的設計,不能在「無限」增長的桌子上進行清理?

我們假設有一個無限增長的表的組織原因。舉一個例子,我研究了一個系統,每個查詢,每個添加,更新或刪除都必須記錄下來。我們必須永遠保持這個數據日誌在線。這是法律規定的。

我們只是確保歷史文件具有足夠的磁盤空間。我們從未想過表格可容納的最大行數。關係數據庫是DB2。

+0

我很欣賞有大規模數據倉庫經驗的人的迴應!當然,我的組織會確定這一點,但是我們確實沒有任何能夠了解這些事情的架構師角色。這可以說是一個單一的「流氓」開發者。你能解釋爲什麼你認爲這是一個好的設計,沒有在「無限」增長的桌子上進行清理?總有一天會不會達到限制?順便說一句,DB是SQL Server 2008。 – starmandeluxe 2013-02-14 19:08:02

+0

問:總有一天會達到限制嗎?答:您可能會首先耗盡磁盤空間。除非您的組織從未升級數據庫。 – 2013-02-14 19:35:48