2010-11-12 17 views
1

使用SQLite作爲一個網站的數據庫後端是否可行?比方說,每月有300,000個獨立訪問者?SQLite或MySQL的讀大多數網站?

寫入數據庫將非常有限 - 用戶註冊或登錄,添加註釋等。絕大多數使用只是基於URL中的主鍵獲取內容的查詢。我想知道SQLite是否可以作爲網站後端應對,並且不會因爲MySQL而顯着變慢。

我見過this SO question和其他人,但他們不是真的一樣,看起來他們現在也可能過時了。 http://www.sqlite.org/whentouse.html暗示它會很好,但他們可能有點偏頗!

回答

1

SQLite是一款非常酷的產品,並且隨着HTML5的發展,任何Web開發人員都可以熟悉它。但是你應該記住,sqlite不能很好地擴展。如果您需要跨多個網絡服務器共享數據,那麼使用sqlite作爲數據基底很難實現,因此很難。但是爲了簡化開發,您可以在PHP中查看PDO/dbx_,它提供了一個抽象層(即相同的代碼與各種數據庫進行交談),但是不同系統實現事務的方式之間存在一些細微差異 - 以及SQL的變體 - 如果你真的走這條路線,我建議在PHP PDO/DBX調用和你的應用程序之間維護你自己的抽象層 - 認爲存儲過程是用PHP實現的。

每月有300,000獨特訪客?

aaaarrrgghhhh!寵物討厭。雖然您需要考慮您的網站爲制定預算需要花多少錢,但這不是容量規劃的有用指標。真的,你想看看預期的命中/頁率。

+0

感謝大家的回答。 – mikel 2010-11-14 10:51:14

0

sqlite非常快,但一旦需要羣集就會變得很難使用。但是,一旦需要羣集,幾乎所有的數據庫都很困難。如果你是以閱讀爲導向的,那麼你使用的並不重要。只要確保你使用的是memcached。

+0

-1:「只要確保你使用的是memcached」 - 爲什麼? (-1用於提供不支持的斷言 - 不是斷言非常可疑(事實是)的事實) – symcbean 2010-11-12 10:07:58

+1

memcached是一個通用緩存服務器。如果您的應用程序使用它,那麼這意味着您可以減少數據庫的負載。 – 2010-11-12 10:14:31

+0

好的 - 這證明了你的斷言 - 但是你交易代碼的複雜性與潛在收益相比,在我的經驗中,它非常小 - 實際上往往微不足道(對於像MySQL這樣的實現結果集緩存的DBMS來說更是如此)。儘管sqlite沒有共享結果集緩存,但現代操作系統花費了大量的時間和精力來儘量減少磁盤訪問,但確保事務完整性和在您自己的PHP代碼中緩存一致性的想法有點奇怪。 – symcbean 2010-11-12 10:24:49

1

我認爲你會沒事的。 Sqlite能夠很好地支持多線程,而且你大部分都是從中讀取數據,所以不會有問題。另外,如果你正在寫信給它,它也完全支持交易。你必須記住,它仍然只是一個文件,並沒有服務 - 所以如果你要集羣它,你會運氣不好。也許你應該檢查一下你使用mysql時遇到的問題並解決它們。