2016-01-09 210 views
0

我是新開發Android應用程序,我正在決定是否使用SQLite或MySQL作爲我的應用程序。對SQLite和MySQL仍然感到困惑

我仍然對SQLite是什麼以及它是如何工作感到困惑。請原諒我的noob問題。

據我瞭解,SQLite是本地存儲和無服務器。我的應用程序將需要用戶帳戶註冊,所以我不確定這是否可能與SQLite。我的意思是,如何使用SQLite在本地存儲用戶帳戶信息?假設我有3個用戶註冊,每個用戶是否只在他們的手機上存儲他們的用戶名和密碼?那麼每個用戶在他們的本地數據庫中看到「username」和「password」的不同值?由於沒有集中的數據庫,這是否意味着我作爲開發人員無法訪問任何用戶的信息,因爲所有信息都存儲在用戶手機上而不是服務器上?爲什麼SQLite甚至有用呢?

+0

SQL是一種由ANSI標準定義的語言,主要用於關係數據庫系統中的一大堆方言。 SQLite是支持SQL方言的數據庫之一。 –

+0

對不起!我的意思是MySQL的DBMS不是SQL oops – user2973438

+1

他們是兩個不同的數據庫,各有優缺點。如果您需要推薦,請在http://softwarerecs.stackexchange.com/上發佈問題。 –

回答

1

您的使用案例將決定您要使用哪個數據庫。 SQLite用作設備上的數據存儲,而MySQL將與某種爲您的Android應用程序構建的Web API結合使用。

如果您的Android應用程序需要在設備之間對用戶進行身份驗證,並且可能是基於Web的應用程序,那麼使用Web服務器的MySQL就是您要查找的內容。

如果您的Android應用程序只具有設備和應用程序本地的用戶角色,那麼SQLite將爲您提供服務。

3

爲什麼SQLite甚至有用呢?

計算機一直使用本地文件。

例如,您可能使用Web瀏覽器訪問此網站並提出您的問題。該程序在本地存儲大量信息:Cookie,緩存數據,瀏覽歷史記錄等。計算機上的許多其他程序在本地存儲文件。

文件以某種結構組織它們的數據。 XML,JSON,CSV,Markdown(即用於堆棧溢出問題和答案的wiki文本語言)以及其他無數文件格式。程序員通常使用庫來幫助處理這些文件,讀取和/或寫入XML,JSON,CSV,Markdown等。

SQLite就是這樣一個庫,用於處理關係數據(行和列的表)在一個SQLite數據庫文件中。事實上,如果你碰巧使用Firefox作爲你的Web瀏覽器,它將使用(或者用於使用SQLite)來處理各種信息。 Many other programs也使用SQLite;它可能是世界上最流行的嵌入式數據庫。

移動設備,就像他們全面的計算機同仁一樣,都在使用本地文件。看看我的個人Android手機上的第三方應用程序,我希望至少有一半的人使用SQLite。

特別是請注意,互聯網並不是無處不在。雖然你可能生活在一個地區,並且有足夠的財務資源,但如果你覺得你可以百分之百地接入互聯網,那麼不是每個人都適合你。有些人有斷斷續續的互聯網訪問,在這種情況下,有一些本地存儲的數據將是重要的。

由於沒有集中的數據庫,這是否意味着我作爲開發商沒有獲得任何的用戶手機,因爲所有的信息是在用戶本地存儲,而不是在服務器上?

您無法直接訪問該數據。不過,歡迎您:

  • 讀數據從一個Web服務,並用它來填充數據庫

  • 從數據庫將數據發送到Web服務作爲週期同步的一部分

  • 使用數據庫僅作爲一個本地緩存(脫機使用),而你的「記錄系統」是一個Web服務

  • 等等

我的應用程序會要求用戶註冊帳戶

它您可以通過這個意思到底是什麼尚不清楚。如果你的意思是你要求用戶註冊使用你的應用程序,當你註冊堆棧溢出時,這通常意味着服務器上的中央數據庫。儘管如此,這並不妨礙您使用本地文件處理某些數據。