2010-10-06 61 views
3

我有一個數百萬行的日誌表。我正在考慮將數據分成多個表(即LoginHistory,ExceptionHistroy,PaymentProcessingHistory等)。當用一個有很多行(不是列)的大表來創建多個表時,使用的術語是什麼?具有數百萬行的日誌表。怎麼辦?

我現在的登錄表模式類似:LOGID,的LogMessage,LogReason,LoggedBy,LoggedOn等

是我把太多的事情在一個表中的問題,我覺得呢?也許這張桌子太普通了?

感謝

+3

Jason,爲什麼我不能說在我的問題中謝謝? – Moderator71 2010-10-06 16:26:38

+0

數百萬可能如何? – gbn 2010-10-06 18:28:55

+0

你可以。當我對某個問題進行單獨編輯時,我習慣於將它拉出來,正如按照meta上的這個主題(http://meta.stackexchange.com/questions/2950/should-hi-thanks-and -taglines和 - 問候被移除的從 - 職位)。 – 2010-10-06 19:27:09

回答

3

Sharding是de jour的術語。來自鏈接:

水平分區是一種數據庫設計原則,數據庫表的行是分開保存的,而不是按列分割(就像標準化一樣)。每個分區構成分片的一部分,其可以位於單獨的數據庫服務器或物理位置上。

+0

非常有趣!這可能是解決方案;不過,我覺得我的桌子太普通了?更聰明的想法? – Moderator71 2010-10-06 16:21:03

+0

+1分片的概念對我來說是新的,我知道水平分割的想法,但我不知道「分片」的實際名稱。維基百科條目中有趣的一點是,您應該嘗試以這樣的方式創建碎片:每個碎片都有一個含義或上下文(在文章中,給出的例子是爲美國客戶和其他碎片爲歐洲客戶)。 – 2010-10-06 16:47:27

+0

感謝您澄清Abel。使用分片,我只能從指定的分區中選擇?例如,日誌表的ExceptionHistory分區或LoginHistory分區。 – Moderator71 2010-10-06 17:55:15

2

我想你應該看看水平分區。水平分區或多或少是分片的一個子集。

有關水平分區的詳細信息,這裏的維基百科鏈接:
http://en.wikipedia.org/wiki/Partition_%28database%29

你沒有提到你使用的數據庫技術,但這裏有一些技術環節,可以讓你用分區數據會:

IBM DB2 partitioning
MySQL partitioning
Oracle partitioning
SQL Server partitions
PostgreSQL partitioning
Sybase ASE 15.0 partitioning

+0

我不想將我的表分成多個分區。我實際上正在考慮將一張桌子分成許多桌子。如果我沒有正確表達我的問題,我很抱歉。我想知道當你從一張桌子走到很多桌子時什麼叫做?謝謝 – Moderator71 2010-10-06 17:49:50

+0

僅供參考,我正在使用SQL Server – Moderator71 2010-10-06 18:07:03