2016-01-09 213 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服务

  • 等等

我的应用程序会要求用户注册帐户

它您可以通过这个意思到底是什么尚不清楚。如果你的意思是你要求用户注册使用你的应用程序,当你注册堆栈溢出时,这通常意味着服务器上的中央数据库。尽管如此,这并不妨碍您使用本地文件处理某些数据。