我开发了一个网络应用程序,在过去的几年里一直在我的公司使用。一开始,它管理有关用户、权限等的信息。随着时间的推移,它随着其他功能的增长而增长。它已经发展到我有表的程度,比如说有10-20列,甚至20,000 - 40,000条记录。
我一直听说访问不适合多用户环境。第二件事是,当我试图通过网络从表中读取一些记录时,整个表都必须被拉到客户端。这是因为服务器端没有数据库引擎,而数据过滤是在客户端完成的。
我会将这个项目迁移到SQL Server上,但不幸的是,在这种情况下不能这样做。
我想知道是否有比使用Access数据库并仍然使用单文件数据库系统更可靠的解决方案。
我们有一个使用dBase IV的相当大的系统,据我所知它是一个完全的多用户数据库系统。
也许用它来代替Access会更好呢?让我不确定的是,dBase IV比Access 2000早得多。我不确定这是否是一个好的解决方案。
也许还有其他选择?
发布于 2009-08-15 02:49:47
如果您的Jet/ACE后端遇到了您提到的记录数量方面的问题,这听起来像是您遇到了模式设计问题或结构低效的应用程序。
正如我在对您的原始问题的评论中所说的,Jet不会检索完整的表。这是一个由不知道自己在说什么的人散布的神话。如果您有适当的索引,将只从文件服务器请求索引页(然后,只请求满足您的条件所需的那些页),然后检索到的唯一数据页将是那些具有与您的请求中的条件匹配的记录的数据页。
因此,如果您看到的是全表扫描,则应该查看索引。
你没有提到你的用户群。如果超过25,您可能会受益于扩展您的后端,特别是如果您已经熟悉SQL Server。
但是,您为这样的小型表描述的问题表明在您的模式或应用程序中的某个地方存在设计错误。
FWIW,我已经有过带有Jet后端的Access应用程序,在多个表中有100个数以千计的记录,由十几个同时添加和更新记录的用户使用,检索单个记录和小数据集的响应时间几乎是瞬间的(除了一些复杂的操作,如检查新输入的记录与现有数据的重复--这比较慢,因为它使用了大量的like比较和表达式求值进行比较)。您现在所经历的,虽然不是Access前端,但与我长期使用各种规模的Jet数据库的经验并不相称。
发布于 2009-08-14 22:38:02
您可能希望阅读有关Access的信息性帖子:Is MS Access (JET) suitable for multiuser access?
发布于 2009-08-15 13:23:54
为了记录,这个答案是从我回答的another question中复制/编辑的。
阿瑞斯特,
您可以将Access用作集中式数据存储。
在多用户场景中访问将阻塞是不正确的--至少多达15-20个用户。
确实,您需要一个好的备份策略来处理Access数据文件。但据我所知,您还需要一个好的SQL Server备份策略。(有一个非常重要的警告,即SQL Server可以执行“热”备份,但不能进行访问。)
So...you可以将access用作数据存储。然后,如果您能够超越控制您的网络的公司政治,也许您就可以开始将您当前的应用程序升级为使用SQL Server。
我最近回答了另一个关于如何将数据库拆分为两个文件的问题。这是链接。Creating the Front End MDE
将数据库文件拆分到前端:后端是使其性能更高的关键。(正如David Fenton提到的,假设您有一个相当好的设计。)
如果我可以提到最后一个,thing...it是可笑的,你的公司不给你其他的部署选择。当然,有一些人可以让你“想象没有你的应用程序的生活”。我只是想知道你有没有比你想象的更强大的力量。
赛斯
https://stackoverflow.com/questions/1280475
复制相似问题