2010-08-13 16 views
2

我剛剛提出了以下想法,但我缺乏知識來說明它是否適用於生產應用程序。php:創建自動數據庫分片邏輯?

我們有一個基於PHP/mySQL的Web應用程序,使其變得簡單。數據庫中的表格容易變大 - 容易記錄幾百萬條記錄,因此表格分片可能是一種選擇。

以下是我所夢想的過程工作:

緩存的文件包含了一個與數據庫中的可用表列表。每個表最多包含一百萬行,並且在達到時,在構建新表後重新創建緩存列表。

顯然,在每次寫入表格時檢查行數不是一個好主意,因此可以在設置的時間間隔(如一週或每天)上完成 - 取決於每百萬次數據被創建。

這是處理大量數據並保持索引大小相當低的好方法嗎?

謝謝

+0

我還沒有在年齡與MySQL合作,不過是「幾百萬的記錄」真的要徵稅嗎?聽起來好像你想看看「分區」。我不知道這個功能在mySQL中有多成熟,但你應該看看它。 – 2010-08-13 18:42:07

+2

根據表格(索引,列數等),你應該沒有問題,直到3-5百萬條記錄 – 2010-08-13 18:50:59

+0

@Mitch CI認爲你可能會混淆Windows下4GB的限制與行數。 mysql可以輕鬆升至數千萬行。 – Frankie 2010-08-13 18:57:26

回答

3

如果您計劃提前了巨大的增長(遊戲了病毒,例如)您可依照您之前的步驟,直接進的NoSQL的可能性。

Couchbase /權力鋅加(是我個人的最愛)
Apache Cassandra /權力的Twitter
mongoDB /權力Craiglist上

但你在PHP建立一個網站/ MySQL來「讓它容易」所以不要重新發明輪子上的一個非常大的問題

不要亂用數據。去尋求一個成熟的解決方案包括MySQL。

+0

這篇文章的日期和無效。不要因爲「使用這個解決方案」而陷入困境。 As * Facebook *已經被證明,PHP非常有能力提供出色的性能(尤其是如果你使用HHVM的話)。正如* Pinterest *已經證明的那樣,MySQL非常有能力提供出色的性能。在Pinterest的博客上:「**我們故意遠離MongoDB,Cassandra和Membase等新型技術的自動縮放,因爲它們的成熟度並不是很好(而且它們正以驚人的速度崩潰)**」。不要成爲一個時尚博主,只是做一名建築師的盡職調查。 – 2016-06-16 23:55:50

+0

來自Pinterest博客的另一個引用:「*旁白:我仍然建議初創企業避免使用MySQL,嘗試使用MySQL真的很難,相信我,我有疤痕證明它。儘管他提到了上述解決方案的初期階段,但博客帖子是從2015年8月開始的。他仍然支持MySQL,這句話很好地證明了你不應該跳到更新的技術上。如果你長大了Facebook/Pinterest並需要別的東西,這是一個**很大的問題(並且在那個時候給你最好的祝福,沒有人能告訴你在新水域中該做什麼)。 – 2016-06-16 23:59:23

1

所有的誠實,我不認爲這將是一個好主意。您應該研究可能歸檔舊數據或轉到像MOngo這樣的NoSQL解決方案。

+0

+1我認爲,重新發明輪子和查詢交叉多個表(最終它可以運行在數千張桌子上)從長遠來看將是一個PITA。 – Frankie 2010-08-13 18:50:35

1

指數的表現不表的大小線性降低閱讀。在成爲問題之前,表格必須嚴重大規模。如果您看到性能問題,我會開始執行mysql'explain'並確保您的所有查詢執行的行掃描數量最少。你可能會對實際的瓶頸最終會變得非常驚訝。

所以,基本上,如果你需要的數據,我不會用它去亂搞。另一方面,如果它像會話數據一樣,只需刪除太舊的行。