20

我不知道这是多么权威,但我发现了这个:

http://www.sqlite.org/cvstrac/wiki?p=PerformanceConsiderations

而且与sqlite有很多联系似乎并不好。这似乎对 Web 和大多数拥有多个用户的应用程序不利。当您不需要那么多连接时,我很难考虑使用什么 sqlite。我能想到的每个程序都需要用户,有时会有很多用户,那么我会使用数据库来做什么,而不允许那么多连接呢?我考虑过原型,但是当我可以连接到更大的数据库时,为什么还要使用它呢?嵌入式应用程序可能吗?

谢谢你。

编辑:谢谢大家。我查看了下面推荐的页面,但对某些事情感到困惑:

在 sqlite 的适当用途下,它具有:

SQLite 运行良好的情况

•网站

SQLite 通常可以很好地作为中低流量网站(也就是说,所有网站的 99.9%)的数据库引擎。当然,SQLite 可以处理的网络流量取决于网站使用其数据库的程度。一般来说,任何每天点击量少于 100K 的网站都可以使用 SQLite。10 万次点击/天的数字是保守估计,而不是硬性上限。SQLite 已被证明可以处理 10 倍的流量。

另一个 RDBMS 可能工作得更好的情况

•客户端/服务器应用程序

如果您有许多客户端程序通过网络访问公共数据库,则应考虑使用客户端/服务器数据库引擎而不是 SQLite。SQLite 将在网络文件系统上工作,但由于与大多数网络文件系统相关的延迟,性能不会很好。此外,许多网络文件系统实现的文件锁定逻辑包含错误(在 Unix 和 Windows 上)。如果文件锁定不能正常工作,则可能有两个或多个客户端程序同时修改同一数据库的同一部分,从而导致数据库损坏。因为这个问题是由底层文件系统实现中的错误引起的,所以 SQLite 无法阻止它。

一个好的经验法则是,在通过网络文件系统从多台计算机同时访问同一个数据库的情况下,您应该避免使用 SQLite。

问题:

我将在这里展示我的无知,但这两者有什么区别?

4

9 回答 9

34

这适用于您无法访问“真实”数据库但仍需要关系数据库功能的情况。例如,Firefox 在 SQLite 数据库中存储了一堆关于您的设置/历史/等的信息。你不能指望每个运行 firefox 的人都在他们的机器上安装 MySQL 或 postgre。

它还完全有能力运行相对较低流量、阅读量大的网站。它的整体性能非常好,超过了大多数网站对其流量水平的需求。

于 2009-04-02T18:39:54.027 回答
33

sqlite本身很好地回答了这个问题:适当使用sqlite

Another way to look at SQLite is this: 
SQLite is not designed to replace Oracle. It is designed to replace fopen().
于 2009-04-02T18:44:49.553 回答
9

我还发现,使用 SQLite 可以非常快速地将原型应用程序组合在一起,而无需使用单独的数据库服务器或使用 MySQL/Oracle/Whatever 实例使开发环境陷入困境。

如果需要,还可以轻松获取数据库并将其移动到不同的机器上。

于 2009-04-02T18:47:32.527 回答
8

它通常用于嵌入式应用程序。

当您无法访问数据库服务时,使用像存储这样的数据库会非常方便。因此使用 SQLite,因为它只是您存储在某处的文件。

于 2009-04-02T18:39:45.697 回答
4

iPhone 将其用于通话记录、SMS 消息、联系人和其他类型的数据。就像 Ólafur Waage 所说,它非常适合移动设备上的嵌入式应用程序,因为它是轻量级的。我也在独立应用程序中使用过它。易于使用,可在大多数平台上使用。

于 2009-04-02T18:45:04.047 回答
3

想想可以使用数据库的简单客户端或桌面应用程序,比如一个糟糕的例子,一个地址簿。sqlite 不是将 mysql 或 postgre 之类的大型数据库引擎与您的可交付成果捆绑在一起,而是非常轻量级且易于包含在您的成品应用程序中。

于 2009-04-02T18:45:22.953 回答
3

这个FLOSS Weekly 播客集与 SQLite 的创建者进行了交谈,并涵盖了您将使用它的类型。从手机文件系统到小型网站,应有尽有。

于 2009-04-02T22:43:17.483 回答
2

用最简单的术语来说,SQLite 是一个提供关系数据库管理系统或 RDBMS 的公共域软件包。关系数据库系统用于在大表中存储用户定义的记录。除了数据存储和管理之外,数据库引擎还可以处理复杂的查询命令,这些命令可以组合来自多个表的数据以生成报告和数据摘要。其他流行的 RDBMS 产品包括商业方面的 Oracle 数据库、IBM 的 DB2 和 Microsoft 的 SQL Server,而 MySQL 和 PostgreSQL 是流行的开源产品。SQLite 中的“Lite”并不是指它的功能。相反,在设置复杂性、管理开销和资源使用方面,SQLite 是轻量级的。

有关 SQLite 的详细信息和解决方案,请访问以下链接:

http://blog.developeronhire.com/what-is-sqlite-sqlite/

谢谢你。

于 2011-01-16T11:42:18.043 回答
0

上面两个答案说的是什么。稍微扩展 Chad Birch 的回答,它对 SQLite 数据库的调用,以及导致 FF3 在 linux 中如此缓慢的 sync() 实现相当糟糕。

于 2009-04-02T18:42:04.803 回答