2010-11-22 49 views
1

在閱讀this question和建議的link explaining when is more appropriate to use SQLite vs another DB之後,我仍然不清楚一件簡單的事情,我希望有人能夠澄清它。SQLite將它用於網站,但不適用於客戶端/服務器應用程序?

他們說:

情況下SQLite的效果很好

網站

SQLite的通常會工作 偉大的,因爲低 數據庫引擎中等流量的網站.. 。

...

情況下另一個RDBMS月 更好地工作

客戶端/服務器應用程序 ...

如果你有在網絡上訪問常見 數據庫許多 客戶端程序...

是不是websi也是一個客戶端/服務器應用程序?

我的意思是我不明白,網站正是一個情況我有很多客戶端程序(用戶利用其網絡媒體browsres)通過一個服務器應用程序同時訪問一個共同的DB

只是爲了保持簡單:在一天結束時,是否有可能將這個SQLite用於電子商務網站或在線目錄或CMS網站,每個網頁約1000個產品?

回答

1

SQLite可以允許多個客戶端讀取,但只允許單個客戶端寫入。請參閱:https://www.sqlite.org/faq.html

客戶端/服務器是指多個客戶端同時寫入數據庫時​​,例如多個用戶同時插入和更新信息的訂單輸入,或多個同時編輯的多用戶博客。

在只讀的情況下,網站不是客戶端/服務器,而只是一個具有多個請求的服務器。在很多情況下,網站被大量緩存,數據庫甚至沒有被訪問,甚至很少。

在輕微使用的電子商務網站的情況下,說幾個同步購物者,這可以由SQLite或MySQL支持。某處有一條線,對於高度併發的數據庫,與SQLite相比,性能更好。

請注意,產品/頁面的數量並不是確定MySQL over SQLite的需求的好方法,而是它的併發用戶數量,以及由於等待鎖定而導致其併發行爲經歷緩慢的時間點明確。

1

網站不一定是使用環境中的客戶端服務器應用程序。

我認爲當他們說網站時,他們的意思是說web應用程序會直接管理數據庫。也就是說,數據庫文件將存在於網站中,並且不會通過任何其他方式進行訪問。 (單點訪問,簡單地說)

相比之下,客戶端/服務器應用程序可能有網站訪問數據存儲以及另一個網站,SOAP客戶端甚至智能客戶端。在這種情況下,您有多個客戶端訪問一個數據庫(服務器)。這是網站將成爲(另一個)客戶的地方。


在對比兩者時需要考慮的另一方面是寫入與讀取的百分比是多少。我認爲SQLite會在寫入數量少於讀取數量的情況下快速執行。據我瞭解,SQLite在多寫方案中表現不佳。它旨在用一個(少數幾個)過程來操縱它。

4

用戶的Web瀏覽器不直接訪問數據庫;該Web應用程序。通常,用戶瀏覽每個頁面的請求/響應週期將非常快,通常持續幾分之一秒。

IIRC,SQLite中的一個事務鎖定整個數據庫文件,這意味着如果一個Web應用程序請求需要一個阻塞事務,所有的流量將被有效地序列化。這對於一箇中低流量的網站來說很好,因爲每秒鐘很多請求仍然可以處理。

但是,在客戶端 - 服務器數據庫應用程序中,多個用戶可能需要保持連接打開較長時間,並且可能還需要執行事務。這對於更大的RDBMS系統而言是一個問題,因爲鎖定可以以更細粒度的方式執行。

+0

謝謝!那麼我更新了這個問題(我知道這不是瀏覽器訪問數據庫直接問題),但我明白你在說什麼。很明顯,在線目錄/ CMS /電子商務將有一個控制面板來插入/更新/刪除項目/頁面。那麼如果這樣的控制面板可以由3個瀏覽器同時由2/3個用戶訪問呢?我知道SQLite會鎖定整個數據庫,所以效率不高,但除此之外:我們可以認爲這仍然不是客戶端/服務器應用程序,因爲所有控制面板仍然訪問同一個服務器應用程序,而最後一個是訪問數據庫的唯一一個? – 2010-11-22 19:55:35

+0

...繼續...對不起,我最後的評論有點複雜。當你說:「......多個用戶可能需要將連接打開更長時間」時,你解釋得非常好,我現在只想在這裏聽到你對帶有在線目錄的特定網站案例的看法不超過1000種產品。 – 2010-11-22 20:00:12

-1

我主要只在嵌入式應用程序上使用SQLite。 (iOS,Android)。對於更大,更復雜的網站(比如你的描述),我會使用類似mySQL的東西。

相關問題