我需要一个可以存储网络驱动器的数据库,并允许多个用户(最多20个)在没有任何服务器软件的情况下使用它。
我正在考虑MS Access或Berkeley DB。
您能与文件数据库分享经验吗?
你使用了哪一个,你有任何问题吗?
答案 0 :(得分:6)
我真的不认为基于文件的数据库可以扩展到过去的六个用户。我最后一次拥有一个Access数据库(不可否认这是很久以前)我必须努力工作才能让8-9人工作。
在使用PostgreSQL或MySQL的旧垃圾计算机上安装Ubuntu要容易得多。即使我保持Access前端,这也是我必须要做的事情。
答案 1 :(得分:5)
我建议SQLite,因为整个数据库存储在一个文件中,它可以非常安全地处理同时访问它的多个用户。您可以将多个不同的库用于客户端应用程序,并且不需要服务器软件。
其中一个优点是它非常模仿SQL服务器,如果您需要从使用数据库文件转换为完整的SQL Server,您的客户端中的大多数查询都不需要更改。您只需要将数据迁移到新的服务器数据库(例如,如果有将SQLite数据库转换为MySQL数据库的程序,我不会感到惊讶。)
答案 2 :(得分:5)
请注意任何基于文件的数据库,它们都可能存在同样的问题。您的情况确实需要客户端/服务器解决方案。
来自SQLite FAQ
一个好的经验法则是你 应该避免使用SQLite 数据库相同的情况 将同时访问 网络上的许多计算机 文件系统。
答案 3 :(得分:2)
访问可能是一个婊子。我一直处于这样一个位置,我不得不四处走动,告诉20-50人关闭访问,这样我就可以进入“设计模式”来改变表格的设计,也许是一个专栏。没什么好玩的。 (旧访问,它可能只是一个糟糕的设置)
答案 4 :(得分:2)
Ayende最近试图做出类似的决定,并尝试了一堆所谓的嵌入式数据库。希望他的observations可以帮到你。
答案 5 :(得分:1)
我一直在使用Access一段时间以及各种情况,包括在线。我发现如果根据guidelines正确设置Access,Access可以正常工作。 Access的一个优点是它包含一个包中的所有内容:表单,查询构建,报告,数据库管理和VBA。此外,它适用于所有其他Office应用程序。 Access 2007运行时可以从here免费获得,这使得分发更便宜。访问肯定不适合大型操作,但它应该非常适合20个用户。编辑:Microsoft将并发用户数设置为255。
答案 6 :(得分:1)
原始问题对我没有意义,因为这些选项不属于一个选项。 BerkeleyDB仅是一个数据库引擎,而Access是一个应用程序开发工具,它附带一个默认的基于文件的(即非服务器)数据库引擎(Jet)。通过将Access与Berkeley放在一起,显然所需要的只是仅数据库引擎,根本没有应用程序,但最终用户如何使用没有前端的Berkeley DB,我不知道知道(我只是从命令行使用它。)
那些无法同时使用20个用户运行Jet MDB的用户根本无法提供使用Jet作为数据存储的建议。只要遵循最佳实践,它就完全可行。我建议除了Microsoft的最佳实践网页Tony Toews's Best Practices和Tony's Corruption FAQ之外(即,为了获得稳定的应用程序,您希望避免这样做)。
我强烈怀疑原始提问者没有构建任何前端应用程序,但由于他没有指出涉及哪种前端,因此很难推荐一个跟随它的后端。 Access的优势在于为您提供了等式的两个部分,如果使用得当,对于多个用户来说是完全可靠的。
答案 7 :(得分:1)
可以设置Access以支持10-20个用户吗?是。但是,它以及所有基于文件的数据库都使用文件系统进行锁定和并发控制。而且,Access数据文件比数据库服务器更容易受到数据库损坏的影响。而且,虽然你可以为此设置它,但正如大卫芬顿提到的那样,你必须遵循最佳实践,如果你想要一个可靠的系统。
就个人而言,我发现,鉴于您需要跳过以确保Access解决方案相当无故障的箍,实现MSDE / SQL Server Express或postgreSql的实例要少得多。
答案 8 :(得分:1)
Berkeley DB支持高度并发(远远超过20),但它主要通过利用共享内存和互斥(甚至可能是复制)来实现这一点 - 当BDB部署为{{3 }}
为了利用DBD并发功能,您必须围绕它构建应用程序。