多用户情况下的 sqlite vs .mdb

Posted

技术标签:

【中文标题】多用户情况下的 sqlite vs .mdb【英文标题】:sqlite vs .mdb in a multiuser situation 【发布时间】:2012-03-15 09:01:18 【问题描述】:

mysql/sql server 等相比,我喜欢这 2 个提供的易于部署。

随着用户数量的增长,在多用户环境中,哪个在性能方面具有更好的扩展性并且更不容易损坏?

我使用过 access/jet,但没有使用过 sqlite。

我的访问经验是,它在我使用它的情况下运行良好,小型、有线、LAN,但当网络不稳固时可能会出现损坏问题。此外,它在无线网络上似乎也无法正常工作(至少对我而言)。

【问题讨论】:

【参考方案1】:

您可能想查看 SqLite 的“适当使用”页面here。它列出了在各种场景中使用 sqlite 的优缺点。但是,它应该可以很好地对抗 Access,前提是您不会将它用于来自多个进程的并发访问来自多台机器

MS Access 有许多限制,您可能想查看here,例如最大数据库大小为 2GB,最多 255 个并发用户等。我认为几乎所有情况下,SqLite 的扩展都高于这些限制。

编辑:另一件事:SqLite 不提供密码加密数据库作为标准,而 MS Access 显然提供。不过,SqLite 确实有一个 proprietary extension for encryption,由编写 SqLite 的同一位开发人员提供:

【讨论】:

我真的应该投票赞成这个答案。这里指出的问题是 SQLite 不支持文件共享中的多用户。既然如此,那么这里的问题和比较就没有意义了。在一天结束时,发布者应该要么安装基于服务器的系统,如 MySQL(推荐),要么他们坚持使用基于文件的数据引擎,如 JET。据我所知,你不能在这个庄园中使用 SQLite,所以它不是一个选择,也不能在这里进行比较。 @Nick 感谢提供有用且内容丰富的链接@Albert,您是对的,但给人的印象是,如果写入相对较少,则不应该有明显的问题。我的场景是最多同时有 10 个用户的网络,Jet 可以很好地工作,除非出现网络问题,然后数据库可能会损坏,无线网络也会导致问题。 SQLite 可以处理多个同时读取,但只能处理 1 次写入,并且您不能同时进行读取和写入。 @Albert(续)所以我认为它可能只适用于不繁忙的网络,我想我真正想知道的是它是否不太容易因网络问题和也能够在无线局域网上更好地工作?也许我问错了问题【参考方案2】:

你不是在比较,Access是一个快速的应用程序数据库开发工具,通常使用基于Jet/ACE文件的数据库。 SQLite 是一个基于文件的数据库。您需要说明您打算使用哪个前端来进行适当的比较。访问作为前端供应报告工具等。

鉴于 MS Access 有一条经过测试的向上路径,通过 SQL Server Express 到后端的 SQL Server,我建议 Access 可以更好地扩展。

【讨论】:

我理解其中的区别,我应该只使用 .mdb 和 jet 这两个词。使用 Access 的人最熟悉 Jet,因此使用了 ms-access 标签。我不使用 Jet 数据库引擎和 .mdb 文件本身的访问,但我经常懒惰地将数据库称为 Access,主要是因为更多人听说过它而不是 Jet。【参考方案3】:

为什么选择 Microsoft Access? Microsoft Access 是世界上使用最广泛的桌面数据库系统。 Microsoft Access 是 Microsoft Office 的一部分,因此有一个通用界面以及许多可用的开发人员和支持选项。 您可以使用免费的 Microsoft Access 2007 运行时。 Microsoft Access 比 SQL Server 或 Oracle 便宜得多。 使用合格顾问(例如 RPT Software)的自定义数据库的典型开发时间是几天。使用 .net 等其他工具进行类似开发或构建基于 Web 的系统通常需要数倍的时间。 Microsoft Access 数据库的第三方支持非常普遍。示例:与外部数据库的接口等... 如果您需要一个满足您需求的数据库并且 Microsoft Access 是一个可行的选择,那么它可能是实现目标的最快和最便宜的方法。 为什么不选择 Microsoft Access? 您已确定需要一个基于 Web 的系统。 您有太多并发用户。技术限制是 255 个并发用户,但实际限制是 10 到 80(取决于应用程序的类型)。 您的用户地理分布太远,您不想使用远程控制解决方案来解决此限制。 您在 Macintosh 计算机上有用户(考虑 Filemaker)。 您的数据库太大而无法使用 Microsoft Access。通常,如果您知道某些内容将超过一百万条记录,您可能会陷入这种情况。

来源:http://www.rptsoftware.com/aboutus/microsoft_access_database/

MySQL 主要在 LAMP 环境中与 php 一起使用。 SQL Server 是在Windows 环境下使用的,都是综合性的数据库管理系统。

SQLite 是一个基于文件的数据库系统。主要用于存储会话信息(在 android 的情况下),也用于 GIS 中以 spatialite 的形式。

【讨论】:

以上是关于多用户情况下的 sqlite vs .mdb的主要内容,如果未能解决你的问题,请参考以下文章

Git操作:使用.gitignore来管理VS工程

如何启用对 Access 数据库的多用户访问?

多索引下的Lucene性能优化

Android中Sqlite数据库多线程并发问题

Android:扩展用户的通讯录。性能 ContentProvider vs Sqlite vs 内存中的列表

SQLite中的多线程数据写入[重复]