我需要一个可以存储网络驱动器的数据库,并且允许多个用户(最多 20 个)在没有任何服务器软件的情况下使用它。

我正在考虑 MS Access 或 Berkeley DB。

您能分享一下您使用文件数据库的经验吗?
你用的是哪一款,有什么问题吗?

有帮助吗?

解决方案

我会建议 SQLite 因为整个数据库存储在单个文件中,并且它可以非常安全地处理多个用户同时访问它。您可以将多个不同的库用于客户端应用程序,并且不需要服务器软件。

优点之一是它非常模仿 SQL 服务器,因此如果您需要从使用数据库文件转换为成熟的 SQL Server,则客户端中的大多数查询都不需要更改。您只需要将数据迁移到新的服务器数据库(例如,如果有程序将 SQLite 数据库转换为 MySQL 数据库,我不会感到惊讶。)

其他提示

我真的不认为基于文件的数据库可以扩展到超过六个用户。上次我有一个 Access 数据库(诚然,这是很久以前的事了),我必须非常努力地工作才能让它为 8-9 个人工作。

在装有 PostgreSQL 或 MySQL 的旧垃圾计算机上安装 Ubuntu 确实要容易得多。即使我保留 Access 前端,这也是我必须做的事情。

小心任何基于文件的数据库,它们都可能有相同的问题。您的情况确实需要客户端/服务器解决方案。

来自 SQLite 常见问题解答

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

http://www.sqlite.org/whentouse.html

访问可能是个婊子。我曾经处于这样的境地:我不得不到处告诉 20-50 个人关闭访问权限,这样我就可以进入“设计模式”来更改表单甚至专栏的设计。一点乐趣都没有。(旧的访问,这可能只是一个糟糕的设置)

阿延德 最近正在尝试做出类似的决定,并尝试了一堆所谓的嵌入式数据库。希望他的 观察 可以帮你。

我已经在各种情况下使用 Access 一段时间了,包括在线情况。我发现,如果按照以下要求正确设置,Access 可以很好地工作 指导方针. 。Access 的优点之一是它将所有内容都包含在一个包中:表单、查询构建、报告、数据库管理和 VBA。此外,它还可以与所有其他 Office 应用程序配合良好。Access 2007 运行时可以从以下位置免费获取 这里, ,这使得分销成本更低。Access 当然不适合大型操作,但它应该非常适合二十个用户。编辑: 微软 并发用户数为 255。

Access 能否设置为支持 10-20 个用户?是的。然而,它以及所有基于文件的数据库都使用文件系统进行锁定和并发控制。而且,Access 数据文件比数据库服务器更容易受到数据库损坏的影响。而且,虽然您可以为此进行设置,但正如 David Fenton 上面提到的,如果您想最终获得可靠的系统,则必须遵循最佳实践。

就我个人而言,我发现,考虑到您需要跳过以确保 Access 解决方案相当无故障的困难,实现 MSDE/SQL Server Express 或 postgreSql 实例的麻烦要少得多。

Berkeley DB 支持高度并发(远远超过 20),但它主要通过利用共享内存和互斥体(甚至可能是复制)来实现这一点 - 当 BDB 部署为 存储在网络驱动器上的文件.

为了利用 DBD 并发功能,您必须围绕它构建一个应用程序。

最初的问题对我来说毫无意义,因为这些选项不属于一起。BerkeleyDB 只是一个数据库引擎,而 Access 是一个应用程序开发工具,附带默认的基于文件(即非服务器)数据库引擎 (Jet)。通过将 Access 与伯克利放在一起,显然需要的是 仅有的 一个数据库引擎,根本没有应用程序,但是最终用户如何在没有前端的情况下使用 Berkeley DB,我不知道(我只从命令行使用过它)。

那些无法同时运行 20 个用户的 Jet MDB 的人根本没有能力提供有关使用 Jet 作为数据存储的建议。只要遵循最佳实践,这是完全可行的。除了 Microsoft 的最佳实践网页之外,我还推荐 托尼·托斯的最佳实践, , 和 托尼腐败常见问题解答 (即为了拥有稳定的应用程序而需要避免做的事情)。

我强烈怀疑最初的提问者没有构建前端应用程序,但由于他没有指出涉及哪种前端,所以很难推荐与之配套的后端。Access 的优点是可以为您提供等式的两个部分,并且如果使用得当,对于多个用户来说是完全可靠的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top